diff -r 000000000000 -r 4e1aa6a622a0 resourcemgmt/powerandmemorynotificationservice/src/shutdowntimer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resourcemgmt/powerandmemorynotificationservice/src/shutdowntimer.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,94 @@ +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "shutdowntimer.h" +#include "savepriv.h" + +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include "shutdownsrv.h" +#else //SYMBIAN_ENABLE_SPLIT_HEADERS +#include "shutdownsess.h" +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS +#include "shutdownsrvpatchdata.h" + +/* +Patchable data KShtdwnTimeoutBase can be configured as -1 not to apply the timer +as backward compatibility. +*/ +const TInt32 KShtdwnTimeoutNoApply = -1; + +/** +Standard phase-one factory method for creating CShutdownTimer instances. +It might return a NULL pointer if the patchable constant KShtdwnTimeoutBase has been configured +as -1 which indicates no timer should be started. +@param aShtdwnSrv The reference to CServShutdownServer. +@return 0 if no timer should be started, otherwise a pointer to CShutdownTimer object. +@leave Some system-wide error codes including KErrNoMemory. +@panic KErrNotSupported Incorrect patchable variables configuration. +*/ +CShutdownTimer* CShutdownTimer::NewL(CServShutdownServer& aShtdwnSrv) + { + __ASSERT_ALWAYS( (KShtdwnTimeoutBase >= KShtdwnTimeoutNoApply) && (KShtdwnTimeoutClient >= 0), \ + User::Panic(__SHUTDOWN_SERVER_NAME, KErrNotSupported)); + + CShutdownTimer* self = 0; + if(KShtdwnTimeoutBase > KShtdwnTimeoutNoApply) + { + self = new(ELeave) CShutdownTimer(aShtdwnSrv); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + } + + return self; + } + +/** +Constructor +@param aShtdwnSrv The reference to CServShutdownServer +*/ +CShutdownTimer::CShutdownTimer(CServShutdownServer& aShtdwnSrv): + CTimer(CActive::EPriorityStandard), iShtdwnSrv(aShtdwnSrv) + { + CActiveScheduler::Add(this); + } + +/** +Removes the timer object from the active scheduler's list if it has been added. +*/ +void CShutdownTimer::DoCancel() + { + // Do nothing + } + +/** +Calculates the timeout value by the number of the clients and starts the timer. +@param aNumClients The number of the clients. +*/ +void CShutdownTimer::Start(TInt aNumClients) + { + TInt32 timeout = KShtdwnTimeoutBase + KShtdwnTimeoutClient * aNumClients; + After(timeout); + } + + +/** +Gets called when the timeout expires. +Calls CServShutdownServer::SwitchOff() to execute the switch off. +*/ +void CShutdownTimer::RunL() + { + iShtdwnSrv.SwitchOff(); + }