OpenRTM-aist  2.1.0
InPortPushConnector.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_INPORTPUSHCONNECTOR_H
21 #define RTC_INPORTPUSHCONNECTOR_H
22 
23 #include <rtm/InPortConnector.h>
24 #include <rtm/InPortConsumer.h>
25 #include <rtm/PublisherBase.h>
26 
27 namespace RTC
28 {
29  class InPortProvider;
30 
81  : public InPortConnector
82  {
83  public:
84 
126  InPortProvider* provider,
127  ConnectorListenersBase* listeners,
128  CdrBufferBase* buffer = nullptr);
129 
146 
180 
201 
216  void activate() override {} // do nothing
217 
232  void deactivate() override {} // do nothing
233 
234  protected:
255 
256  BufferStatus write(ByteData &cdr) override;
257 
265  void onConnect();
266 
274  void onDisconnect();
275 
276  inline void onBufferRead(ByteData& data)
277  {
279  m_profile, data);
280 
281  }
282  void onBufferEmpty(ByteData& /*data*/)
283  {
285 
286  }
288  {
290  m_profile);
291  }
292 
293  private:
301  InPortProvider* m_provider;
302 
310  ConnectorListenersBase* m_listeners;
311 
312  bool m_deleteBuffer;
313 
314  bool m_sync_readwrite;
315 
316  struct WorkerThreadCtrl
317  {
318  WorkerThreadCtrl() {}
319  std::mutex mutex_;
320  std::condition_variable cond_;
321  bool completed_{false};
322  };
323  WorkerThreadCtrl m_writecompleted_worker;
324  WorkerThreadCtrl m_readcompleted_worker;
325  WorkerThreadCtrl m_readready_worker;
326 
327  ByteData m_data;
328 
329  };
330 } // namespace RTC
331 
332 #endif // RTC_PUSH_CONNECTOR_H
InPortConnector base class
InPortConsumer class
Publisher base class
BufferBase 抽象クラス
Definition: BufferBase.h:106
シリアライザの基底クラス
Definition: ByteDataStreamBase.h:63
シリアライズ後のバイト列を操作するクラス
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 notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(InPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 InPort側ではnotifyOut関...
InPortConnector 基底クラス
Definition: InPortConnector.h:54
ConnectorInfo m_profile
ConnectorInfo
Definition: InPortConnector.h:399
Definition: InPortProvider.h:191
InPortPushConnector クラス
Definition: InPortPushConnector.h:82
~InPortPushConnector() override
デストラクタ
InPortPushConnector(ConnectorInfo info, InPortProvider *provider, ConnectorListenersBase *listeners, CdrBufferBase *buffer=nullptr)
コンストラクタ
DataPortStatus disconnect() override
接続解除
void onBufferReadTimeout(ByteData &)
Definition: InPortPushConnector.h:287
void onDisconnect()
接続切断時にコールバックを呼ぶ
void deactivate() override
非アクティブ化
Definition: InPortPushConnector.h:232
BufferStatus write(ByteData &cdr) override
void onBufferEmpty(ByteData &)
Definition: InPortPushConnector.h:282
virtual CdrBufferBase * createBuffer(ConnectorInfo &info)
Bufferの生成
void activate() override
アクティブ化
Definition: InPortPushConnector.h:216
void onConnect()
接続確立時にコールバックを呼ぶ
DataPortStatus read(ByteDataStreamBase *data) override
データの読み出し
void onBufferRead(ByteData &data)
Definition: InPortPushConnector.h:276
RTコンポーネント
DataPortStatus
Definition: DataPortStatus.h:114
BufferStatus
BufferStatus リターンコード
Definition: BufferStatus.h:57