CActive Object in Symbian C++

C

Active Object provides a support for asynchronous process.

let’s see example of Timer using CActive :- Active Object can be implemented by deriving from the CActive class

void CTestTimerAO::RunL()//RunL-The handler function to be invoked by the active scheduler when the request completes
{
iTimeString = _L(“”);
iMs = iMs + 1;
TUint64 minute;
TUint64 second;
TUint64 millisecond;
second = (iMs – iMs%100) / 100;
millisecond = iMs – 100 * second;
minute = (second – second % 60) / 60;
second = second – 60 * minute;
if(minute < 10)
iTimeString.Append(_L(“0”));
iTimeString.AppendNum(minute, EDecimal);
iTimeString.Append(_L(“:”));

if(second < 10)
iTimeString.Append(_L(“0”));
iTimeString.AppendNum(second, EDecimal);
iTimeString.Append(_L(“:”));

if(millisecond < 10)
iTimeString.Append(_L(“0”));
iTimeString.AppendNum(millisecond, EDecimal);
iNotify.TestTimerUpdate(iTimeString);
TInt sec = (int)second;
STATIC_CAST(CdemoAppUi *,CEikonEnv::Static()->EikAppUi())->newSeconds = sec;
Start();
}

void CTestTimerAO::Start()
{
if(IsActive())
return;
iTimer.After(iStatus, 1000);//iStatus-A data member representing the status of the request
SetActive();

}

void CTestTimerAO::After(TTimeIntervalMicroSeconds32 aInterval)
{
Cancel();
iTimer.After(iStatus, aInterval);//iTimer – Object of RTimer
SetActive();
}

void CTestTimerAO::DoCancel()
{
iTimer.Cancel();//The function to cancel an outstanding request
}

About the author

pallavi.jadhav
By pallavi.jadhav

Category