OpenRTM-aist  2.1.0
OutPortSHMProvider.h
[詳解]
1 // -*- C++ -*-
17 #ifndef RTC_OUTPORTSHMPROVIDER_H
18 #define RTC_OUTPORTSHMPROVIDER_H
19 
20 #include <rtm/SharedMemoryPort.h>
21 #include <rtm/BufferBase.h>
22 #include <rtm/OutPortProvider.h>
23 #include <rtm/CORBA_SeqUtil.h>
24 #include <rtm/Manager.h>
25 #include <rtm/ConnectorListener.h>
26 #include <rtm/ConnectorBase.h>
27 
28 namespace RTC
29 {
52  : public OutPortProvider,
53  public virtual SharedMemoryPort
54  {
55  public:
70 
84  ~OutPortSHMProvider() override;
85 
104  void init(coil::Properties& prop) override;
105 
123  void setBuffer(CdrBufferBase* buffer) override;
124 
145  ConnectorListenersBase* listeners) override;
146 
164  void setConnector(OutPortConnector* connector) override;
165 
183  ::OpenRTM::PortStatus get() override;
184 
185 
186  private:
194  ::OpenRTM::PortStatus convertReturn(BufferStatus status,
195  ByteData& data);
196 
197 
207  inline void onBufferRead(ByteData& data)
208  {
209  m_listeners->notifyOut(ConnectorDataListenerType::ON_BUFFER_READ, m_profile, data);
210  }
211 
221  inline void onSend(ByteData& data)
222  {
223  m_listeners->notifyOut(ConnectorDataListenerType::ON_SEND, m_profile, data);
224  }
225 
233  inline void onBufferEmpty()
234  {
235  m_listeners->notify(ConnectorListenerType::ON_BUFFER_EMPTY, m_profile);
236  }
237 
245  inline void onBufferReadTimeout()
246  {
247  m_listeners->notify(ConnectorListenerType::ON_BUFFER_READ_TIMEOUT, m_profile);
248  }
249 
257  inline void onSenderEmpty()
258  {
259  m_listeners->notify(ConnectorListenerType::ON_SENDER_EMPTY, m_profile);
260  }
261 
269  inline void onSenderTimeout()
270  {
271  m_listeners->notify(ConnectorListenerType::ON_SENDER_TIMEOUT, m_profile);
272  }
273 
281  inline void onSenderError()
282  {
283  m_listeners->notify(ConnectorListenerType::ON_SENDER_ERROR, m_profile);
284  }
285 
286  private:
287  CdrBufferBase* m_buffer{nullptr};
288  ::OpenRTM::PortSharedMemory_var m_objref;
289  ConnectorListenersBase* m_listeners;
290  ConnectorInfo m_profile;
291  OutPortConnector* m_connector{nullptr};
292  std::string m_shm_address;
293  int m_memory_size{0};
294  ByteData m_cdr;
295  }; // class OutPortCorbaCdrProvider
296 } // namespace RTC
297 
298 extern "C"
299 {
314 }
315 
316 #endif // RTC_OUTPORTSHMPROVIDER_H
Buffer abstract class
CORBA sequence utility template functions
Connector base class
connector listener class
-*- C++ -*-
OutPortProvider class
void OutPortSHMProviderInit(void)
モジュール初期化関数
Shared Memory Port class
BufferBase 抽象クラス
Definition: BufferBase.h:106
シリアライズ後のバイト列を操作するクラス
Definition: ByteData.h:30
ConnectorInfo クラス
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
virtual ::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info)=0
リスナーへ通知する
virtual ::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOu...
OutPortConnector 基底クラス
Definition: OutPortConnector.h:58
OutPortProvider
Definition: OutPortProvider.h:190
OutPortSHMProvider クラス
Definition: OutPortSHMProvider.h:54
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
リスナを設定する。
::OpenRTM::PortStatus get() override
[CORBA interface] バッファからデータを取得する
void init(coil::Properties &prop) override
設定初期化
void setBuffer(CdrBufferBase *buffer) override
バッファをセットする
void setConnector(OutPortConnector *connector) override
Connectorを設定する。
OutPortSHMProvider()
コンストラクタ
~OutPortSHMProvider() override
デストラクタ
SharedMemory クラス
Definition: SharedMemoryPort.h:57
RTコンポーネント
BufferBase< ByteData > CdrBufferBase
Definition: CdrBufferBase.h:31
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
BufferStatus リターンコード
Definition: BufferStatus.h:57