00001 // -*- C++ -*- 00020 #ifndef RTC_INPORTCORBACDRCONSUMER_H 00021 #define RTC_INPORTCORBACDRCONSUMER_H 00022 00023 00024 //#include <rtm/BufferBase.h> 00025 00026 #include <rtm/idl/DataPortSkel.h> 00027 #include <rtm/CorbaConsumer.h> 00028 #include <rtm/InPortConsumer.h> 00029 #include <rtm/Manager.h> 00030 00031 namespace RTC 00032 { 00057 class InPortCorbaCdrConsumer 00058 : public InPortConsumer, 00059 public CorbaConsumer< ::OpenRTM::InPortCdr > 00060 { 00061 public: 00062 DATAPORTSTATUS_ENUM 00080 InPortCorbaCdrConsumer(void); 00081 00095 virtual ~InPortCorbaCdrConsumer(void); 00096 00124 virtual void init(coil::Properties& prop); 00125 00158 virtual ReturnCode put(const cdrMemoryStream& data); 00159 00183 virtual void publishInterfaceProfile(SDOPackage::NVList& properties); 00184 00207 virtual bool subscribeInterface(const SDOPackage::NVList& properties); 00208 00226 virtual void unsubscribeInterface(const SDOPackage::NVList& properties); 00227 00228 private: 00242 bool subscribeFromIor(const SDOPackage::NVList& properties); 00243 00257 bool subscribeFromRef(const SDOPackage::NVList& properties); 00258 00272 bool unsubscribeFromIor(const SDOPackage::NVList& properties); 00273 00287 bool unsubscribeFromRef(const SDOPackage::NVList& properties); 00288 00289 private: 00297 InPortConsumer::ReturnCode convertReturnCode(OpenRTM::PortStatus ret); 00298 00299 mutable Logger rtclog; 00300 coil::Properties m_properties; 00301 }; 00302 }; // namespace RTC 00303 00304 extern "C" 00305 { 00319 void InPortCorbaCdrConsumerInit(void); 00320 }; 00321 00322 #endif // RTC_INPORTCORBACDRCONSUMER_H 00323