00001 // -*- C++ -*- 00020 #ifndef RTC_INPORTPUSHCONNECTOR_H 00021 #define RTC_INPORTPUSHCONNECTOR_H 00022 00023 #include <rtm/InPortConnector.h> 00024 #include <rtm/InPortConsumer.h> 00025 #include <rtm/PublisherBase.h> 00026 00027 namespace RTC 00028 { 00029 class InPortProvider; 00030 00080 class InPortPushConnector 00081 : public InPortConnector 00082 { 00083 public: 00084 DATAPORTSTATUS_ENUM 00085 00126 InPortPushConnector(ConnectorInfo info, 00127 InPortProvider* provider, 00128 ConnectorListeners& listeners, 00129 CdrBufferBase* buffer = 0); 00130 00146 virtual ~InPortPushConnector(); 00147 00180 virtual ReturnCode read(cdrMemoryStream& data); 00181 00201 virtual ReturnCode disconnect(); 00202 00217 virtual void activate(){}; // do nothing 00218 00233 virtual void deactivate(){}; // do nothing 00234 00235 protected: 00255 virtual CdrBufferBase* createBuffer(ConnectorInfo& info); 00256 00264 void onConnect(); 00265 00273 void onDisconnect(); 00274 00275 private: 00283 InPortProvider* m_provider; 00284 00292 ConnectorListeners& m_listeners; 00293 00294 bool m_deleteBuffer; 00295 }; 00296 }; // namespace RTC 00297 00298 #endif // RTC_PUSH_CONNECTOR_H