00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 //---------------------------------------------------------------------- 00016 //---------------------------------------------------------------------- 00017 #ifndef ICL_CORE_THREAD_PERIODIC_THREAD_H_INCLUDED 00018 #define ICL_CORE_THREAD_PERIODIC_THREAD_H_INCLUDED 00019 00020 #include <icl_core/BaseTypes.h> 00021 #include <icl_core/Noncopyable.h> 00022 #include <icl_core/TimeSpan.h> 00023 #include <icl_core/os_thread.h> 00024 00025 #include "icl_core_thread/ImportExport.h" 00026 #include "icl_core_thread/Thread.h" 00027 00028 #ifdef _IC_BUILDER_DEPRECATED_STYLE_ 00029 # include "icl_core/Deprecate.h" 00030 #endif 00031 00032 namespace icl_core { 00033 namespace thread { 00034 00035 class PeriodicThreadImpl; 00036 00042 class ICL_CORE_THREAD_IMPORT_EXPORT PeriodicThread : public Thread, 00043 protected virtual icl_core::Noncopyable 00044 { 00045 public: 00053 PeriodicThread(const icl_core::String& description, const icl_core::TimeSpan& period, 00054 ThreadPriority priority = 0); 00055 00058 virtual ~PeriodicThread(); 00059 00062 icl_core::TimeSpan period() const; 00063 00069 bool setPeriod(const icl_core::TimeSpan& period); 00070 00072 #ifdef _IC_BUILDER_DEPRECATED_STYLE_ 00073 00077 ICL_CORE_VC_DEPRECATE_STYLE icl_core::TimeSpan Period() const 00078 ICL_CORE_GCC_DEPRECATE_STYLE; 00079 00083 ICL_CORE_VC_DEPRECATE_STYLE bool SetPeriod(const icl_core::TimeSpan& period) 00084 ICL_CORE_GCC_DEPRECATE_STYLE; 00085 00086 #endif 00087 00088 00089 protected: 00092 void waitPeriod(); 00093 00095 #ifdef _IC_BUILDER_DEPRECATED_STYLE_ 00096 00100 ICL_CORE_VC_DEPRECATE_STYLE void WaitPeriod() ICL_CORE_GCC_DEPRECATE_STYLE; 00101 00102 #endif 00103 00104 00105 private: 00106 virtual void makePeriodic(); 00107 00108 PeriodicThreadImpl *m_impl; 00109 }; 00110 00111 } 00112 } 00113 00114 #endif