00001 // ===================================================================== 00042 // ===================================================================== 00043 #ifndef CLDAQ__TINPUTOBJECTFILEONLINE_HH 00044 #define CLDAQ__TINPUTOBJECTFILEONLINE_HH 00045 00046 #include "Tglobals.h" 00047 #include "TInputObjectFile.hh" 00048 00049 class TStreamableObject; 00050 class TDataRecord; 00051 class TDataSection; 00052 class TDataSegment; 00053 class TDataElement; 00054 class TObjectFilter; 00055 class TInputObjectFilter; 00056 00057 00077 class TInputObjectFileOnline 00078 : public TInputObjectFile 00079 { 00080 00081 private: 00082 enum { DEFAULT = 10 * 1000 }; // 10ms 00083 00084 private: 00085 Tint theMicroSleepTime; 00086 00087 public: 00088 TInputObjectFileOnline( const Tstring& filename, const Tstring& mode = "r", Tint utime = DEFAULT ); 00089 TInputObjectFileOnline( TInputObjectFilter* filter, const Tstring& filename, const Tstring& mode = "r", Tint utime = DEFAULT ); 00090 ~TInputObjectFileOnline(); 00091 00092 public: 00093 Tint Read( TStreamableObject& object ); 00094 00095 public: 00096 Tint GetMicroSleepTime() const; 00097 Tvoid SetMicroSleepTime( Tint utime ); 00098 Tbool IsSleep() const; 00099 Tvoid MicroSleep() const; 00100 00101 #ifdef __CLDAQ_ROOT_DLL 00102 ClassDef(TInputObjectFileOnline,0) 00103 #endif 00104 00105 }; 00106 00107 inline Tint TInputObjectFileOnline::GetMicroSleepTime() const 00108 { 00109 return theMicroSleepTime; 00110 } 00111 00112 inline Tvoid TInputObjectFileOnline::SetMicroSleepTime( Tint utime ) 00113 { 00114 theMicroSleepTime = utime; 00115 return; 00116 } 00117 00118 inline Tbool TInputObjectFileOnline::IsSleep() const 00119 { 00120 return ( theMicroSleepTime > 0 ); 00121 } 00122 00123 inline Tvoid TInputObjectFileOnline::MicroSleep() const 00124 { 00125 if ( IsSleep() ) { 00126 usleep( theMicroSleepTime ); 00127 } 00128 return; 00129 } 00130 00131 #endif