Files
Work/thread/THTIMER.HPP
2024-08-07 09:16:27 -04:00

82 lines
1.6 KiB
C++

#ifndef _THREAD_THREADTIMER_HPP_
#define _COMMON_THREADTIMER_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_CALLBACK_HPP_
#include <common/callback.hpp>
#endif
#ifndef _COMMON_MMSYSTEM_HPP_
#include <common/mmsystem.hpp>
#endif
#ifndef _THREAD_MUTEX_HPP_
#include <thread/mutex.hpp>
#endif
class ThreadTimer
{
public:
ThreadTimer(void);
ThreadTimer(WORD minResolution);
virtual ~ThreadTimer();
DWORD getSystemTime(void)const;
WORD startTimer(UINT deltaTime);
WORD stopTimer(void);
WORD isRunning(void)const;
void insertHandler(PureCallback *lpCallback);
void removeHandler(void);
protected:
virtual void timerStarted(void);
virtual void timerStopped(void);
private:
static void CALLBACK timerProc(UINT wTimerID,UINT mMsg,DWORD dwUser,DWORD dummyOne,DWORD dummyTwo);
WORD isFirstBreak(void)const;
void isFirstBreak(WORD isFirstBreak);
TIMECAPS mTimerCapability;
WORD mMinResolution;
WORD mIsOkay;
WORD mHasTimedEvent;
WORD mIsFirstBreak;
UINT mTimerID;
Mutex mTimerMutex;
CallbackPointer mCallbackPointer;
};
inline
DWORD ThreadTimer::getSystemTime(void)const
{
return ::timeGetTime();
}
inline
WORD ThreadTimer::isRunning(void)const
{
return mHasTimedEvent;
}
inline
void ThreadTimer::insertHandler(PureCallback *lpCallback)
{
mCallbackPointer=CallbackPointer(lpCallback);
}
inline
void ThreadTimer::removeHandler(void)
{
mCallbackPointer=CallbackPointer();
}
inline
WORD ThreadTimer::isFirstBreak(void)const
{
return mIsFirstBreak;
}
inline
void ThreadTimer::isFirstBreak(WORD isFirstBreak)
{
mIsFirstBreak=isFirstBreak;
}
#endif