OpenRTM-aist  2.1.0
OutPortConsumer.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_OUTPORTCONSUMER_H
21 #define RTC_OUTPORTCONSUMER_H
22 
23 #include <coil/Factory.h>
24 #include <rtm/DataPortStatus.h>
25 #include <rtm/CdrBufferBase.h>
26 #include <rtm/SystemLogger.h>
27 
28 // Why RtORB does not allow the following foward declaration?
29 #if !defined(ORB_IS_RTORB) && !defined(ORB_IS_ORBEXPRESS)
30 namespace SDOPackage
31 {
32  class NVList;
33 } // namespace SDOPackage
34 #endif // ORB_IS_RTORB
35 
36 namespace coil
37 {
38  class Properties;
39 } // namespace coil
40 
41 namespace RTC
42 {
43  class ConnectorListenersBase;
44  class ConnectorInfo;
45 
173  {
174  public:
175 
190  virtual ~OutPortConsumer() = default;
191 
219  virtual void init(coil::Properties& prop) = 0;
220 
246  virtual void setBuffer(CdrBufferBase* buffer) = 0;
247 
278  virtual void setListener(ConnectorInfo& info,
279  ConnectorListenersBase* listeners) = 0;
280 
307  virtual DataPortStatus get(ByteData& data) = 0;
308 
334  virtual bool subscribeInterface(const SDOPackage::NVList& properties) = 0;
335 
359  virtual void unsubscribeInterface(const SDOPackage::NVList& properties) = 0;
360 
361  protected:
362 
370  struct subscribe
371  {
372  explicit subscribe(const SDOPackage::NVList& prop) : m_prop(prop) {}
373  void operator()(OutPortConsumer* consumer)
374  {
375  consumer->subscribeInterface(m_prop);
376  }
377  const SDOPackage::NVList& m_prop;
378  };
379 
387  struct unsubscribe
388  {
389  explicit unsubscribe(const SDOPackage::NVList& prop) : m_prop(prop) {}
390  void operator()(OutPortConsumer* consumer)
391  {
392  consumer->unsubscribeInterface(m_prop);
393  }
394  const SDOPackage::NVList& m_prop;
395  };
396  };
397 
405  using OutPortConsumerFactory = ::coil::GlobalFactory<OutPortConsumer>;
406 } // namespace RTC
407 
408 
409 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
410 EXTERN template class DLL_PLUGIN coil::GlobalFactory<RTC::OutPortConsumer>;
411 #elif defined(__GNUC__)
412 EXTERN template class coil::GlobalFactory<RTC::OutPortConsumer>;
413 #endif
414 
415 #endif // RTC_OUTPORTCONSUMER_H
416 
DataPortStatus class
RT component logger class
BufferBase 抽象クラス
Definition: BufferBase.h:106
シリアライズ後のバイト列を操作するクラス
Definition: ByteData.h:30
ConnectorInfo クラス
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
OutPortConsumer 抽象クラス
Definition: OutPortConsumer.h:173
virtual void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners)=0
リスナを設定する。
virtual void setBuffer(CdrBufferBase *buffer)=0
バッファをセットする
virtual void unsubscribeInterface(const SDOPackage::NVList &properties)=0
データ受信通知からの登録解除
virtual bool subscribeInterface(const SDOPackage::NVList &properties)=0
データ受信通知への登録
virtual DataPortStatus get(ByteData &data)=0
データを受信する
virtual void init(coil::Properties &prop)=0
設定初期化
virtual ~OutPortConsumer()=default
デストラクタ
RTコンポーネント
::coil::GlobalFactory< OutPortConsumer > OutPortConsumerFactory
OutPortConsumerFactory型宣言
Definition: OutPortConsumer.h:405
DataPortStatus
Definition: DataPortStatus.h:114
coil::Properties Properties
Definition: RTC.h:72
SDO パッケージ
Definition: InPortConsumer.h:35
Definition: DefaultPeriodicTask.h:24
Interface接続用Functor
Definition: OutPortConsumer.h:371
void operator()(OutPortConsumer *consumer)
Definition: OutPortConsumer.h:373
subscribe(const SDOPackage::NVList &prop)
Definition: OutPortConsumer.h:372
const SDOPackage::NVList & m_prop
Definition: OutPortConsumer.h:377
Interface接続解除用Functor
Definition: OutPortConsumer.h:388
unsubscribe(const SDOPackage::NVList &prop)
Definition: OutPortConsumer.h:389
const SDOPackage::NVList & m_prop
Definition: OutPortConsumer.h:394
void operator()(OutPortConsumer *consumer)
Definition: OutPortConsumer.h:390