17#ifndef CYBER_TRANSPORT_SHM_SEGMENT_H_
18#define CYBER_TRANSPORT_SHM_SEGMENT_H_
23#include <unordered_map>
39 uint8_t*
buf =
nullptr;
45 explicit Segment(uint64_t channel_id);
95 bool Recreate(
const uint64_t& msg_size);
96 uint32_t GetNextWritableBlockIndex();
97 uint32_t GetNextArenaWritableBlockIndex();
virtual bool OpenOnly()=0
bool AcquireBlockToRead(ReadableBlock *readable_block)
bool ReleaseArenaBlockForReadByIndex(uint64_t block_index)
bool AcquireArenaBlockToWrite(std::size_t msg_size, WritableBlock *writable_block)
std::mutex arena_block_buf_lock_
bool LockArenaBlockForReadByIndex(uint64_t block_index)
void ReleaseReadBlock(const ReadableBlock &readable_block)
bool ReleaseBlockForReadByIndex(uint64_t block_index)
std::mutex block_buf_lock_
bool InitOnly(uint64_t message_size)
bool AcquireBlockToWrite(std::size_t msg_size, WritableBlock *writable_block)
bool LockArenaBlockForWriteByIndex(uint64_t block_index)
std::unordered_map< uint32_t, uint8_t * > block_buf_addrs_
bool LockBlockForWriteByIndex(uint64_t block_index)
bool ReleaseArenaBlockForWriteByIndex(uint64_t block_index)
virtual bool OpenOrCreate()=0
bool AcquireArenaBlockToRead(ReadableBlock *readable_block)
bool ReleaseBlockForWriteByIndex(uint64_t block_index)
void ReleaseWrittenBlock(const WritableBlock &writable_block)
bool LockBlockForReadByIndex(uint64_t block_index)
std::unordered_map< uint32_t, uint8_t * > arena_block_buf_addrs_
void ReleaseArenaWrittenBlock(const WritableBlock &writable_block)
void ReleaseArenaReadBlock(const ReadableBlock &readable_block)
std::shared_ptr< Segment > SegmentPtr