OpenRTM-aist  2.1.0
InPortDSProvider.h
[詳解]
1 // -*- C++ -*-
18 #ifndef RTC_INPORTDSPROVIDER_H
19 #define RTC_INPORTDSPROVIDER_H
20 
21 #include <rtm/idl/DataPortSkel.h>
22 #include <rtm/BufferBase.h>
23 #include <rtm/InPortProvider.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 InPortProvider,
57  public virtual POA_RTC::DataPushService,
58  public virtual PortableServer::RefCountServantBase
59  {
60  public:
75 
89  ~InPortDSProvider() override;
90 
118  void init(coil::Properties& prop) override;
119 
145  void setBuffer(BufferBase<ByteData>* buffer) override;
146 
196  ConnectorListenersBase* listeners) override;
197 
222  void setConnector(InPortConnector* connector) override;
223 
241  ::RTC::PortStatus push(const ::RTC::OctetSeq& data) override;
242 
243  private:
251  ::RTC::PortStatus
252  convertReturn(BufferStatus status,
253  ByteData& data);
254 
255 
265  inline void onBufferWrite(ByteData& data)
266  {
267  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_WRITE, m_profile, data);
268  }
269 
279  inline void onBufferFull(ByteData& data)
280  {
281  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_FULL, m_profile, data);
282  }
283 
293  inline void onBufferWriteTimeout(ByteData& data)
294  {
295  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_WRITE_TIMEOUT, m_profile, data);
296  }
297 
307  inline void onBufferWriteOverwrite(ByteData& data)
308  {
309  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_OVERWRITE, m_profile, data);
310  }
311 
321  inline void onReceived(ByteData& data)
322  {
323  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVED, m_profile, data);
324  }
325 
335  inline void onReceiverFull(ByteData& data)
336  {
337  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_FULL, m_profile, data);
338  }
339 
347  inline void onReceiverTimeout(ByteData& data)
348  {
349  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_TIMEOUT, m_profile, data);
350  }
351 
359  inline void onReceiverError(ByteData& data)
360  {
361  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_ERROR, m_profile, data);
362  }
363 
364  private:
365  CdrBufferBase* m_buffer{nullptr};
366  ::RTC::DataPushService_var m_objref;
367  ConnectorListenersBase* m_listeners;
368  ConnectorInfo m_profile;
369  InPortConnector* m_connector{nullptr};
370  ByteData m_cdr;
371 
372  }; // class InPortDSProvider
373 } // namespace RTC
374 
375 extern "C"
376 {
391 }
392 
393 #endif // RTC_INPORTDSPROVIDER_H
394 
Buffer abstract class
CORBA sequence utility template functions
Connector base class
connector listener class
void InPortDSProviderInit(void)
モジュール初期化関数
InPortProvider class
-*- C++ -*-
BufferBase 抽象クラス
Definition: BufferBase.h:106
シリアライズ後のバイト列を操作するクラス
Definition: ByteData.h:30
ConnectorInfo クラス
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnotifyOut関...
InPortConnector 基底クラス
Definition: InPortConnector.h:54
InPortDSProvider クラス
Definition: InPortDSProvider.h:59
~InPortDSProvider() override
デストラクタ
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
リスナを設定する。
void setBuffer(BufferBase< ByteData > *buffer) override
バッファをセットする
::RTC::PortStatus push(const ::RTC::OctetSeq &data) override
[CORBA interface] バッファにデータを書き込む
void setConnector(InPortConnector *connector) override
Connectorを設定する。
void init(coil::Properties &prop) override
設定初期化
InPortDSProvider()
コンストラクタ
Definition: InPortProvider.h:191
RTコンポーネント
BufferBase< ByteData > CdrBufferBase
Definition: CdrBufferBase.h:31
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
BufferStatus リターンコード
Definition: BufferStatus.h:57