mmtestenv/mmtestfw/Source/TestFrameworkServer/TestFrameworkServer.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
#include <e32svr.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
#include "TestFrameworkServer.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include "TestFrameworkServer.inl"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <testframeworkipc.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
 * Initiate server exit when the timer expires
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
void CTestFrameworkServerShutdown::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
 * Test Framework server static constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
 * NOTE : only one instance of the server process should run
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
 * during any Test Framework run; all client sessions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
 * will use this one instance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
CMmfIpcServer* CTestFrameworkServer::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	CTestFrameworkServer* s = new(ELeave) CTestFrameworkServer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
	s->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
 * Test Framework server first-phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
CTestFrameworkServer::CTestFrameworkServer()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
	:CMmfIpcServer(0, ESharableSessions)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
// set up so that iConsole is NULL. A call to OpenLogL will initialise the console
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
// and file (if any)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
 * Test Framework server second-phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
 * Starts the server; does not initialise the log
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
 * (this must be done independently with a call to OpenLogL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
void CTestFrameworkServer::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	StartL(KTestFrameworkServerName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	//Ensure that the server will exit even if the first client fails to connect
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	iShutdown.ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	iShutdown.Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	iLogMode = 0;	// initial value : not running any log
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	iConsole = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	iFileLogger = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
 * Test Framework server destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
CTestFrameworkServer::~CTestFrameworkServer()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	CloseLog();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
 * Create new server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
 * @param	"const TVersion &aVersion"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
 *			Server version (required)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
 * @return	"CSharableSession*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
 *			The created server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
CMmfIpcSession* CTestFrameworkServer::NewSessionL(const TVersion &aVersion) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	TVersion ver(KTestFrameworkServerMajorVersionNumber,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
			     KTestFrameworkServerMinorVersionNumber,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
			     KTestFrameworkServerBuildVersionNumber);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	if (!User::QueryVersionSupported(ver, aVersion))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	// make new session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	return new(ELeave) CTestFrameworkServerSession();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
 * Add a server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
void CTestFrameworkServer::AddSession()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	++iSessionCount;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	iShutdown.Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
 * Drop a server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
void CTestFrameworkServer::DropSession()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	if (--iSessionCount <= 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
		iShutdown.Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
 * Add an input window (at request from client).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
 * @param	"CTestFrameworkServerSession* aOwner"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
 *			Window owning server session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
void CTestFrameworkServer::AddInputWindowL(CTestFrameworkServerSession* aOwner)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
	if (iInputWindow.HasOwner())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
		User::Leave(KErrAlreadyExists);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	// else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
	iInputWindow.SetOwner(aOwner);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
	TRect rect;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
	rect.iTl = TPoint(0,0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
	rect.iBr = TPoint(KConsFullScreen, KConsFullScreen);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
	iInputWindow.SetWinRectAndNotifyOwner(rect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
 * Remove an input window (at request from client).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
 * @param	"CTestFrameworkServerSession* aOwner"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
 *			Window owning server session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
void CTestFrameworkServer::RemoveWindow(CTestFrameworkServerSession* aOwner)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	if (aOwner == iInputWindow.Owner())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
		iInputWindow.SetOwner(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
 * Open a log.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
 * @param	"const TDesC& aLogName"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
 *			The log name
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
 * @param	"TInt aLogMode"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
 *			The log mode (as bitmask of TTestFrameworkLogMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
void CTestFrameworkServer::OpenLogL(const TDesC& aLogName, TInt aLogMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
	// NB we need to check if a console is already open - if so, we do NOT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	// create another one. Ditto with file / port.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	if(aLogMode & ELogToConsole)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		if(!iConsole)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
			iConsole = CServerConsole::NewL(aLogName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
			CConsoleBase* theConsole = iConsole->Console();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
			theConsole->Printf(_L("%S : Server log starting\n"), &aLogName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
			iLogMode |= ELogToConsole;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
			if (aLogMode & ELogConsoleFull)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
				iLogMode |= ELogConsoleFull;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	// NB relative paths will not work with TParse (there is no file server open).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
	// Exception is a bare filename (with no path) : this will be found in root of C:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
	// NOTE! We have no mechanism to notify this error. The console will display
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
	// and then exit. The log file cannot be opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
	// TO BE ENHANCED - if console is made active, then we can pause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
	if(aLogMode & ELogToFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
		if(!iFileLogger)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
			TRAPD(err, iFileLogger = CFileLogger::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
			if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
				// if we can't create a logger, we panic
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
				User::Panic(_L("TestFrameworkServer"), 1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
			_LIT(KLogPath, "C:\\Logs\\TestResults");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
			_LIT(KDefault, "C:\\.htm"); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
			TParse parseLogName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
			parseLogName.Set(aLogName, NULL, NULL); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
			TFileName logFilePath;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
			logFilePath = KLogPath;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
			if(parseLogName.PathPresent())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
				logFilePath.Append(parseLogName.Path());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
				logFilePath.Append(_L("\\"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
			// overwrite extension if supplied with .htm
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
			TParse logFileFullName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
			TInt returnCode = logFileFullName.Set(KDefault, &logFilePath, &aLogName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
			if (returnCode == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
				TInt ret = iFileLogger->Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
				if (ret == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
					iFileLogger->CreateLog(logFilePath, logFileFullName.NameAndExt());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
					iLogMode |= ELogToFile;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
	if(aLogMode & ELogToPort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
		// RDebug::Print will deal with the serial port, we don't do anything special here
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
		iLogMode |= ELogToPort;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
 * Write to the log.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
 * @param	"const TDesC& aMsg"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
 *			The message string to write
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
 * @param	"TInt aLogMode"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
 *			The log mode (as bitmask of TTestFrameworkLogMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
void CTestFrameworkServer::WriteLog(const TDesC& aMsg, TInt aLogMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
	if(aLogMode & ELogToConsole)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
		if(iConsole)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
			CConsoleBase* theConsole = iConsole->Console();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
			theConsole->Printf(aMsg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
			theConsole->Printf(_L("\n")); // add newline
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
	if(aLogMode & ELogToFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
		if(iFileLogger)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
			iFileLogger->WriteLog(aMsg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
	if(aLogMode & ELogToPort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
		RDebug::Print(aMsg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
 * Close the log.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
void CTestFrameworkServer::CloseLog()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
	if (iFileLogger != NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
		iFileLogger->CloseLog();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
	delete(iFileLogger);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
	iFileLogger = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
	delete(iConsole);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
	iConsole = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
	iLogMode = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
 * Get the log status.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
 * @return	"TInt"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
 *			The log status (as bitmask of TTestFrameworkLogMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
TInt CTestFrameworkServer::LogStatus() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
	return iLogMode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
 * Default window constructor (no owner)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
TWindow::TWindow()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
	iOwner = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
 * Default window constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
 * @param	"CTestFrameworkServerSession* aOwner"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
 *			The window owner
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
TWindow::TWindow(CTestFrameworkServerSession* aOwner)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
	iOwner = aOwner;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
 * Set the window owner
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
 * @param	"CTestFrameworkServerSession* aOwner"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
 *			The window owner
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
void TWindow::SetOwner(CTestFrameworkServerSession* aOwner)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
	iOwner = aOwner;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
 * Set the window rectangle, and notify owner
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
 * @param	"const TRect& aWinRect"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
 *			The window rectangle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
void TWindow::SetWinRectAndNotifyOwner(const TRect& aWinRect)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
	if (HasOwner())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
		iOwner->NotifyWindowChanged(aWinRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
 * Does this window have an owner?
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
 * @return	"TBool"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
 *			ETrue if window has an owner
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
TBool TWindow::HasOwner()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
	if (iOwner)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
		return ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
 * Server session first-phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
CTestFrameworkServerSession::CTestFrameworkServerSession()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
 * Create a server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
 * @param "aServer"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
 *			The server to add this session to
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
void CTestFrameworkServerSession::CreateL(const CMmfIpcServer& aServer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	CMmfIpcSession::CreateL(aServer);	// does not leave
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
	//Add session to server first. If anything leaves, it will be removed by the destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
	iServer = STATIC_CAST(CTestFrameworkServer*, (CONST_CAST(CMmfIpcServer*, &aServer)));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
	iServer->AddSession();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
	ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
 * Server session second-phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
void CTestFrameworkServerSession::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
 * Server session destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
CTestFrameworkServerSession::~CTestFrameworkServerSession()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
	iServer->RemoveWindow(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
	iServer->DropSession();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
 * Server session service function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
 * @param "aMessage"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
 *			The message to be serviced.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
void CTestFrameworkServerSession::ServiceL(const RMmfIpcMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
	switch (aMessage.Function())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
	case ECreateInputWindow:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
		SetOwnCopyOfWindowMessageL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
		iServer->AddInputWindowL(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
	case ENotifyIfWindowChange:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
		SetOwnCopyOfWindowMessageL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
	case ECancelNotifyIfWindowChange:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
		CompleteOwnCopyOfWindowMessage(KErrCancel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
		aMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
	// logging messages
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
	case EOpenLog:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
		TBuf<KMaxLogFilenameLength> msgBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
		TInt r = MmfMessageUtilX::Read(aMessage, 0, msgBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
		if (r != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
			RunError(aMessage, r);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
			iServer->OpenLogL(msgBuf, aMessage.Int1());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
			aMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
	case EWriteLog:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
		TBuf<KMaxLogLineLength> msgBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
		TInt r = MmfMessageUtilX::Read(aMessage, 0, msgBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
		if (r != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
			RunError(aMessage, r);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
			iServer->WriteLog(msgBuf, aMessage.Int1());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
			aMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
	case ECloseLog:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
		iServer->CloseLog();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
		aMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
	case ELogStatus:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
		TPckgBuf<TInt> countPckg(iServer->LogStatus());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
		TInt r = MmfMessageUtilX::Write(aMessage, 0, countPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
		if (r != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
			RunError(aMessage, r);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
			aMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
		// ? should panic here
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
 * Error handler for server session.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
 * Completes the pending message using the error code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
 * @param	"TInt aError"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
 *			The error code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
 * @return	"TInt"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
 *			The error code (always KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
 TInt CTestFrameworkServerSession::RunError(const RMmfIpcMessage& aMessage, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
	aMessage.Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
 * Set own copy of message.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
 * Helper function to enable window change notification.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
 * @param "aMessage"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
 *			The message to be serviced.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
 void CTestFrameworkServerSession::SetOwnCopyOfWindowMessageL(const RMmfIpcMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
	if (iCanCompleteWindowMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
		User::Leave(KErrAlreadyExists);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
	//else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
	iWindowMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
	iCanCompleteWindowMessage = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
	if (iNeedToNotifyClientOfWindowSizeChange)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
		TInt err = MmfMessageUtil::Write(iWindowMessage, 0, iWinRectBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
		CompleteOwnCopyOfWindowMessage(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
		iNeedToNotifyClientOfWindowSizeChange = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
 * Complete own copy of message.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
 * Helper function to enable window change notification.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
 * @param "TInt aReason"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
 *			The message return code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
 void CTestFrameworkServerSession::CompleteOwnCopyOfWindowMessage(TInt aReason)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
	if (iCanCompleteWindowMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
		iWindowMessage.Complete(aReason);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
	iCanCompleteWindowMessage = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
 * Window change notification.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
 * @param "const TRect& aWinRect"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
 *			The window rectangle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
void CTestFrameworkServerSession::NotifyWindowChanged(const TRect& aWinRect)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
	iWinRectBuf() = aWinRect;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
	if (iCanCompleteWindowMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
		TInt err = MmfMessageUtilX::Write(iWindowMessage, 0, iWinRectBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
		CompleteOwnCopyOfWindowMessage(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
		iNeedToNotifyClientOfWindowSizeChange = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
// EXE/DLL initialisation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
// NOTE! None of this should be built when compiling for Unit Testing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
#if !defined (__TSU_TESTFRAMEWORK__)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
 * Perform all server initialisation, in particular creation of the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
 * scheduler and server; then run the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
static void RunServerL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
	// create and install the active scheduler we need
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
	CActiveScheduler* s = new(ELeave) CActiveScheduler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
	CActiveScheduler::Install(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
	//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
	// create the server (leave it on the cleanup stack)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
	CleanupStack::PushL(CTestFrameworkServer::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
	//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
	// Initialisation complete, now signal the client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
	RProcess::Rendezvous(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
	//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
	// Ready to run
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
	//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
	// Cleanup the server and scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
	CleanupStack::PopAndDestroy(2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
 * Main entry point for the server thread
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
 * @param "TTestFrameworkServerStart& aStart"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
 *			The server starter.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
static TInt RunServer()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
	__UHEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
	CTrapCleanup* cleanup = CTrapCleanup::New();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
	TInt r = KErrNoMemory;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
	if (cleanup)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
		TRAP(r, RunServerL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
		delete cleanup;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
	//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
	__UHEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
	return r;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
GLDEF_C TInt E32Main()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
// Server process entry-point
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
// Recover the startup parameters and run the server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
	TInt r = RunServer();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
	return r;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
#endif // __TSU_TESTFRAMEWORK__