Several new changes
[charm.git] / src / ck-com / RingMulticastStrategy.h
1 #ifndef RING_MULTICAST_STRATEGY
2 #define RING_MULTICAST_STRATEGY
3
4 #include "DirectMulticastStrategy.h"
5
6
7 class RingMulticastStrategy: public DirectMulticastStrategy {
8     
9  protected:
10     
11     int isEndOfRing(int next_pe, int src_pe);
12     
13     //Defining the two entries of the section multicast interface
14     virtual ComlibSectionHashObject *createObjectOnSrcPe(int nelements, 
15                                                          CkArrayIndexMax *elements);
16
17     virtual ComlibSectionHashObject *createObjectOnIntermediatePe
18         (int nelements, CkArrayIndexMax *elements, int src_pe);
19     
20  public:
21     
22     //Array constructor
23     RingMulticastStrategy(CkArrayID dest_id);    
24     RingMulticastStrategy(CkMigrateMessage *m) : DirectMulticastStrategy(m){}
25
26     //Destructor
27     ~RingMulticastStrategy() {}
28     
29     void pup(PUP::er &p);    
30     void beginProcessing(int nelements);
31     
32     PUPable_decl(RingMulticastStrategy);
33 };
34
35 #endif
36