#include <SharedMemory.hpp>
Definition at line 24 of file SharedMemory.hpp.
◆ SharedMemory() [1/2]
| SharedMemory::SharedMemory |
( |
std::string |
name | ) |
|
Definition at line 21 of file SharedMemory.cpp.
22 assert(name.length() > 4);
23 if(name.at(0) !=
'/') {
◆ SharedMemory() [2/2]
| com::SharedMemory::SharedMemory |
( |
| ) |
|
|
delete |
◆ ~SharedMemory()
| SharedMemory::~SharedMemory |
( |
| ) |
|
◆ acquire_semaphore()
| bool SharedMemory::acquire_semaphore |
( |
bool |
timedWait = false | ) |
|
|
private |
Definition at line 214 of file SharedMemory.cpp.
216 if (timedWait && clock_gettime(CLOCK_REALTIME,&tms) == 0) {
217 tms.tv_nsec += 10000000;
219 std::cerr <<
"[SharedMemory::acquire_semaphore] FAILED to get semaphore (timed).\n";
224 if(timedWait) std::clog <<
"[SharedMemory::acquire_semaphore] get clock not worked\n";
226 std::cerr <<
"[SharedMemory::acquire_semaphore] FAILED to get semaphore.\n";
◆ allocate()
| bool SharedMemory::allocate |
( |
size_t |
sizeBytes | ) |
|
◆ deallocate()
| bool SharedMemory::deallocate |
( |
| ) |
|
Definition at line 89 of file SharedMemory.cpp.
93 std::cerr <<
"[SharedMemory::deallocate] Failed to unmap shared area\n";
97 std::clog <<
"[SharedMemory::deallocate] Unmapped shared area successfully\n";
102 std::cerr <<
"[SharedMemory::deallocate] FAILED to unlink semaphore\n";
106 std::clog <<
"[SharedMemory::deallocate] Semaphore unlinked successfully\n";
111 std::cerr <<
"[SharedMemory::deallocate] FAILED to deallocate shared memory\n";
115 std::clog <<
"[SharedMemory::deallocate] Deallocated shared memory successfully\n";
◆ get_data_size()
| size_t SharedMemory::get_data_size |
( |
| ) |
|
◆ is_new_data_available()
| bool SharedMemory::is_new_data_available |
( |
| ) |
|
◆ read_mutexed()
| size_t SharedMemory::read_mutexed |
( |
com::SharedData & |
data, |
|
|
size_t |
sizeToRead |
|
) |
| |
◆ release_semaphore()
| bool SharedMemory::release_semaphore |
( |
| ) |
|
|
private |
Definition at line 234 of file SharedMemory.cpp.
236 while(maxTries > 0 && sem_post(
m_semaphore) != 0) {
237 std::cerr <<
"[SharedMemory::release_semaphore] FAILED to post semaphore! Retrying\n";
238 std::this_thread::sleep_for(10ms);
241 return (maxTries > 0);
◆ write_mutexed()
Definition at line 126 of file SharedMemory.cpp.
128 std::cerr <<
"[SharedMemory::write_mutexed] Shared memory not initialized/allocated! \n";
132 size_t size = data.dataSize;
134 std::cerr <<
"[SharedMemory::write_mutexed] Data too large to write into mutex. (Data is shrinked!)\n";
137 else if(size !=
m_shmSize - 8 && size != 0) {
138 std::clog <<
"[SharedMemory::write_mutexed] INFO: Data not as large as shared memory.\n";
142 std::cerr <<
"[SharedMemory::write_mutexed] Could NOT acquire_semaphore. Skip writing to shared mem.\n";
147 std::memcpy(
m_sharedArea, &data.tv_sec,
sizeof(data.tv_sec));
148 std::memcpy(
m_sharedArea +
sizeof(data.tv_sec), &data.tv_nsec,
sizeof(data.tv_nsec));
149 std::memcpy(
m_sharedArea +
sizeof(data.tv_sec) +
sizeof(data.tv_nsec), data.data, size);
152 std::cerr <<
"[SharedMemory::write_mutexed] Semaphore NOT released.\n";
References com::SharedData::data, com::SharedData::dataSize, com::SharedData::tv_nsec, and com::SharedData::tv_sec.
Referenced by VCINodeAsync::camera_publish_loop().
◆ m_lastDataNSec
| uint32_t com::SharedMemory::m_lastDataNSec = 0 |
|
private |
◆ m_lastDataSec
| uint32_t com::SharedMemory::m_lastDataSec = 0 |
|
private |
◆ m_semaphore
| sem_t* com::SharedMemory::m_semaphore = nullptr |
|
private |
◆ m_semaphoreName
| std::string com::SharedMemory::m_semaphoreName |
|
private |
◆ m_sharedArea
| void* com::SharedMemory::m_sharedArea = nullptr |
|
private |
◆ m_shmAddress
| int com::SharedMemory::m_shmAddress = -1 |
|
private |
◆ m_shmName
| std::string com::SharedMemory::m_shmName |
|
private |
◆ m_shmSize
| int com::SharedMemory::m_shmSize = -1 |
|
private |
The documentation for this class was generated from the following files: