timer.cpp

来自「dget是一个基于Linux平台的多线程下载工具, 采用C++开发。主要支持FT」· C++ 代码 · 共 114 行

CPP
114
字号
/**************************************************************************** * *  Copyright (C) 2000-2001 RealNetworks, Inc. All rights reserved. * *  This program is free software.  It may be distributed under the terms *  in the file LICENSE, found in the top level of the source distribution. * */#include "timer.h"#include "app.h"#include "dbg.h"#define TVNORM(tv) while( tv.tv_usec > 1000*1000 ) { tv.tv_usec -= 1000*1000; tv.tv_sec++; }CTimer::CTimer( CTimerResponse* pResponse ) :    m_pResponse(pResponse),    m_mode(Disabled),    m_next(0),    m_interval(0){    // Empty}CTimer::~CTimer( void ){    Disable();}void CTimer::SetResponse( CTimerResponse* pResponse ){    m_pResponse = pResponse;}CTimer::Mode CTimer::GetMode( void ){    return m_mode;}UINT32 CTimer::GetTimeout( void ){    return m_next;}void CTimer::SetRelative( UINT32 msec ){    Set( CurrentTime() + msec );    m_mode = SingleShot;}void CTimer::SetAbsolute( UINT32 t ){    Set( t );    m_mode = SingleShot;}void CTimer::SetRepeating( UINT32 msec ){    Set( CurrentTime() + msec );    m_interval = msec;    m_mode = Repeating;}void CTimer::Disable( void ){    if( m_mode != Disabled )    {        CEventThread* pSelf;        m_mode = Disabled;#ifdef NO_RTTI        pSelf = (CEventThread*)CThread::This(); //XXX: very bad, upgrade compiler#else        pSelf = dynamic_cast<CEventThread*>(CThread::This());#endif        assert_or_ret( pSelf );        pSelf->DelTimer( this );    }}UINT32 CTimer::CurrentTime( void ){#ifdef _UNIX    timeval tv;    gettimeofday( &tv, NULL );    return (tv.tv_sec*1000 + tv.tv_usec/1000);#endif#ifdef _WIN32    return ::GetTickCount();#endif}void CTimer::Set( UINT32 t ){    m_next = t;    CEventThread* pSelf;#ifdef NO_RTTI        pSelf = (CEventThread*)CThread::This(); //XXX: very bad, upgrade compiler#else        pSelf = dynamic_cast<CEventThread*>(CThread::This());#endif    assert_or_ret( pSelf );    if( m_mode != Disabled ) pSelf->DelTimer( this );    pSelf->AddTimer( this );}CTimerResponse* CTimer::GetResponse( void ){    assert( m_pResponse );    return m_pResponse;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?