os/boardsupport/haitest/bspsvs/suite/common/src/ActiveCallbackBase.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /*
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:
    15 *
    16 */
    17 
    18 #include "ActiveCallbackBase.h"
    19 
    20 CActiveCallbackBase::CActiveCallbackTimer* CActiveCallbackBase::CActiveCallbackTimer::NewL(CActive& aActive, TInt aPriority)
    21 	{
    22 	CActiveCallbackTimer*	self=new (ELeave) CActiveCallbackTimer(aActive, aPriority);
    23 	CleanupStack::PushL(self);
    24 	self->ConstructL();
    25 	CActiveScheduler::Add(self);
    26 	CleanupStack::Pop(self);
    27 	return self;
    28 	}
    29 
    30 CActiveCallbackBase::CActiveCallbackTimer::CActiveCallbackTimer(CActive& aActive, TInt aPriority)
    31 :	CTimer(aPriority)
    32 ,	iActive(aActive)
    33 	{
    34 	}
    35 
    36 void CActiveCallbackBase::CActiveCallbackTimer::RunL()
    37 	{
    38 	if ( iStatus.Int()==KErrNone )
    39 		{
    40 		//	Timer termiated without error
    41 		if ( iActive.IsActive() )
    42 			{
    43 			iActive.Cancel();
    44 			}
    45 		}
    46 	}
    47 
    48 CActiveCallbackBase* CActiveCallbackBase::NewLC(CDataWrapperBase& aDataWrapperBase, TInt aPriority)
    49 	{
    50 	CActiveCallbackBase*    self=new(ELeave) CActiveCallbackBase(aDataWrapperBase, aPriority);
    51 	CleanupStack::PushL(self);
    52 	self->ConstructL();
    53 	return self;
    54 	}
    55 
    56 CActiveCallbackBase* CActiveCallbackBase::NewL(CDataWrapperBase& aDataWrapperBase, TInt aPriority)
    57 	{
    58 	CActiveCallbackBase*	self=CActiveCallbackBase::NewLC(aDataWrapperBase, aPriority);
    59 	CleanupStack::Pop();
    60 	return self;
    61 	}
    62 
    63 CActiveCallbackBase::CActiveCallbackBase(CDataWrapperBase& aDataWrapperBase, TInt aPriority)
    64 :	CActiveCallback(aDataWrapperBase, aPriority)
    65 ,	iDataWrapperBase(aDataWrapperBase)
    66 ,	iTimer(NULL)
    67 	{
    68 	}
    69 
    70 void CActiveCallbackBase::ConstructL()
    71 	{
    72 	CActiveCallback::ConstructL();
    73 	iTimer=CActiveCallbackTimer::NewL(*this);
    74 	}
    75 
    76 CActiveCallbackBase::~CActiveCallbackBase()
    77 /**
    78  * Public destructor
    79  */
    80 	{
    81 	delete iTimer;
    82 	iTimer=NULL;
    83 	}
    84 
    85 void CActiveCallbackBase::Activate(TInt aIndex, TInt aTimeout)
    86 	{
    87 	CActiveCallback::Activate(aIndex);
    88 	if ( aTimeout!=0 )
    89 		{
    90 		iTimer->After(aTimeout);
    91 		}
    92 	}
    93 
    94 void CActiveCallbackBase::KillTimer()
    95 	{
    96 	if ( iTimer->IsActive() )
    97 		{
    98 		iDataWrapperBase.INFO_PRINTF1(_L("CActiveCallbackBase::KillTimer"));
    99 		iTimer->Cancel();
   100 		}
   101 	}