OpenRTM-aist  2.1.0
OutPortBase.h
Go to the documentation of this file.
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 class.
Definition: ConnectorListener.h:408
ConnectorInfo class.
Definition: ConnectorBase.h:50
ConnectorListener class.
Definition: ConnectorListener.h:884
Definition: ConnectorListener.h:1354
Port for InPort.
Definition: InPortBase.h:70
InPortConsumer abstract class.
Definition: InPortConsumer.h:78
Output base class.
Definition: OutPortBase.h:229
bool m_littleEndian
Connected Endian.
Definition: OutPortBase.h:1090
coil::vstring getConnectorIds()
ConnectorId list.
void activateInterfaces() override
Activate all Port interfaces.
std::vector< OutPortConnector * > ConnectorList
Definition: OutPortBase.h:232
InPortBase * getLocalInPort(const ConnectorInfo &profile)
Getting local peer InPort if available.
void addConnectorDataListener(ConnectorDataListenerType type, ConnectorDataListener *listener, bool autoclean=true)
Adding BufferDataListener type listener.
InPortConsumer * createConsumer(const ConnectorProfile &cprof, coil::Properties &prop)
InPort consumer creation.
void init(coil::Properties &prop)
Initializing properties.
virtual bool write()=0
Write data.
void initConsumers()
InPort consumer initialization.
coil::vstring m_consumerTypes
Available consumers.
Definition: OutPortBase.h:1082
coil::vstring getConnectorNames()
Connector name list.
OutPortConnector * getConnectorById(const char *id)
Getting ConnectorProfile by ID.
OutPortProvider * createProvider(ConnectorProfile &cprof, coil::Properties &prop)
OutPort provider creation.
OutPortConnector * getConnectorByName(const char *name)
Getting Connector by name.
void configure()
Configureing outport.
bool getConnectorProfileByName(const char *name, ConnectorInfo &prof)
Getting ConnectorProfile by name.
void removeConnectorListener(ConnectorListenerType type, ConnectorListener *listener)
Removing BufferDataListener type listener.
~OutPortBase() override
Destructor.
ConnectorInfoList getConnectorProfiles()
ConnectorProfile list.
OutPortConnector * createConnector(const ConnectorProfile &cprof, coil::Properties &prop, InPortConsumer *consumer)
OutPortPushConnector creation.
ConnectorListenersBase * m_listeners
ConnectorDataListener listener.
Definition: OutPortBase.h:1098
const std::vector< OutPortConnector * > & connectors()
Connector list.
void initProviders()
OutPort provider initialization.
bool getConnectorProfileById(const char *id, ConnectorInfo &prof)
Getting ConnectorProfile by name.
ReturnCode_t connect(ConnectorProfile &connector_profile) override
[CORBA interface] Connect the Port
virtual ConnectorListenersBase * getListeners()
Getting listeners holder.
coil::Properties & properties()
Get properties.
OutPortBase(const char *name, const char *data_type)
Constructor.
ReturnCode_t notify_connect(ConnectorProfile &connector_profile) override
std::vector< OutPortConnector * > m_connectors
Connection list.
Definition: OutPortBase.h:1066
ReturnCode_t subscribeInterfaces(const ConnectorProfile &cprof) override
Subscribe to the interface.
virtual void initConnectorListeners()
void unsubscribeInterfaces(const ConnectorProfile &connector_profile) override
Disconnect the interface connection.
void removeConnectorDataListener(ConnectorDataListenerType type, ConnectorDataListener *listener)
Removing BufferDataListener type listener.
OutPortConnector * createConnector(const ConnectorProfile &cprof, coil::Properties &prop, OutPortProvider *provider)
OutPortPullConnector creation.
bool checkEndian(const coil::Properties &prop, bool &littleEndian)
Checking endian flag of serializer.
bool isLittleEndian()
return it whether endian setting.
void addConnectorListener(ConnectorListenerType type, ConnectorListener *listener, bool autoclean=true)
Adding ConnectorListener type listener.
coil::vstring m_providerTypes
Available providers.
Definition: OutPortBase.h:1074
ReturnCode_t publishInterfaces(ConnectorProfile &cprof) override
Publish interface information.
void deactivateInterfaces() override
Deactivate all Port interfaces.
OutPortConnector base class.
Definition: OutPortConnector.h:58
OutPortProvider.
Definition: OutPortProvider.h:190
Port base class.
Definition: PortBase.h:132
RT-Component.
ConnectorDataListenerType
The types of ConnectorDataListener.
Definition: ConnectorListener.h:144
coil::Properties Properties
Definition: RTC.h:72
ConnectorListenerType
The types of ConnectorListener.
Definition: ConnectorListener.h:670
std::vector< ConnectorInfo > ConnectorInfoList
Definition: ConnectorBase.h:181