OpenRTM-aist  2.1.0
PublisherFlush.h
Go to the documentation of this file.
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.
DataPortStatus mixin class.
Definition: ConnectorListener.h:35
BufferBase abstract class.
Definition: BufferBase.h:106
Definition: ByteDataStreamBase.h:63
Definition: ByteData.h:30
ConnectorInfo class.
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
virtual ::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
InPortConsumer abstract class.
Definition: InPortConsumer.h:78
Logger class.
Definition: SystemLogger.h:101
Base class of Publisher.
Definition: PublisherBase.h:66
PublisherFlush class.
Definition: PublisherFlush.h:60
~PublisherFlush() override
Destructor.
DataPortStatus deactivate() override
deactivation
DataPortStatus init(coil::Properties &prop) override
initialization
bool isActive() override
If publisher is active state.
DataPortStatus setBuffer(CdrBufferBase *buffer) override
Setting buffer pointer.
void onReceived(ByteData &data)
Notify an ON_RECEIVED event to listeners.
Definition: PublisherFlush.h:372
DataPortStatus activate() override
activation
DataPortStatus setConsumer(InPortConsumer *consumer) override
Store InPort consumer.
void onReceiverError(ByteData &data)
Notify an ON_RECEIVER_ERROR event to listeners.
Definition: PublisherFlush.h:414
::RTC::DataPortStatus setListener(ConnectorInfo &info, RTC::ConnectorListenersBase *listeners) override
Set the listener.
void onSend(ByteData &data)
Notify an ON_SEND event to listners.
Definition: PublisherFlush.h:358
PublisherFlush()
Constructor.
DataPortStatus write(ByteDataStreamBase *data, std::chrono::nanoseconds timeout=std::chrono::nanoseconds(-1)) override
Write data.
void onReceiverTimeout(ByteData &data)
Notify an ON_RECEIVER_TIMEOUT event to listeners.
Definition: PublisherFlush.h:400
void onReceiverFull(ByteData &data)
Notify an ON_RECEIVER_FULL event to listeners.
Definition: PublisherFlush.h:386
RT-Component.
DataPortStatus
DataPortStatus return codes.
Definition: DataPortStatus.h:114
coil::Properties Properties
Definition: RTC.h:72
Definition: DefaultPeriodicTask.h:24