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 {
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
00148 virtual ReturnCode put(const cdrMemoryStream& data);
00149
00173 virtual void publishInterfaceProfile(SDOPackage::NVList& properties);
00174
00197 virtual bool subscribeInterface(const SDOPackage::NVList& properties);
00198
00216 virtual void unsubscribeInterface(const SDOPackage::NVList& properties);
00217
00218 private:
00232 bool subscribeFromIor(const SDOPackage::NVList& properties);
00233
00247 bool subscribeFromRef(const SDOPackage::NVList& properties);
00248
00262 bool unsubscribeFromIor(const SDOPackage::NVList& properties);
00263
00277 bool unsubscribeFromRef(const SDOPackage::NVList& properties);
00278
00279 private:
00287 InPortConsumer::ReturnCode convertReturnCode(OpenRTM::PortStatus ret);
00288
00289 mutable Logger rtclog;
00290 coil::Properties m_properties;
00291 };
00292 };
00293
00294 extern "C"
00295 {
00296 void InPortCorbaCdrConsumerInit(void);
00297 };
00298
00299 #endif // RTC_INPORTCORBACDRCONSUMER_H
00300