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(){} 00071 00092 virtual void operator()(const DataType& value) = 0; 00093 }; 00094 00118 template <class DataType> 00119 struct OnWriteConvert 00120 { 00136 virtual ~OnWriteConvert(){} 00137 00162 virtual DataType operator()(const DataType& value) = 0; 00163 }; 00164 00186 template <class DataType> 00187 struct OnRead 00188 { 00204 virtual ~OnRead(){} 00205 00222 virtual void operator()() = 0; 00223 }; 00224 00248 template <class DataType> 00249 struct OnReadConvert 00250 { 00266 virtual ~OnReadConvert(){} 00267 00284 virtual DataType operator()(const DataType& value) = 0; 00285 }; 00286 00308 template <class DataType> 00309 struct OnOverflow 00310 { 00326 virtual ~OnOverflow(){} 00327 00347 virtual void operator()(const DataType& value) = 0; 00348 }; 00349 00373 template <class DataType> 00374 struct OnUnderflow 00375 { 00391 virtual ~OnUnderflow(){} 00392 00412 virtual DataType operator()() = 0; 00413 }; 00414 00436 template <class DataType> 00437 struct OnWriteTimeout 00438 { 00454 virtual ~OnWriteTimeout(){} 00455 00475 virtual void operator()(const DataType& value) = 0; 00476 }; 00477 00499 template <class DataType> 00500 struct OnReadTimeout 00501 { 00517 virtual ~OnReadTimeout(){} 00518 00538 virtual DataType operator()() = 0; 00539 }; 00540 }; 00541 #endif // PortCallBack_h