00001
00020 #ifndef RTC_INPORTCORBACDRCONSUMER_H
00021 #define RTC_INPORTCORBACDRCONSUMER_H
00022
00023
00024
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 };
00303
00304 extern "C"
00305 {
00319 void InPortCorbaCdrConsumerInit(void);
00320 };
00321
00322 #endif // RTC_INPORTCORBACDRCONSUMER_H
00323