OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
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>
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.
DataPortStatus mixin class.
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.
coil::Properties Properties
Definition RTC.h:72
DataPortStatus
DataPortStatus return codes.
Definition DataPortStatus.h:114
Definition DefaultPeriodicTask.h:24