os/security/cryptomgmtlibs/securitycommonutils/source/scsserver/shutdowntimer.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of the License "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
* Implements the timer which stops the server after no sessions have been
sl@0
    16
* open for a defined period.
sl@0
    17
*
sl@0
    18
*/
sl@0
    19
sl@0
    20
sl@0
    21
/**
sl@0
    22
 @file
sl@0
    23
*/
sl@0
    24
sl@0
    25
#include <scs/scsserver.h>
sl@0
    26
sl@0
    27
sl@0
    28
CShutdownTimer* CShutdownTimer::NewL(TInt aDelayUs)
sl@0
    29
/**
sl@0
    30
	Factory function allocates a new, initialized instance of CShutdownTimer.
sl@0
    31
sl@0
    32
	@param	aDelayUs		Delay in microseconds.
sl@0
    33
	@return					New, initialized instance of CShutdownTimer.
sl@0
    34
							The newly-created object is owned by the caller.
sl@0
    35
 */
sl@0
    36
	{
sl@0
    37
	CShutdownTimer* self = new(ELeave) CShutdownTimer(aDelayUs);
sl@0
    38
	CleanupStack::PushL(self);
sl@0
    39
	self->ConstructL();				// CTimer implementation
sl@0
    40
	CleanupStack::Pop(self);
sl@0
    41
	return self;
sl@0
    42
	}
sl@0
    43
sl@0
    44
CShutdownTimer::CShutdownTimer(TInt aDelayUs)
sl@0
    45
/**
sl@0
    46
	Record the shutdown period and add this object to the active scheduler.
sl@0
    47
sl@0
    48
	@param	aDelayUs		Delay in microseconds.
sl@0
    49
 */
sl@0
    50
 :	CTimer(CActive::EPriorityStandard),
sl@0
    51
	iDelayUs(aDelayUs)
sl@0
    52
	{
sl@0
    53
	CActiveScheduler::Add(this);
sl@0
    54
	}
sl@0
    55
sl@0
    56
void CShutdownTimer::Restart()
sl@0
    57
/**
sl@0
    58
	Restart this timer.  This timer should not be active when this
sl@0
    59
	function is called.
sl@0
    60
sl@0
    61
	Once started, the timer can be stopped with the base class' Cancel function.
sl@0
    62
 */
sl@0
    63
	{
sl@0
    64
	if(iImmediateTimeoutNextRestart)
sl@0
    65
		{
sl@0
    66
		CActiveScheduler::Stop();
sl@0
    67
		return;
sl@0
    68
		}
sl@0
    69
sl@0
    70
	// Start idle timeout
sl@0
    71
	After(iDelayUs);
sl@0
    72
	}
sl@0
    73
sl@0
    74
void CShutdownTimer::ImmediateTimeoutNextRestart()
sl@0
    75
/**
sl@0
    76
   Timer should immediately expire when Restart is next called.
sl@0
    77
 */
sl@0
    78
	{
sl@0
    79
	iImmediateTimeoutNextRestart = ETrue;
sl@0
    80
	}
sl@0
    81
sl@0
    82
sl@0
    83
void CShutdownTimer::RunL()
sl@0
    84
/**
sl@0
    85
	Implement CActive by stopping the active scheduler, which 
sl@0
    86
	has the effect of breaking out of the server loop.
sl@0
    87
 */
sl@0
    88
	{
sl@0
    89
	CActiveScheduler::Stop();
sl@0
    90
	}
sl@0
    91