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 { 00060 class InPortCorbaCdrConsumer 00061 : public InPortConsumer, 00062 public CorbaConsumer< ::OpenRTM::InPortCdr > 00063 { 00064 public: 00065 DATAPORTSTATUS_ENUM 00083 InPortCorbaCdrConsumer(void); 00084 00098 virtual ~InPortCorbaCdrConsumer(void); 00099 00114 virtual void init(coil::Properties& prop); 00115 00129 virtual ReturnCode put(const cdrMemoryStream& data); 00130 00154 virtual void publishInterfaceProfile(SDOPackage::NVList& properties); 00155 00178 virtual bool subscribeInterface(const SDOPackage::NVList& properties); 00179 00197 virtual void unsubscribeInterface(const SDOPackage::NVList& properties); 00198 00199 private: 00213 bool subscribeFromIor(const SDOPackage::NVList& properties); 00214 00228 bool subscribeFromRef(const SDOPackage::NVList& properties); 00229 00243 bool unsubscribeFromIor(const SDOPackage::NVList& properties); 00244 00258 bool unsubscribeFromRef(const SDOPackage::NVList& properties); 00259 00260 private: 00261 mutable Logger rtclog; 00262 coil::Properties m_properties; 00263 }; 00264 }; // namespace RTC 00265 00266 extern "C" 00267 { 00268 void InPortCorbaCdrConsumerInit(void); 00269 }; 00270 00271 #endif // RTC_INPORTCORBACDRCONSUMER_H 00272