7e020d0dc8d0ec41231ebf0ba919f9c1f1ea3bce
[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   template<class dtype>
67     group GroupChunkMeshStreamer : GroupMeshStreamer<ChunkDataItem> {
68     entry GroupChunkMeshStreamer(
69           int maxNumDataItemsBuffered, int numDimensions, 
70           int dimensionSizes[numDimensions], 
71           const CProxy_MeshStreamerGroupClient<dtype> &clientProxy,
72           bool yieldFlag = 0, double progressPeriodInMs = -1.0);
73
74     entry GroupChunkMeshStreamer(
75           int numDimensions, int dimensionSizes[numDimensions], 
76           const CProxy_MeshStreamerGroupClient<dtype> &clientProxy,
77           int bufferSize, bool yieldFlag = 0, 
78           double progressPeriodInMs = -1.0);
79
80   };
81
82 };
83