OpenRTM-aist  2.1.0
InPortPushConnector.h
Go to the documentation of this file.
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.
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 notify(ConnectorListenerType type, ConnectorInfo &info)=0
Virtual Callback method.
virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
InPortConnector base class.
Definition: InPortConnector.h:54
ConnectorInfo m_profile
ConnectorInfo.
Definition: InPortConnector.h:399
InPortProvider.
Definition: InPortProvider.h:191
InPortPushConnector class.
Definition: InPortPushConnector.h:82
~InPortPushConnector() override
Destructor.
InPortPushConnector(ConnectorInfo info, InPortProvider *provider, ConnectorListenersBase *listeners, CdrBufferBase *buffer=nullptr)
DataPortStatus disconnect() override
disconnect
void onBufferReadTimeout(ByteData &)
Definition: InPortPushConnector.h:287
void onDisconnect()
Invoke callback when connection is destroied.
void deactivate() override
Connector deactivation.
Definition: InPortPushConnector.h:232
BufferStatus write(ByteData &cdr) override
void onBufferEmpty(ByteData &)
Definition: InPortPushConnector.h:282
virtual CdrBufferBase * createBuffer(ConnectorInfo &info)
create buffer
void activate() override
Connector activation.
Definition: InPortPushConnector.h:216
void onConnect()
Invoke callback when connection is established.
DataPortStatus read(ByteDataStreamBase *data) override
Reading data.
void onBufferRead(ByteData &data)
Definition: InPortPushConnector.h:276
RT-Component.
BufferStatus
DataPortStatus return codes.
Definition: BufferStatus.h:57