OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
InPortConnector.h
Go to the documentation of this file.
1// -*- C++ -*-
20#ifndef RTC_INPORTCONNECTOR_H
21#define RTC_INPORTCONNECTOR_H
22
24#include <rtm/ConnectorBase.h>
26#include <rtm/PortBase.h>
27#include <rtm/ByteData.h>
28
29
30namespace RTC
31{
32 class OutPortBase;
53 : public ConnectorBase
54 {
55 public:
72 ConnectorListenersBase* listeners,
73 CdrBufferBase* buffer);
74
82 ~InPortConnector() override;
83
101 const ConnectorInfo& profile() override;
102
120 const char* id() override;
121
139 const char* name() override;
140
159
178
200
201
220 template<class DataType>
221 DataPortStatus read(DataType& data)
222 {
223 if(m_cdr == nullptr)
224 {
226 }
228
229 if (!cdr)
230 {
231 RTC_ERROR(("Can not find Marshalizer: %s", m_marshaling_type.c_str()));
233 }
236 if (ret == DataPortStatus::PORT_OK)
237 {
238 cdr->deserialize(data);
239 }
240 return ret;
241 }
242
260 virtual void setEndian(bool endian_type);
261
279 virtual bool isLittleEndian();
280
282
283
301 bool setOutPort(OutPortBase* directOutPort);
302
320 template <typename DataType>
321 bool getDirectData(DataType &data)
322 {
323 if (m_directOutPort == nullptr)
324 {
325 return false;
326 }
328 outport = dynamic_cast<DirectOutPortBase<DataType>*>(m_directOutPort->getDirectPort());
329
330 if(outport)
331 {
332 if (outport->isEmpty())
333 {
335 m_profile);
338 m_profile);
339 RTC_PARANOID(("ON_BUFFER_EMPTY(InPort,OutPort), "
340 "ON_SENDER_EMPTY(InPort,OutPort) "
341 "callback called in direct mode."));
342 }
343 outport->read(data);
346 m_profile, data);
347 RTC_TRACE(("ON_BUFFER_READ(OutPort), "));
348 RTC_TRACE(("callback called in direct mode."));
350 m_profile, data);
351 RTC_TRACE(("ON_SEND(OutPort), "));
352 RTC_TRACE(("callback called in direct mode."));
354 m_profile, data);
355 RTC_TRACE(("ON_RECEIVED(InPort), "));
356 RTC_TRACE(("callback called in direct mode."));
358 m_profile, data);
359 RTC_TRACE(("ON_BUFFER_WRITE(InPort), "));
360 RTC_TRACE(("callback called in direct mode."));
361
362
363 return true;
364 }
365 return false;
366 }
367
381 virtual void unsubscribeInterface(const coil::Properties& prop);
382
383 protected:
440
448 std::string m_marshaling_type;
449
458
459 };
460} // namespace RTC
461
462#endif // RTC_INPORTCONNECTOR_H
Connector base class.
connector listener class
DirectOutPortBase class.
RTC's Port base class.
#define RTC_PARANOID(fmt)
Paranoid level log output macro.
Definition SystemLogger.h:732
#define RTC_TRACE(fmt)
Trace level log output macro.
Definition SystemLogger.h:687
#define RTC_ERROR(fmt)
Error log output macro.
Definition SystemLogger.h:599
DataPortStatus mixin class.
BufferBase abstract class.
Definition BufferBase.h:106
Definition ByteDataStreamBase.h:63
virtual void isLittleEndian(bool little_endian)
Definition ByteDataStreamBase.h:200
virtual bool deserialize(DataType &data)=0
Definition ByteData.h:30
Connector Base class.
Definition ConnectorBase.h:209
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)
virtual::RTC::ConnectorListenerStatus::Enum notifyOut(ConnectorDataListenerType type, ConnectorInfo &info, ByteData &data)=0
Notify listeners. (Typed data version)
virtual::RTC::ConnectorListenerStatus::Enum notify(ConnectorListenerType type, ConnectorInfo &info)=0
Virtual Callback method.
Definition DirectOutPortBase.h:48
virtual void read(DataType &data)=0
virtual bool isEmpty()=0
InPortConnector base class.
Definition InPortConnector.h:54
DataPortStatus disconnect() override=0
Disconnect connection.
virtual BufferStatus write(ByteData &cdr)
std::string m_marshaling_type
Definition InPortConnector.h:448
virtual void unsubscribeInterface(const coil::Properties &prop)
bool setOutPort(OutPortBase *directOutPort)
const char * name() override
Getting Connector name.
CdrBufferBase * getBuffer() override
Getting Buffer.
ByteDataStreamBase * m_cdr
Definition InPortConnector.h:457
bool m_littleEndian
Connected Endian .
Definition InPortConnector.h:423
const char * id() override
Getting Connector ID.
Logger rtclog
Logger stream .
Definition InPortConnector.h:391
ConnectorInfo m_profile
ConnectorInfo .
Definition InPortConnector.h:399
bool getDirectData(DataType &data)
Definition InPortConnector.h:321
const ConnectorInfo & profile() override
Getting ConnectorInfo.
ConnectorListenersBase * m_listeners
A reference to a ConnectorListener .
Definition InPortConnector.h:407
PortBase * m_directOutPort
OutProt pointer to the peer in the same process .
Definition InPortConnector.h:439
virtual bool isLittleEndian()
Whether this connector's endian is little.
virtual void setEndian(bool endian_type)
Setting an endian type.
DataPortStatus read(DataType &data)
Definition InPortConnector.h:221
virtual DataPortStatus read(ByteDataStreamBase *data)=0
Destructor.
ConnectorListenersBase * m_outPortListeners
A pointer to a OutPort's ConnectorListener .
Definition InPortConnector.h:431
~InPortConnector() override
Destructor .
InPortConnector(ConnectorInfo &info, ConnectorListenersBase *listeners, CdrBufferBase *buffer)
Constructor.
CdrBufferBase * m_buffer
Connector's buffer .
Definition InPortConnector.h:415
Logger class.
Definition SystemLogger.h:101
Output base class.
Definition OutPortBase.h:229
Port base class.
Definition PortBase.h:132
virtual DirectPortBase * getDirectPort()
RT-Component.
::RTC::ByteDataStreamBase * createSerializer(const std::string &marshalingtype)
Definition ByteDataStreamBase.h:363
BufferStatus
DataPortStatus return codes.
Definition BufferStatus.h:57