25#include <boost/interprocess/creation_tags.hpp>
26#include <boost/interprocess/detail/os_file_functions.hpp>
27#include <boost/interprocess/interprocess_fwd.hpp>
28#include <boost/interprocess/mapped_region.hpp>
29#include <boost/interprocess/shared_memory_object.hpp>
30#include <boost/interprocess/sync/named_semaphore.hpp>
36 inline boost::interprocess::shared_memory_object
37 InitSHM(
const std::string& sharedMemoryName)
39 boost::interprocess::shared_memory_object::remove(sharedMemoryName.c_str());
40 boost::interprocess::permissions permissions;
42 return boost::interprocess::shared_memory_object(boost::interprocess::create_only,
43 sharedMemoryName.c_str(),
44 boost::interprocess::read_write,
48 inline boost::interprocess::named_semaphore
51 boost::interprocess::named_semaphore::remove(semName.c_str());
52 return boost::interprocess::named_semaphore(
53 boost::interprocess::create_only, semName.c_str(), 0);
65 shm.truncate(T::size());
66 region = boost::interprocess::mapped_region(shm, boost::interprocess::read_write);
68 ARMARX_INFO <<
"Finished creation of SharedMemoryWriter of size " << T::size();
74 std::memcpy(region.get_address(), &
data,
sizeof(
T));
77 boost::interprocess::named_semaphore
sem;
80 boost::interprocess::shared_memory_object shm;
81 boost::interprocess::mapped_region region;
93 shm.truncate(T::size());
94 region = boost::interprocess::mapped_region(shm, boost::interprocess::read_write);
96 ARMARX_INFO <<
"Finished creation of SharedMemoryReader of size" << T::size();
102 std::memcpy(&
data, region.get_address(), T::size());
105 boost::interprocess::named_semaphore
sem;
108 boost::interprocess::shared_memory_object shm;
109 boost::interprocess::mapped_region region;
SharedMemoryReader(const std::string &sharedMemoryName, const std::string &semName)
void updateNonLocking(T &data) const
boost::interprocess::named_semaphore sem
void updateNonLocking(const T &data) const
boost::interprocess::named_semaphore sem
SharedMemoryWriter(const std::string &sharedMemoryName, const std::string &semName)
#define ARMARX_INFO
The normal logging level.
boost::interprocess::named_semaphore InitSem(const std::string &semName)
boost::interprocess::shared_memory_object InitSHM(const std::string &sharedMemoryName)