cbsref/csyrefplugins/csy27010/src/timeouter.cpp
author hgs
Tue, 22 Jun 2010 11:02:32 +0100
changeset 44 8b72faa1200f
permissions -rw-r--r--
201024_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     1
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     2
// * Copyright 2004 Neusoft America Inc.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     3
// * All rights reserved.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     4
// * This component and the accompanying materials are made available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     5
// * under the terms of the Eclipse Public License v1.0
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     6
// * which accompanies this distribution, and is available
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     7
// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     8
// *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
     9
// * Contributors:
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    10
// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    11
// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    12
// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    13
// *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    14
// * Description:  This file contains the implementation a very simple timeout class.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    15
//
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    16
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    17
// timeouter.cpp
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    18
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    19
/** @file timeouter.cpp
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    20
 *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    21
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    22
 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    23
#include "timeouter.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    24
#include "CsyDebugLogger.h"
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    25
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    26
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    27
CActiveTimeouter* CActiveTimeouter::NewL(MTimeoutObserver& aObserver)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    28
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    29
 * 2 phase constructor. Call this function to create a new 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    30
 * active timeouter object.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    31
 *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    32
 * @param aObserver reference to the Observer object
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    33
 * @return a newly created CActiveTimeouter object
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    34
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    35
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    36
	CActiveTimeouter* p = new (ELeave) CActiveTimeouter(aObserver);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    37
	CleanupStack::PushL(p);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    38
	p->ConstructL(); 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    39
	CleanupStack::Pop(p);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    40
	return p;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    41
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    42
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    43
CActiveTimeouter::~CActiveTimeouter()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    44
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    45
 * Destructor
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    46
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    47
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    48
	Cancel();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    49
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    50
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    51
void CActiveTimeouter::Start(const TTimeIntervalMicroSeconds32& aTimeoutMs)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    52
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    53
 * Start a timeout
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    54
 *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    55
 * @param aTimeoutMs The timeout period in microseconds
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    56
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    57
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    58
	Stop(); //Cancel current request if there is one
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    59
	iStatus = KRequestPending;
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    60
	After(aTimeoutMs);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    61
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    62
  
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    63
void CActiveTimeouter::Stop()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    64
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    65
 * Stop the timer (if running)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    66
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    67
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    68
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    69
	if (IsActive())
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    70
	      Cancel();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    71
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    72
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    73
CActiveTimeouter::CActiveTimeouter(MTimeoutObserver& aObserver)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    74
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    75
 * Constructor
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    76
 *
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    77
 * @param aObserver reference to the Observer object
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    78
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    79
 :	CTimer(CActive::EPriorityStandard),
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    80
	iTheTimeoutObserver(aObserver)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    81
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    82
	CLASSNAMEINIT(CActiveTimeouter)
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    83
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    84
	CActiveScheduler::Add(this);
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    85
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    86
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    87
void CActiveTimeouter::RunL()
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    88
/**
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    89
 * Called by the Active Scheduler when the timeout completes.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    90
 * This function calls the TimedOut() function implemented 
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    91
 * by the observer.
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    92
 */
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    93
	{
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    94
	iTheTimeoutObserver.TimedOut();
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    95
	}
8b72faa1200f 201024_02
hgs
parents:
diff changeset
    96