OpenRTM-aist  2.1.0
PublisherFlush.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_PUBLISHERFLUSH_H
21 #define RTC_PUBLISHERFLUSH_H
22 
23 #include <condition_variable>
24 #include <rtm/PublisherBase.h>
25 #include <rtm/SystemLogger.h>
26 #include <rtm/ConnectorBase.h>
27 #include <rtm/ConnectorListener.h>
28 
29 namespace coil
30 {
31  class Properties;
32 } // namespace coil
33 
34 namespace RTC
35 {
36  class InPortConsumer;
37 
59  : public PublisherBase
60  {
61  public:
62 
77 
91  ~PublisherFlush() override;
92 
118 
145 
168 
204  RTC::ConnectorListenersBase* listeners) override;
205 
263  std::chrono::nanoseconds timeout
264  = std::chrono::nanoseconds(-1)) override;
292  bool isActive() override;
293 
320 
347 
348  protected:
358  inline void onSend(ByteData& data)
359  {
360  m_listeners->notifyOut(ConnectorDataListenerType::ON_SEND, m_profile, data);
361  }
362 
372  inline void onReceived(ByteData& data)
373  {
374  m_listeners->notifyOut(ConnectorDataListenerType::ON_RECEIVED, m_profile, data);
375  }
376 
386  inline void onReceiverFull(ByteData& data)
387  {
388  m_listeners->notifyOut(ConnectorDataListenerType::ON_RECEIVER_FULL, m_profile, data);
389  }
390 
400  inline void onReceiverTimeout(ByteData& data)
401  {
402  m_listeners->notifyOut(ConnectorDataListenerType::ON_RECEIVER_TIMEOUT, m_profile, data);
403  }
404 
414  inline void onReceiverError(ByteData& data)
415  {
416  m_listeners->notifyOut(ConnectorDataListenerType::ON_RECEIVER_ERROR, m_profile, data);
417  }
418 
419  private:
420  Logger rtclog{"PublisherFlush"};
421  InPortConsumer* m_consumer{nullptr};
422  ConnectorInfo m_profile;
423  ConnectorListenersBase* m_listeners{nullptr};
425  std::mutex m_retmutex;
426  bool m_active{false};
427  ByteData m_data;
428  };
429 
430 } // namespace RTC
431 
432 extern "C"
433 {
435 }
436 
437 #endif // RTC_PUBLISHERFLUSH_H
438 
Connector base class
connector listener class
Publisher base class
void PublisherFlushInit()
RT component logger 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 notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
リスナーへ通知する(OutPort側) 指定の種類のリスナのコールバックメソッドを呼び出す。 InPortとOutPortでシリアライザの種類が違う場合があるため、 OutPort側ではnotifyOu...
InPortConsumer 抽象クラス
Definition: InPortConsumer.h:78
Logger クラス
Definition: SystemLogger.h:101
Publisher 基底クラス
Definition: PublisherBase.h:66
PublisherFlush クラス
Definition: PublisherFlush.h:60
~PublisherFlush() override
デストラクタ
DataPortStatus deactivate() override
非アクティブ化する
DataPortStatus init(coil::Properties &prop) override
初期化
bool isActive() override
アクティブ化確認
DataPortStatus setBuffer(CdrBufferBase *buffer) override
バッファのセット
void onReceived(ByteData &data)
ON_RECEIVEDのリスナへ通知する。
Definition: PublisherFlush.h:372
DataPortStatus activate() override
アクティブ化する
DataPortStatus setConsumer(InPortConsumer *consumer) override
InPortコンシューマのセット
void onReceiverError(ByteData &data)
ON_RECEIVER_ERRORのリスナへ通知する。
Definition: PublisherFlush.h:414
::RTC::DataPortStatus setListener(ConnectorInfo &info, RTC::ConnectorListenersBase *listeners) override
リスナを設定する。
void onSend(ByteData &data)
ON_SENDのリスナへ通知する。
Definition: PublisherFlush.h:358
PublisherFlush()
コンストラクタ
DataPortStatus write(ByteDataStreamBase *data, std::chrono::nanoseconds timeout=std::chrono::nanoseconds(-1)) override
データを書き込む
void onReceiverTimeout(ByteData &data)
ON_RECEIVER_TIMEOUTのリスナへ通知する。
Definition: PublisherFlush.h:400
void onReceiverFull(ByteData &data)
ON_RECEIVER_FULLのリスナへ通知する。
Definition: PublisherFlush.h:386
RTコンポーネント
DataPortStatus
Definition: DataPortStatus.h:114
coil::Properties Properties
Definition: RTC.h:72
Definition: DefaultPeriodicTask.h:24