OutPortProvider.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00020 #ifndef RTC_OUTPORTPROVIDER_H
00021 #define RTC_OUTPORTPROVIDER_H
00022 
00023 #include <string>
00024 
00025 #include <coil/Factory.h>
00026 #include <rtm/BufferBase.h>
00027 #include <rtm/NVUtil.h>
00028 #include <rtm/DataPortStatus.h>
00029 
00030 namespace RTC
00031 {
00089   class OutPortProvider
00090     : public DataPortStatus
00091   {
00092   public:
00093     DATAPORTSTATUS_ENUM
00104     virtual ~OutPortProvider(void);
00105 
00133     virtual void init(coil::Properties& prop);
00134 
00160     virtual void setBuffer(BufferBase<cdrMemoryStream>* buffer);
00161     
00185     virtual void publishInterfaceProfile(SDOPackage::NVList& properties);
00186     
00212     virtual bool publishInterface(SDOPackage::NVList& properties);
00213     
00214   protected:
00232     void setPortType(const char* port_type);
00233     
00251     void setDataType(const char* data_type);
00252     
00270     void setInterfaceType(const char* interface_type);
00271     
00289     void setDataFlowType(const char* dataflow_type);
00290     
00308     void setSubscriptionType(const char* subs_type);
00309     
00310   protected:
00318     SDOPackage::NVList m_properties;
00319     
00320   private:
00321     std::string m_portType;
00322     std::string m_dataType;
00323     std::string m_interfaceType;
00324     std::string m_dataflowType;
00325     std::string m_subscriptionType;
00326 
00327 
00328   public:
00329     // functors
00337     struct publishInterfaceProfileFunc
00338     {
00339       publishInterfaceProfileFunc(SDOPackage::NVList& prop) : m_prop(prop) {}
00340       void operator()(OutPortProvider* provider)
00341       {
00342         provider->publishInterfaceProfile(m_prop);
00343       }
00344       SDOPackage::NVList& m_prop;
00345     };
00346 
00354     struct publishInterfaceFunc
00355     {
00356       publishInterfaceFunc(SDOPackage::NVList& prop)
00357         : m_prop(prop), provider_(0) {}
00358       void operator()(OutPortProvider* provider)
00359       {
00360         if (provider->publishInterface(m_prop))
00361           {
00362             provider_ = provider;
00363           }
00364       }
00365       SDOPackage::NVList& m_prop;
00366       OutPortProvider* provider_;
00367     };
00368   };
00369 
00370   typedef ::coil::GlobalFactory<OutPortProvider> OutPortProviderFactory;
00371 
00372 }; // namespace RTC
00373 #endif // RTC_OUTPORTPROVIDER_H

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