⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.cpp

📁 dget是一个基于Linux平台的多线程下载工具, 采用C++开发。主要支持FTP, HTTP, MMS, RTSP协议下载, 目前为止主要实现了FTP, HTTP, MMS,RTSP协议的多线程下载
💻 CPP
字号:
/**************************************************************************** * *  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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -