OutPortBase.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00020 #ifndef OutPortBase_h
00021 #define OutPortBase_h
00022 
00023 #include <vector>
00024 #include <string>
00025 
00026 #include <coil/Properties.h>
00027 #include <coil/stringutil.h>
00028 
00029 #include <rtm/PortBase.h>
00030 #include <rtm/InPortConsumer.h>
00031 #include <rtm/OutPortProvider.h>
00032 #include <rtm/ConnectorBase.h>
00033 #include <rtm/CdrBufferBase.h>
00034 #include <rtm/SystemLogger.h>
00035 
00036 namespace RTC
00037 {
00038   class PublisherBase;
00039   class ConnectorBase;
00040   class OutPortConnector;
00225   class OutPortBase
00226     : public PortBase, public DataPortStatus
00227   {
00228   public:
00229     DATAPORTSTATUS_ENUM
00230 
00231     typedef std::vector<OutPortConnector*> ConnectorList;
00232 
00250     OutPortBase(const char* name, const char* data_type);
00251     
00268     virtual ~OutPortBase(void);
00269     
00284     void init(coil::Properties& prop);
00285 
00304     const char* name() const;
00305 
00324     coil::Properties& properties();
00325 
00344     const std::vector<OutPortConnector*>& connectors();
00345 
00364     ConnectorBase::ProfileList getConnectorProfiles();
00365 
00384     coil::vstring getConnectorIds();
00385 
00404     coil::vstring getConnectorNames();
00405 
00428     bool getConnectorProfileById(const char* id,
00429                                  ConnectorBase::Profile& prof);
00430 
00453     bool getConnectorProfileByName(const char* name,
00454                                    ConnectorBase::Profile& prof);
00455 
00477     bool publishInterfaceProfiles(SDOPackage::NVList& properties);
00478 
00497     //    bool publishInterfaces(ConnectorProfile& connector_profile);
00498 
00523     //    bool subscribeInterfaces(const ConnectorProfile& connector_profile);
00524 
00548     //    bool unsubscribeInterfaces(const ConnectorProfile& connector_profile);
00549 
00550 
00551     virtual void onConnect(const char* id, PublisherBase* publisher){};
00552     virtual void onDisconnect(const char* id){};
00553     
00570     virtual void activateInterfaces();
00571 
00588     virtual void deactivateInterfaces();
00589 
00590   protected:
00605     void configure();
00606 
00653     virtual ReturnCode_t
00654     publishInterfaces(ConnectorProfile& connector_profile);
00655     
00694     virtual ReturnCode_t
00695     subscribeInterfaces(const ConnectorProfile& connector_profile);
00696     
00728     virtual void
00729     unsubscribeInterfaces(const ConnectorProfile& connector_profile);
00730 
00738     void initProviders();
00739 
00747     void initConsumers();
00748 
00756     OutPortProvider* createProvider(ConnectorProfile& cprof,
00757                                     coil::Properties& prop);
00765     InPortConsumer* createConsumer(const ConnectorProfile& cprof,
00766                                    coil::Properties& prop);
00767     
00775     OutPortConnector* createConnector(const ConnectorProfile& cprof,
00776                                       coil::Properties& prop,
00777                                       InPortConsumer* consumer);
00785     OutPortConnector* createConnector(const ConnectorProfile& cprof,
00786                                       coil::Properties& prop,
00787                                       OutPortProvider* provider);
00788 
00789     protected:
00790     coil::Properties m_properties;
00791     std::string m_name;
00792     std::vector<OutPortConnector*> m_connectors;
00793     std::vector<InPortConsumer*> m_consumers;
00794     coil::vstring m_providerTypes;
00795     coil::vstring m_consumerTypes;
00796     std::vector<OutPortProvider*> m_providers;
00797     
00805     struct provider_cleanup;
00806 
00814     struct connector_cleanup;
00815   };
00816 }; // End of namespace RTM
00817 #endif // RtcOutPortBase_h

Generated on Sun May 24 14:08:45 2009 for OpenRTM by  doxygen 1.5.3