OpenRTM-aist  1.2.1
InPortConnector.h
[詳解]
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
同一プロセス上のピアOutPortのポインタ
Definition: InPortConnector.h:355
Definition: ConnectorListener.h:622
RTC&#39;s Port base class.
ConnectorListeners クラス
Definition: ConnectorListener.h:1217
ConnectorInfo m_profile
ConnectorInfo.
Definition: InPortConnector.h:315
InPortConnector 基底クラス
Definition: InPortConnector.h:51
virtual void setEndian(const bool endian_type)
endianタイプ設定
#define DATAPORTSTATUS_ENUM
RTC::DataPortStatus 導入
Definition: DataPortStatus.h:233
virtual ReturnCode read(cdrMemoryStream &data)=0
read 関数
RTコンポーネント
DirectOutPortBase class.
#define RTC_TRACE(fmt)
トレースログ出力マクロ。
Definition: SystemLogger.h:588
virtual ~InPortConnector()
デストラクタ
virtual DirectPortBase * getDirectPort()
direct通信用ポートオブジェクト取得
Definition: ConnectorListener.h:146
Connector 基底クラス
Definition: ConnectorBase.h:156
ConnectorInfo クラス
Definition: ConnectorBase.h:43
virtual bool isEmpty()
新規データが無いことを確認
Definition: DirectOutPortBase.h:128
bool setOutPort(OutPortBase *directOutPort)
データをダイレクトに書き込むためのOutPortのサーバントを設定する
virtual const ConnectorInfo & profile()
ConnectorInfo 取得
CdrBufferBase * m_buffer
Connector が保持している Buffer.
Definition: InPortConnector.h:331
#define RTC_PARANOID(fmt)
パラノイドログ出力マクロ。
Definition: SystemLogger.h:633
ConnectorListeners & m_listeners
ConnectorListenrs への参照
Definition: InPortConnector.h:323
Definition: ConnectorListener.h:145
virtual ReturnCode disconnect()=0
接続解除関数
Connector base class.
ConnectorDataListenerHolder connectorData_[CONNECTOR_DATA_LISTENER_NUM]
ConnectorDataListenerTypeリスナ配列 ConnectorDataListenerTypeリスナを格納
Definition: ConnectorListener.h:1229
Port の基底クラス
Definition: PortBase.h:135
ConnectorListeners * m_outPortListeners
OutPort 側の ConnectorListenrs への参照
Definition: InPortConnector.h:347
ReturnCode notify(ConnectorInfo &info, cdrMemoryStream &cdrdata)
リスナーへ通知する
direct接続用OutPort基底クラス
Definition: DirectOutPortBase.h:48
OutPort 基底クラス
Definition: OutPortBase.h:235
Logger クラス
Definition: SystemLogger.h:99
Definition: ConnectorListener.h:144
virtual CdrBufferBase * getBuffer()
Buffer を取得する
virtual bool isLittleEndian()
endian 設定を返す
Logger rtclog
ロガーストリーム
Definition: InPortConnector.h:297
virtual const char * id()
Connector ID 取得
Definition: ConnectorListener.h:620
virtual void read(DataType &data)
データの取得
Definition: DirectOutPortBase.h:95
virtual const char * name()
Connector 名取得
BufferBase 抽象クラス
Definition: BufferBase.h:104
DATAPORTSTATUS_ENUM InPortConnector(ConnectorInfo &info, ConnectorListeners &listeners, CdrBufferBase *buffer)
コンストラクタ
connector listener class
bool m_littleEndian
接続エンディアン
Definition: InPortConnector.h:339
bool getDirectData(DataType &data)
Definition: InPortConnector.h:260