00001 // -*- C++ -*- 00020 #ifndef RTC_PUBLISHERBASE_H 00021 #define RTC_PUBLISHERBASE_H 00022 00023 #include <coil/Properties.h> 00024 #include <coil/Factory.h> 00025 #include <rtm/RTC.h> 00026 #include <rtm/CdrBufferBase.h> 00027 #include <rtm/DataPortStatus.h> 00028 00029 namespace coil 00030 { 00031 class Properties; 00032 } 00033 namespace RTC 00034 { 00035 class InPortConsumer; 00036 class ConnectorListeners; 00037 class ConnectorInfo; 00038 00063 class PublisherBase 00064 : public DataPortStatus 00065 { 00066 public: 00067 DATAPORTSTATUS_ENUM 00079 virtual ~PublisherBase(void){}; 00080 00108 virtual ReturnCode init(coil::Properties& prop) = 0; 00118 virtual ReturnCode setConsumer(InPortConsumer* consumer) = 0; 00128 virtual ReturnCode setBuffer(BufferBase<cdrMemoryStream>* buffer) = 0; 00140 virtual ReturnCode setListener(ConnectorInfo& info, 00141 ConnectorListeners* listeners) = 0; 00155 virtual ReturnCode write(const cdrMemoryStream& data, 00156 unsigned long sec, 00157 unsigned long usec) = 0; 00158 00179 virtual bool isActive() = 0; 00190 virtual ReturnCode activate() = 0; 00201 virtual ReturnCode deactivate() = 0; 00202 00203 00204 00205 00224 virtual void release(){} 00225 }; 00226 00227 typedef coil::GlobalFactory<PublisherBase> PublisherFactory; 00228 00229 }; 00230 #endif // RTC_PUBLISHERBASE_H