Go to the documentation of this file. 1 #ifndef FWCore_SharedMemory_ControllerChannel_h
2 #define FWCore_SharedMemory_ControllerChannel_h
24 #include "boost/interprocess/managed_shared_memory.hpp"
25 #include "boost/interprocess/sync/named_mutex.hpp"
26 #include "boost/interprocess/sync/named_condition.hpp"
27 #include "boost/interprocess/sync/scoped_lock.hpp"
57 using namespace boost::interprocess;
60 using namespace boost::posix_time;
73 using namespace boost::interprocess;
78 if (not
wait(
lock, iTrans, iTransitionID)) {
93 using namespace boost::interprocess;
112 bool wait(boost::interprocess::scoped_lock<boost::interprocess::named_mutex>&
lock,
114 unsigned long long iTransID);
boost::interprocess::named_condition cndToMain_
edm::Transition * transitionType_
BufferInfo * toWorkerBufferInfo()
This can be used with WriteBuffer to keep Controller and Worker in sync.
boost::interprocess::managed_shared_memory managed_sm_
std::string uniqueName(std::string iBase) const
std::string uniqueID() const
uint16_t mem[nChs][nEvts]
BufferInfo * fromWorkerBufferInfo_
unsigned long long * transitionID_
bool shouldKeepEvent() const
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
boost::interprocess::named_condition cndFromMain_
BufferInfo * toWorkerBufferInfo_
bool wait(boost::interprocess::scoped_lock< boost::interprocess::named_mutex > &lock, edm::Transition iTrans, unsigned long long iTransID)
static BufferInfo * bufferInfo(const char *iWhich, boost::interprocess::managed_shared_memory &mem)
BufferInfo * fromWorkerBufferInfo()
This can be used with ReadBuffer to keep Controller and Worker in sync.
ControllerChannel(std::string const &iName, int iID, unsigned int iMaxWaitInSeconds)
std::string const & sharedMemoryName() const
boost::interprocess::named_mutex mutex_
const ControllerChannel & operator=(const ControllerChannel &)=delete
unsigned int maxWaitInSeconds_
bool doTransition(F &&iF, edm::Transition iTrans, unsigned long long iTransitionID)