10 #ifndef __SHM_BASE_LIB_H__
11 #define __SHM_BASE_LIB_H__
27 #include <sys/types.h>
68 const PERM DEFAULT_PERM =
static_cast<PERM
>(PERM_USER_READ | PERM_USER_WRITE | PERM_GROUP_READ | PERM_GROUP_WRITE | PERM_OTHER_READ | PERM_OTHER_WRITE);
76 int disconnectMemory(std::string name);
77 int disconnectMemory(
int id);
91 virtual bool connect(
size_t size = 0) = 0;
92 virtual int disconnect() = 0;
93 size_t getSize()
const;
94 unsigned char* getPtr();
96 virtual bool isDisconnected()
const = 0;
103 unsigned char *shm_ptr;
119 virtual bool connect(
size_t size = 0);
120 virtual int disconnect();
122 virtual bool isDisconnected()
const;
125 std::string shm_name;
139 static size_t getSize(
size_t element_size,
int buffer_num);
141 RingBuffer(
unsigned char* first_ptr,
size_t size = 0,
int buffer_num = 0);
146 int getNewestBufferNum();
147 int getOldestBufferNum();
148 bool allocateBuffer(
int buffer_num);
149 size_t getElementSize()
const;
150 unsigned char* getDataList();
152 bool waitFor(uint64_t timeout_usec);
154 void setDataExpiryTime_us(uint64_t time_us);
157 void initializeExclusiveAccess();
159 unsigned char *memory_ptr;
161 pthread_mutex_t *mutex;
162 pthread_cond_t *condition;
163 size_t *element_size;
165 std::atomic<uint64_t> *timestamp_list;
166 unsigned char *data_list;
168 uint64_t timestamp_us;
169 uint64_t data_expiry_time_us;
共有メモリで使用するリングバッファを記述したクラス
const uint64_t getTimestamp_us() const
タイムスタンプ取得
bool isUpdated() const
共有メモリの更新確認
RingBuffer(unsigned char *first_ptr, size_t size=0, int buffer_num=0)
コンストラクタ
void setTimestamp_us(uint64_t input_time_us, int buffer_num)
タイムスタンプ取得
bool waitFor(uint64_t timeout_usec)
トピックの更新待ち
Posix方式の共有メモリのアクセス方法を記述したクラス