OpenRTM-aist  2.1.0
OutPortBase.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_OUTPORTBASE_H
21 #define RTC_OUTPORTBASE_H
22 
23 #include <coil/Properties.h>
24 #include <coil/stringutil.h>
25 
26 #include <rtm/PortBase.h>
27 #include <rtm/InPortConsumer.h>
28 #include <rtm/OutPortProvider.h>
29 #include <rtm/ConnectorBase.h>
30 #include <rtm/CdrBufferBase.h>
31 #include <rtm/SystemLogger.h>
32 #include <rtm/ConnectorListener.h>
33 
34 namespace RTC
35 {
36  class PublisherBase;
37  class ConnectorBase;
38  class OutPortConnector;
39 
228  : public PortBase
229  {
230  public:
231 
232  using ConnectorList = std::vector<OutPortConnector*>;
233 
253  OutPortBase(const char* name, const char* data_type);
254 
271  ~OutPortBase() override;
272 
289  void init(coil::Properties& prop);
290 
312  virtual bool write() = 0;
313 
333 
352  const std::vector<OutPortConnector*>& connectors();
353 
373 
392  coil::vstring getConnectorIds();
393 
412  coil::vstring getConnectorNames();
413 
435 
457 
480  bool getConnectorProfileById(const char* id,
481  ConnectorInfo& prof);
482 
505  bool getConnectorProfileByName(const char* name,
506  ConnectorInfo& prof);
507 
508 
525  void activateInterfaces() override;
526 
543  void deactivateInterfaces() override;
544 
545 
622  ConnectorDataListener* listener,
623  bool autoclean = true);
624 
625 
646  ConnectorDataListener* listener);
647 
648 
702  ConnectorListener* listener,
703  bool autoclean = true);
704 
725  ConnectorListener* listener);
726 
745 
771  ReturnCode_t
772  connect(ConnectorProfile& connector_profile) override;
773 
792 
793 
794  protected:
809  void configure();
810 
857  ReturnCode_t
858  publishInterfaces(ConnectorProfile& cprof) override;
859 
898  ReturnCode_t
899  subscribeInterfaces(const ConnectorProfile& cprof) override;
900 
932  void
933  unsubscribeInterfaces(const ConnectorProfile& connector_profile) override;
934 
943 
952 
988  bool checkEndian(const coil::Properties& prop, bool& littleEndian);
989 
997  OutPortProvider* createProvider(ConnectorProfile& cprof,
998  coil::Properties& prop);
1006  InPortConsumer* createConsumer(const ConnectorProfile& cprof,
1007  coil::Properties& prop);
1008 
1016  OutPortConnector* createConnector(const ConnectorProfile& cprof,
1017  coil::Properties& prop,
1018  InPortConsumer* consumer);
1026  OutPortConnector* createConnector(const ConnectorProfile& cprof,
1027  coil::Properties& prop,
1028  OutPortProvider* provider);
1029 
1030  ReturnCode_t notify_connect(ConnectorProfile& connector_profile) override;
1031 
1032  protected:
1055  virtual void initConnectorListeners();
1056 
1057 
1058 
1066  std::vector<OutPortConnector*> m_connectors;
1074  coil::vstring m_providerTypes;
1082  coil::vstring m_consumerTypes;
1099 
1107  struct provider_cleanup;
1108 
1116  struct connector_cleanup;
1117  };
1118 } // End of namespace RTC
1119 
1120 #endif // RTC_RTCOUTPORTBASE_H
1121 
Connector base class
connector listener class
InPortConsumer class
OutPortProvider class
RTC's Port base class
RT component logger class
ConnectorDataListener クラス
Definition: ConnectorListener.h:408
ConnectorInfo クラス
Definition: ConnectorBase.h:50
ConnectorListener クラス
Definition: ConnectorListener.h:884
Definition: ConnectorListener.h:1354
InPort 用 Port
Definition: InPortBase.h:70
InPortConsumer 抽象クラス
Definition: InPortConsumer.h:78
OutPort 基底クラス
Definition: OutPortBase.h:229
bool m_littleEndian
接続エンディアン
Definition: OutPortBase.h:1090
coil::vstring getConnectorIds()
ConnectorId を取得
void activateInterfaces() override
全ての Port のインターフェースを activate する
std::vector< OutPortConnector * > ConnectorList
Definition: OutPortBase.h:232
InPortBase * getLocalInPort(const ConnectorInfo &profile)
ローカルのピアInPortを取得
void addConnectorDataListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)
ConnectorDataListener リスナを追加する
InPortConsumer * createConsumer(const ConnectorProfile &cprof, coil::Properties &prop)
InPort consumer の生成
void init(coil::Properties &prop)
プロパティの初期化
virtual bool write()=0
データ書き込み
void initConsumers()
InPort consumer の初期化
coil::vstring m_consumerTypes
利用可能consumer
Definition: OutPortBase.h:1082
coil::vstring getConnectorNames()
Connectorの名前を取得
OutPortConnector * getConnectorById(const char *id)
ConnectorProfileをIDで取得
OutPortProvider * createProvider(ConnectorProfile &cprof, coil::Properties &prop)
OutPort provider の生成
OutPortConnector * getConnectorByName(const char *name)
ConnectorProfileを名前で取得
void configure()
OutPortの設定を行う
bool getConnectorProfileByName(const char *name, ConnectorInfo &prof)
ConnectorProfileを名前で取得
void removeConnectorListener(ConnectorListenerType type, ConnectorListener *listener)
ConnectorDataListener リスナを削除する
~OutPortBase() override
デストラクタ
ConnectorInfoList getConnectorProfiles()
ConnectorProfile を取得
OutPortConnector * createConnector(const ConnectorProfile &cprof, coil::Properties &prop, InPortConsumer *consumer)
OutPortPushConnector の生成
ConnectorListenersBase * m_listeners
ConnectorDataListener リスナ
Definition: OutPortBase.h:1098
const std::vector< OutPortConnector * > & connectors()
Connector を取得
void initProviders()
OutPort provider の初期化
bool getConnectorProfileById(const char *id, ConnectorInfo &prof)
ConnectorProfileをIDで取得
ReturnCode_t connect(ConnectorProfile &connector_profile) override
[CORBA interface] Port の接続を行う
virtual ConnectorListenersBase * getListeners()
リスナホルダを取得する
coil::Properties & properties()
プロパティを取得する
OutPortBase(const char *name, const char *data_type)
コンストラクタ
ReturnCode_t notify_connect(ConnectorProfile &connector_profile) override
std::vector< OutPortConnector * > m_connectors
接続リスト
Definition: OutPortBase.h:1066
ReturnCode_t subscribeInterfaces(const ConnectorProfile &cprof) override
Interface に接続する
virtual void initConnectorListeners()
コネクタリスナの初期化
void unsubscribeInterfaces(const ConnectorProfile &connector_profile) override
Interface の接続を解除する
void removeConnectorDataListener(ConnectorDataListenerType type, ConnectorDataListener *listener)
ConnectorDataListener リスナを削除する
OutPortConnector * createConnector(const ConnectorProfile &cprof, coil::Properties &prop, OutPortProvider *provider)
OutPortPullConnector の生成
bool checkEndian(const coil::Properties &prop, bool &littleEndian)
シリアライザのエンディアンをチェックする
bool isLittleEndian()
endian 設定を返す
void addConnectorListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true)
ConnectorListener リスナを追加する
coil::vstring m_providerTypes
利用可能provider
Definition: OutPortBase.h:1074
ReturnCode_t publishInterfaces(ConnectorProfile &cprof) override
Interface 情報を公開する
void deactivateInterfaces() override
全ての Port のインターフェースを deactivate する
OutPortConnector 基底クラス
Definition: OutPortConnector.h:58
OutPortProvider
Definition: OutPortProvider.h:190
Port の基底クラス
Definition: PortBase.h:132
RTコンポーネント
ConnectorDataListenerType
ConnectorDataListener のタイプ
Definition: ConnectorListener.h:144
coil::Properties Properties
Definition: RTC.h:72
ConnectorListenerType
ConnectorListener のタイプ
Definition: ConnectorListener.h:670
std::vector< ConnectorInfo > ConnectorInfoList
Definition: ConnectorBase.h:181