NDMeshStreamer: checking in a working version of the array interface
[charm.git] / src / libs / ck-libs / NDMeshStreamer / NDMeshStreamer.ci
1 module NDMeshStreamer {
2
3   include "DataItemTypes.h";
4
5   template<class dtype> 
6   message MeshStreamerMessage {
7     int destinationPes[];
8     dtype data[]; 
9   };
10
11   template<class dtype> group MeshStreamerGroupClient {
12     entry void receiveCombinedData(MeshStreamerMessage<dtype> *msg);
13   };
14
15   template<class dtype> array [1D] MeshStreamerArrayClient {
16     // entry void receiveCombinedData(MeshStreamerMessage<dtype> *msg);
17     entry void process(dtype &data);
18   };
19
20   template<class dtype> 
21   group MeshStreamer {
22     entry void receiveAlongRoute(MeshStreamerMessage<dtype> *msg);
23     entry void flushDirect();
24     entry void finish(CkReductionMsg *msg);
25   };
26
27   template<class dtype>
28   group GroupMeshStreamer : MeshStreamer<dtype> {
29     entry GroupMeshStreamer(
30           int totalBufferCapacity, int numDimensions, 
31           int dimensionSizes[numDimensions], 
32           const CProxy_MeshStreamerGroupClient<dtype> &clientProxy,
33           int yieldFlag = 0, double progressPeriodInMs = -1.0);
34   };
35
36
37   template<class dtype>
38     group ArrayMeshStreamer : MeshStreamer<ArrayDataItem<dtype> > {
39     entry ArrayMeshStreamer(
40           int totalBufferCapacity, int numDimensions, 
41           int dimensionSizes[numDimensions],
42           const CProxy_MeshStreamerArrayClient<dtype> &clientProxy,
43           int yieldFlag = 0, double progressPeriodInMs = -1.0);
44
45     entry void receiveArrayData(
46                MeshStreamerMessage<ArrayDataItem<dtype> > *msg); 
47   };
48
49 };
50