12 #include <ace/Lib_Find.h>
24 m_pAccessMutex(nullptr),
25 m_pWaitDataMutex(nullptr),
52 char temp_dir_path[1024];
54 if (ACE::get_temp_dir(temp_dir_path, 1024) == -1) {
59 #ifdef ACE_LACKS_SYSV_SHMEM
61 snprintf(obj_name, 2048,
"%sSHMEM_FILE_%d_0", temp_dir_path, port);
63 m_pMap =
new ACE_Shared_Memory_MM(obj_name,
66 ACE_DEFAULT_FILE_PERMS,
72 m_pMap =
new ACE_Shared_Memory_SV(port, size +
sizeof(
ShmemHeader_t), ACE_Shared_Memory_SV::ACE_CREATE);
79 #ifdef _ACE_USE_SV_SEM
80 snprintf(obj_name, 2048,
"%sSHMEM_ACCESS_MUTEX_%d", temp_dir_path, port);
82 snprintf(obj_name, 2048,
"%sSHMEM_WAITDATA_MUTEX_%d", temp_dir_path, port);
85 snprintf(obj_name, 2048,
"SHMEM_ACCESS_MUTEX_%d", port);
87 snprintf(obj_name, 2048,
"SHMEM_WAITDATA_MUTEX_%d", port);
115 ACE_Shared_Memory* pNewMap;
120 #ifdef ACE_LACKS_SYSV_SHMEM
122 char file_path[1024];
124 if (ACE::get_temp_dir(file_path, 1024) == -1) {
129 char file_name[2048];
132 pNewMap =
new ACE_Shared_Memory_MM(file_name,
135 ACE_DEFAULT_FILE_PERMS,
143 pNewMap =
new ACE_Shared_Memory_SV(shmemkey, newsize +
sizeof(
ShmemHeader_t), ACE_Shared_Memory_SV::ACE_CREATE);
153 char* pNewData = (
char*)(pNewHeader + 1);
155 pNewHeader->size = newsize;
156 pNewHeader->resize =
false;
159 pNewHeader->tail = 0;
const yarp::os::LogComponent & SHMEMCARRIER()
bool write(const yarp::os::Bytes &b)
bool open(int port, int size=4096)
ACE_Process_Mutex * m_pWaitDataMutex
ACE_Process_Mutex * m_pAccessMutex
ShmemHeader_t * m_pHeader
ACE_Shared_Memory * m_pMap
A simple abstraction for a block of bytes.
#define yCError(component,...)
#define yCDebug(component,...)