00001 // -*- C++ -*- 00020 #ifndef RTC_OUTPORTPULLCONNECTOR_H 00021 #define RTC_OUTPORTPULLCONNECTOR_H 00022 00023 #include <rtm/InPortConnector.h> 00024 #include <rtm/InPortProvider.h> 00025 #include <rtm/PublisherBase.h> 00026 #include <rtm/DataPortStatus.h> 00027 00028 namespace RTC 00029 { 00030 class OutPortConsumer; 00031 class ConnectorListeners; 00032 00087 class InPortPullConnector 00088 : public InPortConnector 00089 { 00090 public: 00091 DATAPORTSTATUS_ENUM 00092 00133 InPortPullConnector(ConnectorInfo info, 00134 OutPortConsumer* consumer, 00135 ConnectorListeners& listeners, 00136 CdrBufferBase* buffer = 0); 00137 00153 virtual ~InPortPullConnector(); 00154 00186 virtual ReturnCode read(cdrMemoryStream& data); 00187 00201 virtual ReturnCode disconnect(); 00202 00217 virtual void activate(){}; // do nothing 00218 00233 virtual void deactivate(){}; // do nothing 00234 00235 protected: 00255 CdrBufferBase* createBuffer(ConnectorInfo& info); 00256 00264 void onConnect(); 00265 00273 void onDisconnect(); 00274 00275 private: 00283 OutPortConsumer* m_consumer; 00284 00292 ConnectorListeners& m_listeners; 00293 }; 00294 }; // namespace RTC 00295 00296 #endif // RTC_PULL_CONNECTOR_H