00001 // -*- C++ -*- 00020 #ifndef PortCallBack_h 00021 #define PortCallBack_h 00022 00023 namespace RTC 00024 { 00025 //============================================================ 00026 // callback functor base classes 00052 template <class DataType> 00053 struct OnWrite 00054 { 00070 virtual ~OnWrite(void){} 00071 00092 virtual void operator()(const DataType& value) = 0; 00093 }; 00094 00118 template <class DataType> 00119 struct OnWriteConvert 00120 { 00136 virtual ~OnWriteConvert(void){} 00137 00162 virtual DataType operator()(const DataType& value) = 0; 00163 }; 00164 00186 template <class DataType> 00187 struct OnRead 00188 { 00204 virtual ~OnRead(void){} 00205 00222 virtual void operator()() = 0; 00223 }; 00224 00248 template <class DataType> 00249 struct OnReadConvert 00250 { 00266 virtual ~OnReadConvert(void){} 00267 00284 virtual DataType operator()(const DataType& value) = 0; 00285 }; 00286 00308 template <class DataType> 00309 struct OnOverflow 00310 { 00326 virtual ~OnOverflow(void){} 00327 00347 virtual void operator()(const DataType& value) = 0; 00348 }; 00349 00373 template <class DataType> 00374 struct OnUnderflow 00375 { 00391 virtual ~OnUnderflow(void){} 00392 00412 virtual DataType operator()() = 0; 00413 }; 00414 00436 template <class DataType> 00437 struct OnWriteTimeout 00438 { 00454 virtual ~OnWriteTimeout(void){} 00455 00475 virtual void operator()(const DataType& value) = 0; 00476 }; 00477 00499 template <class DataType> 00500 struct OnReadTimeout 00501 { 00517 virtual ~OnReadTimeout(void){} 00518 00538 virtual DataType operator()() = 0; 00539 }; 00540 00541 class PublisherBase; 00542 class OnConnect 00543 { 00544 public: 00545 virtual ~OnConnect(void){} 00546 virtual void operator()(const char* id, PublisherBase* publisher) = 0; 00547 }; 00548 00549 class OnDisconnect 00550 { 00551 public: 00552 virtual ~OnDisconnect(void){} 00553 virtual void operator()(const char* id) = 0; 00554 }; 00555 00556 00557 }; 00558 #endif // PortCallBack_h