OpenRTM-aist  2.1.0
OutPortDSProvider.h
[詳解]
1 // -*- C++ -*-
18 #ifndef RTC_OUTPORTDSPROVIDER_H
19 #define RTC_OUTPORTDSPROVIDER_H
20 
21 #include <rtm/idl/DataPortSkel.h>
22 #include <rtm/BufferBase.h>
23 #include <rtm/OutPortProvider.h>
24 #include <rtm/CORBA_SeqUtil.h>
25 #include <rtm/Manager.h>
26 #include <rtm/ConnectorListener.h>
27 #include <rtm/ConnectorBase.h>
28 
29 namespace RTC
30 {
56  : public OutPortProvider,
57  public virtual ::POA_RTC::DataPullService,
58  public virtual PortableServer::RefCountServantBase
59  {
60  public:
75 
89  ~OutPortDSProvider() override;
90 
118  void init(coil::Properties& prop) override;
119 
145  void setBuffer(CdrBufferBase* buffer) override;
146 
192  ConnectorListenersBase* listeners) override;
193 
218  void setConnector(OutPortConnector* connector) override;
219 
237  ::RTC::PortStatus pull(::RTC::OctetSeq_out data) override;
238 
239 
240  private:
248  ::RTC::PortStatus convertReturn(BufferStatus status,
249  ByteData& data);
250 
251 
261  inline void onBufferRead(ByteData& data)
262  {
263  m_listeners->notifyOut(ConnectorDataListenerType::ON_BUFFER_READ, m_profile, data);
264  }
265 
275  inline void onSend(ByteData& data)
276  {
277  m_listeners->notifyOut(ConnectorDataListenerType::ON_SEND, m_profile, data);
278  }
279 
287  inline void onBufferEmpty()
288  {
289  m_listeners->notify(ConnectorListenerType::ON_BUFFER_EMPTY, m_profile);
290  }
291 
299  inline void onBufferReadTimeout()
300  {
301  m_listeners->notify(ConnectorListenerType::ON_BUFFER_READ_TIMEOUT, m_profile);
302  }
303 
311  inline void onSenderEmpty()
312  {
313  m_listeners->notify(ConnectorListenerType::ON_SENDER_EMPTY, m_profile);
314  }
315 
323  inline void onSenderTimeout()
324  {
325  m_listeners->notify(ConnectorListenerType::ON_SENDER_TIMEOUT, m_profile);
326  }
327 
335  inline void onSenderError()
336  {
337  m_listeners->notify(ConnectorListenerType::ON_SENDER_ERROR, m_profile);
338  }
339 
340  private:
341  CdrBufferBase* m_buffer{nullptr};
342  ::RTC::DataPullService_var m_objref;
343  ConnectorListenersBase* m_listeners;
344  ConnectorInfo m_profile;
345  OutPortConnector* m_connector{nullptr};
346  ByteData m_cdr;
347  }; // class OutPortDSProvider
348 } // namespace RTC
349 
350 extern "C"
351 {
366 }
367 
368 #endif // RTC_OUTPORTDSPROVIDER_H
Buffer abstract class
CORBA sequence utility template functions
Connector base class
connector listener class
-*- C++ -*-
void OutPortDSProviderInit(void)
モジュール初期化関数
OutPortProvider 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
OutPortDSProvider クラス
Definition: OutPortDSProvider.h:59
~OutPortDSProvider() override
デストラクタ
void init(coil::Properties &prop) override
設定初期化
::RTC::PortStatus pull(::RTC::OctetSeq_out data) override
[CORBA interface] バッファからデータを取得する
void setBuffer(CdrBufferBase *buffer) override
バッファをセットする
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
リスナを設定する。
void setConnector(OutPortConnector *connector) override
Connectorを設定する。
OutPortDSProvider()
コンストラクタ
OutPortProvider
Definition: OutPortProvider.h:190
RTコンポーネント
BufferBase< ByteData > CdrBufferBase
Definition: CdrBufferBase.h:31
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
BufferStatus リターンコード
Definition: BufferStatus.h:57