remove unnecessary include <string> .
[charm.git] / src / ck-com / PipeBroadcastStrategy.h
1 /**
2    @addtogroup ComlibCharmStrategy
3    @{
4    @file
5    
6    Header for the PipeBroadcastStrategy strategy
7 */
8
9 #ifndef PIPE_BROADCAST_STRATEGY
10 #define PIPE_BROADCAST_STRATEGY
11 #include "ComlibManager.h"
12 #include "pipebroadcastconverse.h"
13
14 /**
15  * Strategy that performs a broadcast over an entire group or array of chares.
16  * This strategy utilized the lower level PipeBroadcastConverse to perform the
17  * operation.
18  */
19 class PipeBroadcastStrategy : public PipeBroadcastConverse, public CharmStrategy {
20  protected:
21
22
23  public:
24   PipeBroadcastStrategy(int _topology, CkArrayID _aid, int _pipeSize=DEFAULT_PIPE);
25   PipeBroadcastStrategy(CkGroupID _gid, int _topology=USE_HYPERCUBE, int _pipeSize=DEFAULT_PIPE);
26   PipeBroadcastStrategy(CkMigrateMessage *m): PipeBroadcastConverse(m), CharmStrategy(m) {}
27   void insertMessage(CharmMessageHolder *msg);
28
29   virtual CmiFragmentHeader *getFragmentHeader(char*);
30
31   void deliver(char *msg, int dim);
32
33   virtual void pup(PUP::er &p);
34   PUPable_decl(PipeBroadcastStrategy);
35 };
36 #endif
37
38 /*@}*/