991ce535ec7c2e43b25c258ccde1cc546b23e3ee
[charm.git] / src / libs / ck-libs / NDMeshStreamer / NDMeshStreamer.ci
1 module NDMeshStreamer {
2   extern module completion;
3
4   include "DataItemTypes.h";
5
6   template<class dtype> 
7   message MeshStreamerMessage {
8     int destinationPes[];
9     dtype dataItems[]; 
10   };
11
12   template<class dtype> group MeshStreamerGroupClient {};
13
14   template<class dtype> array [Max] MeshStreamerArrayClient {
15     entry void receiveRedeliveredItem(dtype data);
16   };
17
18   template<class dtype> 
19   group MeshStreamer {
20     entry void receiveAlongRoute(MeshStreamerMessage<dtype> *msg);
21     entry void flushIfIdle();
22     entry void finish();
23     entry void init(int numLocalContributors, CkCallback startCb, 
24                     CkCallback endCb, int prio, 
25                     bool usePeriodicFlushing);
26
27     entry void init(int numContributors, CkCallback startCb, 
28                     CkCallback endCb, CProxy_CompletionDetector detector,
29                     int prio, bool usePeriodicFlushing);   
30     entry void init(CkArrayID senderArrayID, CkCallback startCb, 
31                     CkCallback endCb, int prio, 
32                     bool usePeriodicFlushing); 
33
34     entry void receiveAtDestination(MeshStreamerMessage<dtype> *msg);
35   };
36
37   template<class dtype>
38   group GroupMeshStreamer : MeshStreamer<dtype> {
39     entry GroupMeshStreamer(
40           int maxNumDataItemsBuffered, int numDimensions, 
41           int dimensionSizes[numDimensions], 
42           const CProxy_MeshStreamerGroupClient<dtype> &clientProxy,
43           bool yieldFlag = 0, double progressPeriodInMs = -1.0);
44
45     entry GroupMeshStreamer(
46           int numDimensions, int dimensionSizes[numDimensions], 
47           const CProxy_MeshStreamerGroupClient<dtype> &clientProxy,
48           int bufferSize, bool yieldFlag = 0, 
49           double progressPeriodInMs = -1.0);
50   };
51
52   template<class dtype, class itype>
53     group ArrayMeshStreamer : MeshStreamer<ArrayDataItem<dtype, itype> > {
54     entry ArrayMeshStreamer(
55           int maxNumDataItemsBuffered, int numDimensions, 
56           int dimensionSizes[numDimensions],
57           const CProxy_MeshStreamerArrayClient<dtype> &clientProxy,
58           bool yieldFlag = 0, double progressPeriodInMs = -1.0);
59     entry ArrayMeshStreamer(
60           int numDimensions, int dimensionSizes[numDimensions],
61           const CProxy_MeshStreamerArrayClient<dtype> &clientProxy,
62           int bufferSize, bool yieldFlag = 0, 
63           double progressPeriodInMs = -1.0);
64   };
65
66 };
67