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 00044 class InPortPushConnector 00045 : public InPortConnector 00046 { 00047 public: 00048 DATAPORTSTATUS_ENUM 00049 00073 InPortPushConnector(ConnectorInfo info, 00074 InPortProvider* provider, 00075 ConnectorListeners& listeners, 00076 CdrBufferBase* buffer = 0); 00077 00093 virtual ~InPortPushConnector(); 00094 00109 virtual ReturnCode read(cdrMemoryStream& data); 00110 00126 virtual ReturnCode disconnect(); 00127 00142 virtual void activate(){}; // do nothing 00143 00158 virtual void deactivate(){}; // do nothing 00159 protected: 00167 virtual CdrBufferBase* createBuffer(ConnectorInfo& info); 00168 00176 void onConnect(); 00177 00185 void onDisconnect(); 00186 00187 private: 00195 InPortProvider* m_provider; 00196 00204 ConnectorListeners& m_listeners; 00205 00206 bool m_deleteBuffer; 00207 }; 00208 }; // namespace RTC 00209 00210 #endif // RTC_PUSH_CONNECTOR_H