00001 // -*- C++ -*- 00020 /* 00021 * $Log: PortCallBack.h,v $ 00022 * Revision 1.2.4.1 2007/09/19 07:41:28 n-ando 00023 * Timeout callbacks were added. 00024 * 00025 * Revision 1.2 2007/01/21 12:56:35 n-ando 00026 * virtual dtors were defined. 00027 * 00028 * Revision 1.1 2006/12/02 18:51:18 n-ando 00029 * The first commitment. 00030 * 00031 * 00032 */ 00033 00034 #ifndef PortCallBack_h 00035 #define PortCallBack_h 00036 00037 namespace RTC 00038 { 00039 //============================================================ 00040 // callback functor base classes 00055 template <class DataType> 00056 struct OnWrite 00057 { 00058 virtual ~OnWrite(){} 00059 virtual void operator()(const DataType& value) = 0; 00060 }; 00061 00076 template <class DataType> 00077 struct OnWriteConvert 00078 { 00079 virtual ~OnWriteConvert(){} 00080 virtual DataType operator()(const DataType& value) = 0; 00081 }; 00082 00097 template <class DataType> 00098 struct OnRead 00099 { 00100 virtual ~OnRead(){} 00101 virtual void operator()() = 0; 00102 }; 00103 00118 template <class DataType> 00119 struct OnReadConvert 00120 { 00121 virtual ~OnReadConvert(){} 00122 virtual DataType operator()(const DataType& value) = 0; 00123 }; 00124 00139 template <class DataType> 00140 struct OnOverflow 00141 { 00142 virtual ~OnOverflow(){} 00143 virtual void operator()(const DataType& value) = 0; 00144 }; 00145 00159 template <class DataType> 00160 struct OnUnderflow 00161 { 00162 virtual ~OnUnderflow(){} 00163 virtual DataType operator()() = 0; 00164 }; 00165 00166 00167 template <class DataType> 00168 struct OnWriteTimeout 00169 { 00170 virtual ~OnWriteTimeout(){} 00171 virtual void operator()(const DataType& value) = 0; 00172 }; 00173 00174 template <class DataType> 00175 struct OnReadTimeout 00176 { 00177 virtual ~OnReadTimeout(){} 00178 virtual DataType operator()() = 0; 00179 }; 00180 00181 00182 00183 }; 00184 #endif // PortCallBack_h