OpenRTM-aist
2.1.0
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
SharedMemoryPort.h
[詳解]
1
// -*- C++ -*-
16
17
#ifndef SHAREDMEMORYPORT_H
18
#define SHAREDMEMORYPORT_H
19
20
21
#include <
rtm/Manager.h
>
22
#include <rtm/idl/SharedMemorySkel.h>
23
#include <coil/SharedMemory.h>
24
#include <
rtm/CORBA_CdrMemoryStream.h
>
25
#include <
rtm/ByteData.h
>
26
27
#define DEFAULT_DATA_SIZE 8
28
#define DEFAULT_SHARED_MEMORY_SIZE 2097152
29
30
namespace
RTC
31
{
54
class
SharedMemoryPort
55
:
public
virtual
POA_OpenRTM::PortSharedMemory,
56
public
virtual
PortableServer::RefCountServantBase
57
{
58
public
:
76
SharedMemoryPort
();
90
~SharedMemoryPort
()
override
;
111
virtual
int
string_to_MemorySize
(std::string size_str);
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
;
161
void
close_memory
(::CORBA::Boolean unlink =
false
)
override
;
179
virtual
void
write
(
ByteData
& data);
194
virtual
void
read
(
ByteData
& data);
211
void
setInterface
(::OpenRTM::PortSharedMemory_ptr sm)
override
;
227
void
setEndian
(::CORBA::Boolean endian)
override
;
243
::OpenRTM::PortStatus
put
()
override
;
259
::OpenRTM::PortStatus
get
()
override
;
260
261
virtual ::OpenRTM::PortSharedMemory_ptr
getObjRef
();
262
263
protected
:
264
::OpenRTM::PortSharedMemory_var
m_smInterface
{OpenRTM::PortSharedMemory::_nil()};
265
bool
m_endian
{
true
};
266
coil::SharedMemory
m_shmem
;
267
268
};
// class SharedMemoryPort
269
}
// namespace RTC
270
271
#endif
// RTC_RTOBJECT
ByteData.h
CORBA_CdrMemoryStream.h
CORBA CDR Stream Buffer class
Manager.h
-- C++ --
RTC::ByteData
シリアライズ後のバイト列を操作するクラス
Definition
ByteData.h:30
RTC::SharedMemoryPort::~SharedMemoryPort
~SharedMemoryPort() override
デストラクタ
RTC::SharedMemoryPort::write
virtual void write(ByteData &data)
データを書き込む 先頭8byteにデータサイズを書き込み、その後ろにデータを書き込む 設定したデータサイズが共有メモリのサイズを上回った場合、共有メモリの初期化を行う
RTC::SharedMemoryPort::m_endian
bool m_endian
Definition
SharedMemoryPort.h:265
RTC::SharedMemoryPort::put
::OpenRTM::PortStatus put() override
データの送信を知らせる
RTC::SharedMemoryPort::create_memory
void create_memory(::CORBA::ULongLong memory_size, const char *shm_address) override
共有メモリの初期化 windowsではページングファイル上に領域を確保する Linuxでは/dev/shm以下にファイルを作成する 作成したファイルの内容を仮想アドレスにマッピングする
RTC::SharedMemoryPort::string_to_MemorySize
virtual int string_to_MemorySize(std::string size_str)
文字列で指定したデータサイズを数値に変換する 1M → 1048576 1k → 1024 100 → 100
RTC::SharedMemoryPort::setEndian
void setEndian(::CORBA::Boolean endian) override
エンディアンを設定する
RTC::SharedMemoryPort::setInterface
void setInterface(::OpenRTM::PortSharedMemory_ptr sm) override
通信先のCORBAインターフェースを登録する 登録する事により共有メモリの初期化したときに、通信先でもマッピングをやり直すことができる
RTC::SharedMemoryPort::open_memory
void open_memory(::CORBA::ULongLong memory_size, const char *shm_address) override
共有メモリのマッピングを行う
RTC::SharedMemoryPort::get
::OpenRTM::PortStatus get() override
データの送信を要求する
RTC::SharedMemoryPort::m_smInterface
::OpenRTM::PortSharedMemory_var m_smInterface
Definition
SharedMemoryPort.h:264
RTC::SharedMemoryPort::close_memory
void close_memory(::CORBA::Boolean unlink=false) override
マッピングした共有メモリをアンマップする
RTC::SharedMemoryPort::m_shmem
coil::SharedMemory m_shmem
Definition
SharedMemoryPort.h:266
RTC::SharedMemoryPort::SharedMemoryPort
SharedMemoryPort()
コンストラクタ
RTC::SharedMemoryPort::getObjRef
virtual::OpenRTM::PortSharedMemory_ptr getObjRef()
RTC::SharedMemoryPort::read
virtual void read(ByteData &data)
データを読み込む
RTC
RTコンポーネント
構築:
1.17.0