17#ifndef SHAREDMEMORYPORT_H
18#define SHAREDMEMORYPORT_H
22#include <rtm/idl/SharedMemorySkel.h>
23#include <coil/SharedMemory.h>
27#define DEFAULT_DATA_SIZE 8
28#define DEFAULT_SHARED_MEMORY_SIZE 2097152
55 :
public virtual POA_OpenRTM::PortSharedMemory,
56 public virtual PortableServer::RefCountServantBase
129 void create_memory(::CORBA::ULongLong memory_size,
const char *shm_address)
override;
147 void open_memory(::CORBA::ULongLong memory_size,
const char *shm_address)
override;
243 ::OpenRTM::PortStatus
put()
override;
259 ::OpenRTM::PortStatus
get()
override;
264 ::OpenRTM::PortSharedMemory_var
m_smInterface{OpenRTM::PortSharedMemory::_nil()};
CORBA CDR Stream Buffer class
シリアライズ後のバイト列を操作するクラス
Definition ByteData.h:30
SharedMemory クラス
Definition SharedMemoryPort.h:57
~SharedMemoryPort() override
デストラクタ
virtual void write(ByteData &data)
データを書き込む 先頭8byteにデータサイズを書き込み、その後ろにデータを書き込む 設定したデータサイズが共有メモリのサイズを上回った場合、共有メモリの初期化を行う
bool m_endian
Definition SharedMemoryPort.h:265
::OpenRTM::PortStatus put() override
データの送信を知らせる
void create_memory(::CORBA::ULongLong memory_size, const char *shm_address) override
共有メモリの初期化 windowsではページングファイル上に領域を確保する Linuxでは/dev/shm以下にファイルを作成する 作成したファイルの内容を仮想アドレスにマッピングする
virtual int string_to_MemorySize(std::string size_str)
文字列で指定したデータサイズを数値に変換する 1M → 1048576 1k → 1024 100 → 100
void setEndian(::CORBA::Boolean endian) override
エンディアンを設定する
void setInterface(::OpenRTM::PortSharedMemory_ptr sm) override
通信先のCORBAインターフェースを登録する 登録する事により共有メモリの初期化したときに、通信先でもマッピングをやり直すことができる
void open_memory(::CORBA::ULongLong memory_size, const char *shm_address) override
共有メモリのマッピングを行う
::OpenRTM::PortStatus get() override
データの送信を要求する
::OpenRTM::PortSharedMemory_var m_smInterface
Definition SharedMemoryPort.h:264
void close_memory(::CORBA::Boolean unlink=false) override
マッピングした共有メモリをアンマップする
coil::SharedMemory m_shmem
Definition SharedMemoryPort.h:266
SharedMemoryPort()
コンストラクタ
virtual::OpenRTM::PortSharedMemory_ptr getObjRef()
virtual void read(ByteData &data)
データを読み込む