diff -r 675a964f4eb5 -r 35751d3474b7 cryptomgmtlibs/securitycommonutils/source/scsserver/shutdowntimer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cryptomgmtlibs/securitycommonutils/source/scsserver/shutdowntimer.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -0,0 +1,91 @@ +/* +* 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 the License "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: +* Implements the timer which stops the server after no sessions have been +* open for a defined period. +* +*/ + + +/** + @file +*/ + +#include + + +CShutdownTimer* CShutdownTimer::NewL(TInt aDelayUs) +/** + Factory function allocates a new, initialized instance of CShutdownTimer. + + @param aDelayUs Delay in microseconds. + @return New, initialized instance of CShutdownTimer. + The newly-created object is owned by the caller. + */ + { + CShutdownTimer* self = new(ELeave) CShutdownTimer(aDelayUs); + CleanupStack::PushL(self); + self->ConstructL(); // CTimer implementation + CleanupStack::Pop(self); + return self; + } + +CShutdownTimer::CShutdownTimer(TInt aDelayUs) +/** + Record the shutdown period and add this object to the active scheduler. + + @param aDelayUs Delay in microseconds. + */ + : CTimer(CActive::EPriorityStandard), + iDelayUs(aDelayUs) + { + CActiveScheduler::Add(this); + } + +void CShutdownTimer::Restart() +/** + Restart this timer. This timer should not be active when this + function is called. + + Once started, the timer can be stopped with the base class' Cancel function. + */ + { + if(iImmediateTimeoutNextRestart) + { + CActiveScheduler::Stop(); + return; + } + + // Start idle timeout + After(iDelayUs); + } + +void CShutdownTimer::ImmediateTimeoutNextRestart() +/** + Timer should immediately expire when Restart is next called. + */ + { + iImmediateTimeoutNextRestart = ETrue; + } + + +void CShutdownTimer::RunL() +/** + Implement CActive by stopping the active scheduler, which + has the effect of breaking out of the server loop. + */ + { + CActiveScheduler::Stop(); + } +