00001 // -*- C++ -*- 00020 #ifndef RTC_OUTPORTPUSHCONNECTOR_H 00021 #define RTC_OUTPORTPUSHCONNECTOR_H 00022 00023 #include <rtm/OutPortConnector.h> 00024 #include <rtm/InPortConsumer.h> 00025 #include <rtm/PublisherBase.h> 00026 00027 namespace RTC 00028 { 00029 class ConnectorListeners; 00030 00044 class OutPortPushConnector 00045 : public OutPortConnector 00046 { 00047 public: 00048 DATAPORTSTATUS_ENUM 00049 00073 OutPortPushConnector(ConnectorInfo info, 00074 InPortConsumer* consumer, 00075 ConnectorListeners& listeners, 00076 CdrBufferBase* buffer = 0); 00077 00093 virtual ~OutPortPushConnector(); 00094 00111 virtual ReturnCode write(const cdrMemoryStream& data); 00112 00128 virtual ReturnCode disconnect(); 00129 00144 virtual void activate(); 00145 00160 virtual void deactivate(); 00161 00175 virtual CdrBufferBase* getBuffer(); 00176 00177 protected: 00185 virtual PublisherBase* createPublisher(ConnectorInfo& info); 00186 00194 virtual CdrBufferBase* createBuffer(ConnectorInfo& info); 00195 00203 void onConnect(); 00204 00212 void onDisconnect(); 00213 00214 private: 00222 InPortConsumer* m_consumer; 00223 00231 PublisherBase* m_publisher; 00232 00240 ConnectorListeners& m_listeners; 00241 00249 CdrBufferBase* m_buffer; 00250 00251 }; 00252 }; // namespace RTC 00253 00254 #endif // RTC_PUSH_CONNECTOR_H