OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
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>
28
29namespace coil
30{
31 class Properties;
32} // namespace coil
33
34namespace RTC
35{
36 class InPortConsumer;
37
59 : public PublisherBase
60 {
61 public:
62
77
91 ~PublisherFlush() override;
92
117 DataPortStatus init(coil::Properties& prop) override;
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
432extern "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コンポーネント
coil::Properties Properties
Definition RTC.h:72
DataPortStatus
Definition DataPortStatus.h:114
Definition DefaultPeriodicTask.h:24