OpenRTM-aist  1.2.1
OutPortBase.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_OUTPORTBASE_H
21 #define RTC_OUTPORTBASE_H
22 
23 #include <vector>
24 #include <string>
25 
26 #include <coil/Properties.h>
27 #include <coil/stringutil.h>
28 
29 #include <rtm/PortBase.h>
30 #include <rtm/InPortConsumer.h>
31 #include <rtm/OutPortProvider.h>
32 #include <rtm/ConnectorBase.h>
33 #include <rtm/CdrBufferBase.h>
34 #include <rtm/SystemLogger.h>
35 #include <rtm/ConnectorListener.h>
36 
37 #ifdef WIN32
38 #pragma warning( push )
39 #pragma warning( disable : 4290 )
40 #endif
41 
42 namespace RTC
43 {
44  class PublisherBase;
45  class ConnectorBase;
46  class OutPortConnector;
47 
236  : public PortBase, public DataPortStatus
237  {
238  public:
240 
241  typedef std::vector<OutPortConnector*> ConnectorList;
242 
262  OutPortBase(const char* name, const char* data_type);
263 
280  virtual ~OutPortBase(void);
281 
298  void init(coil::Properties& prop);
299 
321  virtual bool write() = 0;
322 
342 
361  const std::vector<OutPortConnector*>& connectors();
362 
382 
402 
422 
443  OutPortConnector* getConnectorById(const char* id);
444 
465  OutPortConnector* getConnectorByName(const char* name);
466 
489  bool getConnectorProfileById(const char* id,
490  ConnectorInfo& prof);
491 
514  bool getConnectorProfileByName(const char* name,
515  ConnectorInfo& prof);
516 
517 
534  virtual void activateInterfaces();
535 
552  virtual void deactivateInterfaces();
553 
554 
631  ConnectorDataListener* listener,
632  bool autoclean = true);
633 
634 
655  ConnectorDataListener* listener);
656 
657 
710  void addConnectorListener(ConnectorListenerType callback_type,
711  ConnectorListener* listener,
712  bool autoclean = true);
713 
734  ConnectorListener* listener);
735 
753  bool isLittleEndian();
754 
780  virtual ReturnCode_t
781  connect(ConnectorProfile& connector_profile)
782  throw (CORBA::SystemException);
783 
801  virtual ConnectorListeners& getListeners();
802 
803 
804  protected:
819  void configure();
820 
867  virtual ReturnCode_t
868  publishInterfaces(ConnectorProfile& connector_profile);
869 
908  virtual ReturnCode_t
909  subscribeInterfaces(const ConnectorProfile& connector_profile);
910 
942  virtual void
943  unsubscribeInterfaces(const ConnectorProfile& connector_profile);
944 
952  void initProviders();
953 
961  void initConsumers();
962 
998  bool checkEndian(const coil::Properties& prop, bool& littleEndian);
999 
1007  OutPortProvider* createProvider(ConnectorProfile& cprof,
1008  coil::Properties& prop);
1016  InPortConsumer* createConsumer(const ConnectorProfile& cprof,
1017  coil::Properties& prop);
1018 
1026  OutPortConnector* createConnector(const ConnectorProfile& cprof,
1027  coil::Properties& prop,
1028  InPortConsumer* consumer);
1036  OutPortConnector* createConnector(const ConnectorProfile& cprof,
1037  coil::Properties& prop,
1038  OutPortProvider* provider);
1039 
1040  virtual ReturnCode_t notify_connect(ConnectorProfile& connector_profile)
1041  throw (CORBA::SystemException);
1042 
1043 
1044  protected:
1052  InPortBase* getLocalInPort(const ConnectorInfo& profile);
1053 
1054 
1055 
1056 
1064  std::vector<OutPortConnector*> m_connectors;
1097 
1105  struct provider_cleanup;
1106 
1114  struct connector_cleanup;
1115  };
1116 }; // End of namespace RTC
1117 
1118 #ifdef WIN32
1119 #pragma warning( pop )
1120 #endif
1121 
1122 #endif // RTC_RTCOUTPORTBASE_H
RTC&#39;s Port base class.
ConnectorListeners クラス
Definition: ConnectorListener.h:1217
void configure()
OutPortの設定を行う
InPortBase * getLocalInPort(const ConnectorInfo &profile)
ローカルのピアInPortを取得
InPortConsumer 抽象クラス
Definition: InPortConsumer.h:76
DATAPORTSTATUS_ENUM typedef std::vector< OutPortConnector * > ConnectorList
Definition: OutPortBase.h:241
void initProviders()
OutPort provider の初期化
ConnectorInfoList getConnectorProfiles()
ConnectorProfile を取得
void addConnectorDataListener(ConnectorDataListenerType listener_type, ConnectorDataListener *listener, bool autoclean=true)
ConnectorDataListener リスナを追加する
#define DATAPORTSTATUS_ENUM
RTC::DataPortStatus 導入
Definition: DataPortStatus.h:233
OutPortConnector 基底クラス
Definition: OutPortConnector.h:54
coil::vstring getConnectorNames()
Connectorの名前を取得
RTコンポーネント
virtual bool write()=0
データ書き込み
coil::vstring getConnectorIds()
ConnectorId を取得
std::vector< OutPortConnector * > m_connectors
接続リスト
Definition: OutPortBase.h:1064
void initConsumers()
InPort consumer の初期化
OutPortConnector * getConnectorByName(const char *name)
ConnectorProfileを名前で取得
ConnectorListener クラス
Definition: ConnectorListener.h:831
ConnectorDataListener クラス
Definition: ConnectorListener.h:401
void addConnectorListener(ConnectorListenerType callback_type, ConnectorListener *listener, bool autoclean=true)
ConnectorListener リスナを追加する
RT component logger class.
OutPortConnector * createConnector(const ConnectorProfile &cprof, coil::Properties &prop, InPortConsumer *consumer)
OutPortPushConnector の生成
ConnectorInfo クラス
Definition: ConnectorBase.h:43
void removeConnectorListener(ConnectorListenerType callback_type, ConnectorListener *listener)
ConnectorDataListener リスナを削除する
ConnectorListeners m_listeners
ConnectorDataListener リスナ
Definition: OutPortBase.h:1096
const std::vector< OutPortConnector * > & connectors()
Connector を取得
std::vector< ConnectorInfo > ConnectorInfoList
Definition: ConnectorBase.h:129
virtual void deactivateInterfaces()
全ての Port のインターフェースを deactivate する
OutPortConnector * getConnectorById(const char *id)
ConnectorProfileをIDで取得
bool isLittleEndian()
endian 設定を返す
virtual void activateInterfaces()
全ての Port のインターフェースを activate する
virtual ConnectorListeners & getListeners()
リスナホルダを取得する
virtual ReturnCode_t subscribeInterfaces(const ConnectorProfile &connector_profile)
Interface に接続する
std::vector< std::string > vstring
Definition: stringutil.h:45
ConnectorDataListenerType
ConnectorDataListener のタイプ
Definition: ConnectorListener.h:138
virtual void unsubscribeInterfaces(const ConnectorProfile &connector_profile)
Interface の接続を解除する
Connector base class.
void removeConnectorDataListener(ConnectorDataListenerType listener_type, ConnectorDataListener *listener)
ConnectorDataListener リスナを削除する
Port の基底クラス
Definition: PortBase.h:135
bool getConnectorProfileById(const char *id, ConnectorInfo &prof)
ConnectorProfileをIDで取得
bool m_littleEndian
接続エンディアン
Definition: OutPortBase.h:1088
OutPortProvider class.
OutPortBase(const char *name, const char *data_type)
コンストラクタ
OutPort 基底クラス
Definition: OutPortBase.h:235
virtual ReturnCode_t notify_connect(ConnectorProfile &connector_profile)
[CORBA interface] Port の接続通知を行う
void init(coil::Properties &prop)
プロパティの初期化
InPort 用 Port.
Definition: InPortBase.h:74
OutPortProvider.
Definition: OutPortProvider.h:189
coil::vstring m_consumerTypes
利用可能consumer
Definition: OutPortBase.h:1080
ConnectorListenerType
ConnectorListener のタイプ
Definition: ConnectorListener.h:618
プロパティセットを表現するクラス
Definition: Properties.h:101
bool checkEndian(const coil::Properties &prop, bool &littleEndian)
シリアライザのエンディアンをチェックする
Property list class (derived from Java Properties)
bool getConnectorProfileByName(const char *name, ConnectorInfo &prof)
ConnectorProfileを名前で取得
coil::vstring m_providerTypes
利用可能provider
Definition: OutPortBase.h:1072
virtual ~OutPortBase(void)
デストラクタ
InPortConsumer * createConsumer(const ConnectorProfile &cprof, coil::Properties &prop)
InPort consumer の生成
DataPortStatus mixin クラス
Definition: DataPortStatus.h:54
InPortConsumer class.
OutPortProvider * createProvider(ConnectorProfile &cprof, coil::Properties &prop)
OutPort provider の生成
connector listener class
coil::Properties & properties()
プロパティを取得する
virtual ReturnCode_t connect(ConnectorProfile &connector_profile)
[CORBA interface] Port の接続を行う
virtual ReturnCode_t publishInterfaces(ConnectorProfile &connector_profile)
Interface 情報を公開する