OpenRTM-aist  2.1.0
InPortDSProvider.h
Go to the documentation of this file.
1 // -*- C++ -*-
18 #ifndef RTC_INPORTDSPROVIDER_H
19 #define RTC_INPORTDSPROVIDER_H
20 
21 #include <rtm/idl/DataPortSkel.h>
22 #include <rtm/BufferBase.h>
23 #include <rtm/InPortProvider.h>
24 #include <rtm/CORBA_SeqUtil.h>
25 #include <rtm/Manager.h>
26 #include <rtm/ConnectorListener.h>
27 #include <rtm/ConnectorBase.h>
28 
29 namespace RTC
30 {
56  : public InPortProvider,
57  public virtual POA_RTC::DataPushService,
58  public virtual PortableServer::RefCountServantBase
59  {
60  public:
75 
89  ~InPortDSProvider() override;
90 
118  void init(coil::Properties& prop) override;
119 
145  void setBuffer(BufferBase<ByteData>* buffer) override;
146 
196  ConnectorListenersBase* listeners) override;
197 
222  void setConnector(InPortConnector* connector) override;
223 
241  ::RTC::PortStatus push(const ::RTC::OctetSeq& data) override;
242 
243  private:
251  ::RTC::PortStatus
252  convertReturn(BufferStatus status,
253  ByteData& data);
254 
255 
265  inline void onBufferWrite(ByteData& data)
266  {
267  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_WRITE, m_profile, data);
268  }
269 
279  inline void onBufferFull(ByteData& data)
280  {
281  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_FULL, m_profile, data);
282  }
283 
293  inline void onBufferWriteTimeout(ByteData& data)
294  {
295  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_WRITE_TIMEOUT, m_profile, data);
296  }
297 
307  inline void onBufferWriteOverwrite(ByteData& data)
308  {
309  m_listeners->notifyIn(ConnectorDataListenerType::ON_BUFFER_OVERWRITE, m_profile, data);
310  }
311 
321  inline void onReceived(ByteData& data)
322  {
323  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVED, m_profile, data);
324  }
325 
335  inline void onReceiverFull(ByteData& data)
336  {
337  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_FULL, m_profile, data);
338  }
339 
347  inline void onReceiverTimeout(ByteData& data)
348  {
349  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_TIMEOUT, m_profile, data);
350  }
351 
359  inline void onReceiverError(ByteData& data)
360  {
361  m_listeners->notifyIn(ConnectorDataListenerType::ON_RECEIVER_ERROR, m_profile, data);
362  }
363 
364  private:
365  CdrBufferBase* m_buffer{nullptr};
366  ::RTC::DataPushService_var m_objref;
367  ConnectorListenersBase* m_listeners;
368  ConnectorInfo m_profile;
369  InPortConnector* m_connector{nullptr};
370  ByteData m_cdr;
371 
372  }; // class InPortDSProvider
373 } // namespace RTC
374 
375 extern "C"
376 {
391 }
392 
393 #endif // RTC_INPORTDSPROVIDER_H
394 
Buffer abstract class.
CORBA sequence utility template functions.
Connector base class.
connector listener class
void InPortDSProviderInit(void)
Module initialization.
InPortProvider class.
-*- C++ -*-
BufferBase abstract class.
Definition: BufferBase.h:106
Definition: ByteData.h:30
ConnectorInfo class.
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
virtual ::RTC::ConnectorListenerStatus::Enum notifyIn(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
InPortConnector base class.
Definition: InPortConnector.h:54
InPortDSProvider class.
Definition: InPortDSProvider.h:59
~InPortDSProvider() override
Destructor.
void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners) override
Set the listener.
void setBuffer(BufferBase< ByteData > *buffer) override
Setting outside buffer's pointer.
::RTC::PortStatus push(const ::RTC::OctetSeq &data) override
[CORBA interface] Write data into the buffer
void setConnector(InPortConnector *connector) override
set Connector
void init(coil::Properties &prop) override
Initializing configuration.
InPortDSProvider()
Constructor.
InPortProvider.
Definition: InPortProvider.h:191
RT-Component.
BufferBase< ByteData > CdrBufferBase
Definition: CdrBufferBase.h:31
coil::Properties Properties
Definition: RTC.h:72
BufferStatus
DataPortStatus return codes.
Definition: BufferStatus.h:57