OpenRTM-aist  1.2.1
InPortConnector.h
Go to the documentation of this file.
1 // -*- C++ -*-
20 #ifndef RTC_INPORTCONNECTOR_H
21 #define RTC_INPORTCONNECTOR_H
22 
23 #include <rtm/ConnectorListener.h>
24 #include <rtm/ConnectorBase.h>
25 #include <rtm/DirectOutPortBase.h>
26 #include <rtm/PortBase.h>
27 
28 
29 namespace RTC
30 {
31  class OutPortBase;
52  : public ConnectorBase
53  {
54  public:
72  ConnectorListeners& listeners,
73  CdrBufferBase* buffer);
74 
82  virtual ~InPortConnector();
83 
101  virtual const ConnectorInfo& profile();
102 
120  virtual const char* id();
121 
139  virtual const char* name();
140 
158  virtual ReturnCode disconnect() = 0;
159 
177  virtual CdrBufferBase* getBuffer();
178 
199  virtual ReturnCode read(cdrMemoryStream& data) = 0;
200 
218  virtual void setEndian(const bool endian_type);
219 
237  virtual bool isLittleEndian();
238 
239 
257  bool setOutPort(OutPortBase* directOutPort);
258 
259  template <typename DataType>
260  bool getDirectData(DataType &data)
261  {
262  if (m_directOutPort == NULL)
263  {
264  return false;
265  }
267  outport = static_cast<DirectOutPortBase<DataType>*>(m_directOutPort->getDirectPort());
268 
269 
270  if (outport->isEmpty())
271  {
272  m_listeners.
273  connector_[ON_BUFFER_EMPTY].notify(m_profile);
275  connector_[ON_SENDER_EMPTY].notify(m_profile);
276  RTC_PARANOID(("ON_BUFFER_EMPTY(InPort,OutPort), "
277  "ON_SENDER_EMPTY(InPort,OutPort) "
278  "callback called in direct mode."));
279  }
280  outport->read(data);
282  RTC_TRACE(("ON_BUFFER_READ(OutPort), "));
283  RTC_TRACE(("callback called in direct mode."));
285  RTC_TRACE(("ON_SEND(OutPort), "));
286  RTC_TRACE(("callback called in direct mode."));
288  RTC_TRACE(("ON_RECEIVED(InPort), "));
289  RTC_TRACE(("callback called in direct mode."));
291  RTC_TRACE(("ON_BUFFER_WRITE(InPort), "));
292  RTC_TRACE(("callback called in direct mode."));
293 
294 
295  return true;
296 
297  };
298 
299  protected:
307  Logger rtclog;
356 
357  };
358 }; // namespace RTC
359 
360 #endif // RTC_INPORTCONNECTOR_H
PortBase * m_directOutPort
OutProt pointer to the peer in the same process.
Definition: InPortConnector.h:355
Definition: ConnectorListener.h:622
RTC&#39;s Port base class.
ConnectorListeners class.
Definition: ConnectorListener.h:1217
ConnectorInfo m_profile
ConnectorInfo.
Definition: InPortConnector.h:315
InPortConnector base class.
Definition: InPortConnector.h:51
virtual void setEndian(const bool endian_type)
Setting an endian type.
#define DATAPORTSTATUS_ENUM
Importing RTC::DataPortStatus macro.
Definition: DataPortStatus.h:233
virtual ReturnCode read(cdrMemoryStream &data)=0
Destructor.
RT-Component.
DirectOutPortBase class.
#define RTC_TRACE(fmt)
Trace level log output macro.
Definition: SystemLogger.h:588
virtual ~InPortConnector()
Destructor.
virtual DirectPortBase * getDirectPort()
Definition: ConnectorListener.h:146
Connector Base class.
Definition: ConnectorBase.h:156
Definition: ConnectorBase.h:43
virtual bool isEmpty()
Definition: DirectOutPortBase.h:128
bool setOutPort(OutPortBase *directOutPort)
virtual const ConnectorInfo & profile()
Getting ConnectorInfo.
CdrBufferBase * m_buffer
Connector&#39;s buffer.
Definition: InPortConnector.h:331
#define RTC_PARANOID(fmt)
Paranoid level log output macro.
Definition: SystemLogger.h:633
ConnectorListeners & m_listeners
A reference to a ConnectorListener.
Definition: InPortConnector.h:323
Definition: ConnectorListener.h:145
virtual ReturnCode disconnect()=0
Disconnect connection.
Connector base class.
ConnectorDataListenerHolder connectorData_[CONNECTOR_DATA_LISTENER_NUM]
ConnectorDataListenerType listener array The ConnectorDataListenerType listener is stored...
Definition: ConnectorListener.h:1229
Port base class.
Definition: PortBase.h:135
ConnectorListeners * m_outPortListeners
A pointer to a OutPort&#39;s ConnectorListener.
Definition: InPortConnector.h:347
ReturnCode notify(ConnectorInfo &info, cdrMemoryStream &cdrdata)
Notify listeners.
Definition: DirectOutPortBase.h:48
Output base class.
Definition: OutPortBase.h:235
Logger class.
Definition: SystemLogger.h:99
Definition: ConnectorListener.h:144
virtual CdrBufferBase * getBuffer()
Getting Buffer.
virtual bool isLittleEndian()
Whether this connector&#39;s endian is little.
Logger rtclog
Logger stream.
Definition: InPortConnector.h:297
virtual const char * id()
Getting Connector ID.
Definition: ConnectorListener.h:620
virtual void read(DataType &data)
Definition: DirectOutPortBase.h:95
virtual const char * name()
Getting Connector name.
BufferBase abstract class.
Definition: BufferBase.h:104
DATAPORTSTATUS_ENUM InPortConnector(ConnectorInfo &info, ConnectorListeners &listeners, CdrBufferBase *buffer)
Constructor.
connector listener class
bool m_littleEndian
Connected Endian.
Definition: InPortConnector.h:339
bool getDirectData(DataType &data)
Definition: InPortConnector.h:260