OpenRTM  1.0.0
InPortBase.h
説明を見る。
1 // -*- C++ -*-
20 #ifndef RTC_INPORTBASE_H
21 #define RTC_INPORTBASE_H
22 
23 #include <rtm/PortBase.h>
24 #include <rtm/DataPortStatus.h>
25 #include <rtm/CdrBufferBase.h>
26 #include <rtm/ConnectorListener.h>
27 
42 namespace RTC
43 {
44  class InPortProvider;
45  class OutPortConsumer;
46  class InPortConnector;
47 
67  class InPortBase
68  : public PortBase, public DataPortStatus
69  {
70  public:
72 
73  typedef std::vector<InPortConnector*> ConnectorList;
74 
94  InPortBase(const char* name, const char* data_type);
95 
109  virtual ~InPortBase(void);
110 
126  void init(coil::Properties& prop);
127 
142  virtual bool read() = 0;
143 
160 
179  const std::vector<InPortConnector*>& connectors();
180 
200 
220 
240 
261  InPortConnector* getConnectorById(const char* id);
262 
283  InPortConnector* getConnectorByName(const char* name);
284 
307  bool getConnectorProfileById(const char* id,
308  ConnectorInfo& prof);
309 
332  bool getConnectorProfileByName(const char* name,
333  ConnectorInfo& prof);
334 
335 
352  virtual void activateInterfaces();
353 
370  virtual void deactivateInterfaces();
371 
448  ConnectorDataListener* listener,
449  bool autoclean = true);
450 
451 
472  ConnectorDataListener* listener);
473 
474 
527  void addConnectorListener(ConnectorListenerType callback_type,
528  ConnectorListener* listener,
529  bool autoclean = true);
530 
551  ConnectorListener* listener);
552 
570  bool isLittleEndian();
571 
597  virtual ReturnCode_t
598  connect(ConnectorProfile& connector_profile)
599  throw (CORBA::SystemException);
600 
601  protected:
602 
631  virtual ReturnCode_t
632  publishInterfaces(ConnectorProfile& connector_profile);
633 
661  virtual ReturnCode_t
662  subscribeInterfaces(const ConnectorProfile& connector_profile);
663 
685  virtual void
686  unsubscribeInterfaces(const ConnectorProfile& connector_profile);
687 
688 
696  void initProviders();
697 
705  void initConsumers();
706 
738  bool checkEndian(const coil::Properties& prop, bool& littleEndian);
739 
752  createProvider(ConnectorProfile& cprof, coil::Properties& prop);
753 
766  createConsumer(const ConnectorProfile& cprof, coil::Properties& prop);
767 
780  createConnector(ConnectorProfile& cprof, coil::Properties& prop,
781  InPortProvider* provider);
794  createConnector(const ConnectorProfile& cprof, coil::Properties& prop,
795  OutPortConsumer* consumer);
796 
797  protected:
862 
871  };
872 }; // namespace RTC
873 
874 #endif // RTC_INPORTBASE_H