little change to the interface
[charm.git] / src / ck-com / PipeBroadcastStrategy.h
1 #ifndef PIPE_BROADCAST_STRATEGY
2 #define PIPE_BROADCAST_STRATEGY
3 #include "ComlibManager.h"
4 #include "pipebroadcastconverse.h"
5
6 class PipeBroadcastStrategy : public CharmStrategy {
7  protected:
8
9   int propagateHandle;
10   CkQ <CharmMessageHolder*> *messageBuf;
11   CkVec<CkArrayIndexMax> *localDest;
12
13   void commonInit(int _top, int _pipe);
14
15  public:
16   PipeBroadcastStrategy(int _topology=USE_HYPERCUBE, int _pipeSize=DEFAULT_PIPE);
17   PipeBroadcastStrategy(int _topology, CkArrayID _aid, int _pipeSize=DEFAULT_PIPE);
18   PipeBroadcastStrategy(CkGroupID _gid, int _topology=USE_HYPERCUBE, int _pipeSize=DEFAULT_PIPE);
19   PipeBroadcastStrategy(CkMigrateMessage *){}
20   void insertMessage(CharmMessageHolder *msg);
21   void doneInserting();
22   void conversePipeBcast(envelope *env, int size);
23
24   void deliverer(char *msg, int dim);
25
26   virtual void pup(PUP::er &p);
27   PUPable_decl(PipeBroadcastStrategy);
28 };
29 #endif