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 00085 class OutPortPushConnector 00086 : public OutPortConnector 00087 { 00088 public: 00089 DATAPORTSTATUS_ENUM 00090 00131 OutPortPushConnector(ConnectorInfo info, 00132 InPortConsumer* consumer, 00133 ConnectorListeners& listeners, 00134 CdrBufferBase* buffer = 0); 00135 00151 virtual ~OutPortPushConnector(); 00152 00192 virtual ReturnCode write(const cdrMemoryStream& data); 00193 00209 virtual ReturnCode disconnect(); 00210 00225 virtual void activate(); 00226 00241 virtual void deactivate(); 00242 00256 virtual CdrBufferBase* getBuffer(); 00257 00258 protected: 00278 virtual PublisherBase* createPublisher(ConnectorInfo& info); 00279 00299 virtual CdrBufferBase* createBuffer(ConnectorInfo& info); 00300 00308 void onConnect(); 00309 00317 void onDisconnect(); 00318 00319 private: 00327 InPortConsumer* m_consumer; 00328 00336 PublisherBase* m_publisher; 00337 00345 ConnectorListeners& m_listeners; 00346 00354 CdrBufferBase* m_buffer; 00355 00356 }; 00357 }; // namespace RTC 00358 00359 #endif // RTC_PUSH_CONNECTOR_H