OpenRTM-aist  2.1.0
OutPortCorbaCdrProvider.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_OUTPORTCORBACDRPROVIDER_H
21 #define RTC_OUTPORTCORBACDRPROVIDER_H
22 
23 #include <rtm/idl/DataPort_OpenRTMSkel.h>
24 #include <rtm/BufferBase.h>
25 #include <rtm/OutPortProvider.h>
26 #include <rtm/CORBA_SeqUtil.h>
27 #include <rtm/Manager.h>
28 #include <rtm/ConnectorListener.h>
29 #include <rtm/ConnectorBase.h>
30 
31 namespace RTC
32 {
58  : public OutPortProvider,
59  public virtual ::POA_OpenRTM::OutPortCdr,
60  public virtual PortableServer::RefCountServantBase
61  {
62  public:
77 
92 
120  void init(coil::Properties& prop) override;
121 
147  void setBuffer(CdrBufferBase* buffer) override;
148 
194  ConnectorListenersBase* listeners) override;
195 
220  void setConnector(OutPortConnector* connector) override;
221 
239  ::OpenRTM::PortStatus get(::OpenRTM::CdrData_out data) override;
240 
241 
242  private:
250  ::OpenRTM::PortStatus convertReturn(BufferStatus status,
251  ByteData& data);
252 
253 
263  inline void onBufferRead(ByteData& data)
264  {
265  m_listeners->notifyOut(ConnectorDataListenerType::ON_BUFFER_READ, m_profile, data);
266  }
267 
277  inline void onSend(ByteData& data)
278  {
279  m_listeners->notifyOut(ConnectorDataListenerType::ON_SEND, m_profile, data);
280  }
281 
289  inline void onBufferEmpty()
290  {
291  m_listeners->notify(ConnectorListenerType::ON_BUFFER_EMPTY, m_profile);
292  }
293 
301  inline void onBufferReadTimeout()
302  {
303  m_listeners->notify(ConnectorListenerType::ON_BUFFER_READ_TIMEOUT, m_profile);
304  }
305 
313  inline void onSenderEmpty()
314  {
315  m_listeners->notify(ConnectorListenerType::ON_SENDER_EMPTY, m_profile);
316  }
317 
325  inline void onSenderTimeout()
326  {
327  m_listeners->notify(ConnectorListenerType::ON_SENDER_TIMEOUT, m_profile);
328  }
329 
337  inline void onSenderError()
338  {
339  m_listeners->notify(ConnectorListenerType::ON_SENDER_ERROR, m_profile);
340  }
341 
342  private:
343  CdrBufferBase* m_buffer{nullptr};
344  ::OpenRTM::OutPortCdr_var m_objref;
345  ConnectorListenersBase* m_listeners;
346  ConnectorInfo m_profile;
347  OutPortConnector* m_connector{nullptr};
348  ByteData m_cdr;
349  }; // class OutPortCorbaCdrProvider
350 } // namespace RTC
351 
352 extern "C"
353 {
368 }
369 
370 #endif // RTC_OUTPORTCORBACDRPROVIDER_H
Buffer abstract class
CORBA sequence utility template functions
Connector base class
connector listener class
-*- C++ -*-
void OutPortCorbaCdrProviderInit(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
OutPortCorbaCdrProvider クラス
Definition: OutPortCorbaCdrProvider.h:61
~OutPortCorbaCdrProvider() override
デストラクタ
::OpenRTM::PortStatus get(::OpenRTM::CdrData_out data) override
[CORBA interface] バッファからデータを取得する
void setBuffer(CdrBufferBase *buffer) override
バッファをセットする
void init(coil::Properties &prop) override
設定初期化
OutPortCorbaCdrProvider()
コンストラクタ
void setConnector(OutPortConnector *connector) override
Connectorを設定する。
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
リスナを設定する。
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