ActiveTimer.cpp
上传用户:laixiong
上传日期:2007-03-11
资源大小:2994k
文件大小:1k
源码类别:

Symbian

开发平台:

C/C++

  1. // Copyright (c) 2006 Nokia Corporation.
  2. #include "ActiveTimer.h"
  3. #include "ActiveTimerNotify.h"
  4. // Constructs a CActiveTimer object
  5. CActiveTimer* CActiveTimer::NewL(MActiveTimerNotify& aNotifier)
  6.     {
  7.     CActiveTimer* self = new (ELeave) CActiveTimer(aNotifier);
  8.     CleanupStack::PushL(self);
  9.     self->ConstructL();
  10.     CleanupStack::Pop();
  11.     return self;
  12.     }
  13. // C++ Destructor
  14. CActiveTimer::~CActiveTimer()
  15.     {
  16. Cancel();
  17.     iTimer.Close();
  18.     }
  19. // Initiates the asynchronous timer request and sets the active object
  20. // ready to handle its completion
  21. void CActiveTimer::After(TTimeIntervalMicroSeconds32 anInterval)
  22.     {
  23.     iTimer.After(iStatus, anInterval);
  24.     SetActive();
  25.     }
  26. // Handles the completion of the asynchronous timer request
  27. void CActiveTimer::RunL()
  28.     {
  29.     iNotifier.TimerComplete(iStatus.Int());
  30.     }
  31. // Handles the cleanup necessary if the 
  32. // asynchronous timer request is cancelled
  33. void CActiveTimer::DoCancel()
  34.     {
  35.     iTimer.Cancel();
  36.     }
  37. // C++ constructor
  38. CActiveTimer::CActiveTimer(MActiveTimerNotify& aNotifier) : 
  39.     CActive(EPriorityStandard),
  40.     iNotifier(aNotifier)
  41.     {
  42.     CActiveScheduler::Add(this);
  43.     }
  44. // Second-phase constructor
  45. void CActiveTimer::ConstructL()
  46.     {
  47.     User::LeaveIfError(iTimer.CreateLocal());
  48.     }
  49. // End of file