8 #ifndef FAIR_MQ_SHMEM_MONITOR_H_ 9 #define FAIR_MQ_SHMEM_MONITOR_H_ 11 #include <boost/interprocess/managed_shared_memory.hpp> 18 #include <unordered_map> 30 Monitor(
const std::string& shmId,
bool selfDestruct,
bool interactive,
bool viewOnly,
unsigned int timeoutInMS,
bool runAsDaemon,
bool cleanOnExit);
40 static void Cleanup(
const std::string& shmId);
41 static void RemoveObject(
const std::string&);
42 static void RemoveFileMapping(
const std::string&);
43 static void RemoveQueue(
const std::string&);
44 static void RemoveMutex(
const std::string&);
45 static void RemoveCondition(
const std::string&);
47 struct DaemonPresent : std::runtime_error {
using std::runtime_error::runtime_error; };
53 void MonitorHeartbeats();
64 unsigned int fTimeoutInMS;
66 std::string fSegmentName;
67 std::string fManagementSegmentName;
68 std::string fControlQueueName;
69 std::atomic<bool> fTerminating;
70 std::atomic<bool> fHeartbeatTriggered;
71 std::chrono::high_resolution_clock::time_point fLastHeartbeat;
72 std::thread fSignalThread;
73 boost::interprocess::managed_shared_memory fManagementSegment;
74 std::unordered_map<std::string, std::chrono::high_resolution_clock::time_point> fDeviceHeartbeats;
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23