
00001 #ifndef _CENTRALLBMSG_H_ 00002 #define _CENTRALLBMSG_H_ 00003 00004 class CLBStatsMsg; 00005 00006 // this actually is not a real Charm++ message and CLBStatsMsg is just 00007 // a regular class with pup defined. 00008 class CkMarshalledCLBStatsMessage { 00009 CkVec<CLBStatsMsg *> msgs; 00010 //Don't use these: only pass by reference 00011 void operator=(const CkMarshalledCLBStatsMessage &); 00012 public: 00013 CkMarshalledCLBStatsMessage(void) {} 00014 CkMarshalledCLBStatsMessage(CLBStatsMsg *m) { add(m); } //Takes ownership of message 00015 CkMarshalledCLBStatsMessage(const CkMarshalledCLBStatsMessage &); 00016 ~CkMarshalledCLBStatsMessage() { free(); } 00017 void add(CLBStatsMsg *m) { if (m!=NULL) msgs.push_back(m); } 00018 void add(CkMarshalledCLBStatsMessage &msg); // add multiple messages 00019 CLBStatsMsg *getMessage(int c=0) {CLBStatsMsg *ret=msgs[c]; msgs[c]=NULL; return ret;} 00020 int getCount() { return msgs.size(); } 00021 void pup(PUP::er &p); 00022 void free(); 00023 }; 00024 PUPmarshall(CkMarshalledCLBStatsMessage) 00025 00026 #endif
1.5.5