00001 #ifndef _NEIGHBORLBMSG_H_ 00002 #define _NEIGHBORLBMSG_H_ 00003 00004 class NLBStatsMsg; 00005 00006 // this actually is not a real Charm++ message and CLBStatsMsg is just 00007 // a regular class with pup defined. 00008 class CkMarshalledNLBStatsMessage { 00009 NLBStatsMsg *msg; 00010 void operator=(const CkMarshalledNLBStatsMessage &) = delete; 00011 void operator=(CkMarshalledNLBStatsMessage &&) = delete; 00012 CkMarshalledNLBStatsMessage(const CkMarshalledNLBStatsMessage &rhs) = delete; 00013 public: 00014 inline CkMarshalledNLBStatsMessage(void) {msg=NULL;} 00015 CkMarshalledNLBStatsMessage(NLBStatsMsg *m) {msg=m;} //Takes ownership of message 00016 CkMarshalledNLBStatsMessage(CkMarshalledNLBStatsMessage &&rhs) { msg = rhs.msg; rhs.msg = nullptr; } 00017 ~CkMarshalledNLBStatsMessage(); 00018 NLBStatsMsg *getMessage(void) {void *ret=msg; msg=NULL; return (NLBStatsMsg*)ret;} 00019 void pup(PUP::er &p); 00020 }; 00021 PUPmarshall(CkMarshalledNLBStatsMessage) 00022 00023 #endif