InPortConsumer.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00020 #ifndef InPortConsumer_h
00021 #define InPortConsumer_h
00022 
00023 #include <coil/Factory.h>
00024 #include <rtm/DataPortStatus.h>
00025 
00026 namespace coil
00027 {
00028   class Properties;
00029 };
00030 
00031 namespace SDOPackage
00032 {
00033   class NVList;
00034 };
00035 
00036 class cdrMemoryStream;
00037 
00038 namespace RTC
00039 {
00073   class InPortConsumer
00074     : public DataPortStatus
00075   {
00076   public:
00077     DATAPORTSTATUS_ENUM
00091     //InPortConsumer();
00092     
00106     virtual ~InPortConsumer(void){};
00107 
00122     virtual void init(coil::Properties& prop) = 0;
00123 
00137     virtual ReturnCode put(const cdrMemoryStream& data) = 0;
00138 
00162     virtual void publishInterfaceProfile(SDOPackage::NVList& properties) = 0;
00163 
00187     virtual bool subscribeInterface(const SDOPackage::NVList& properties) = 0;
00188     
00206     virtual void unsubscribeInterface(const SDOPackage::NVList& properties) = 0;
00207     
00215     struct publishInterfaceProfileFunc
00216     {
00217       publishInterfaceProfileFunc(SDOPackage::NVList& prop) : m_prop(prop) {}
00218       void operator()(InPortConsumer* consumer)
00219       {
00220         consumer->publishInterfaceProfile(m_prop);
00221       }
00222       SDOPackage::NVList& m_prop;
00223     };
00224 
00232     struct subscribeInterfaceFunc
00233     {
00234       subscribeInterfaceFunc(SDOPackage::NVList& prop) : m_prop(prop) {}
00235       bool operator()(InPortConsumer* consumer)
00236       {
00237         return consumer->subscribeInterface(m_prop);
00238       }
00239       SDOPackage::NVList& m_prop;
00240     };
00241 
00242   
00243   };
00244 
00245   typedef ::coil::GlobalFactory<InPortConsumer> InPortConsumerFactory;
00246 };     // namespace RTC
00247 
00248 template class ::coil::GlobalFactory<RTC::InPortConsumer>;
00249 
00250 #endif // InPortConsumer_h

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