// Copyright (c) 2006-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:// Non-secure versions will be xxxServer.Dll and require a thread to be started// in the process of the client. The client initialises the server by calling the// one and only ordinal.// ///** @file @test @internalComponent - Internal Symbian test code*/#include "TConArcTestServer.h"#include "TCnfStep.h"#include "TB64CnvStep.h"#include "TLoadEcomCnvStep.h"_LIT(KServerName,"TConArcTestServer");CTConArcTestServer* CTConArcTestServer::NewL()/** @return - Instance of the test server Same code for Secure and non-secure variants Called inside the MainL() function to create and start the CTestServer derived server. */ { CTConArcTestServer * server = new (ELeave) CTConArcTestServer(); CleanupStack::PushL(server); // CServer base class call server->StartL(KServerName); CleanupStack::Pop(server); return server; }LOCAL_C void MainL()/** Secure variant Much simpler, uses the new Rendezvous() call to sync with the client*/ { RProcess().DataCaging(RProcess::EDataCagingOn); RProcess().SecureApi(RProcess::ESecureApiOn); CActiveScheduler* sched=NULL; sched=new(ELeave) CActiveScheduler; CActiveScheduler::Install(sched); CTConArcTestServer* server = NULL; // Create the CTestServer derived server TRAPD(err,server = CTConArcTestServer::NewL()); if(!err) { // Sync with the client and enter the active scheduler RProcess::Rendezvous(KErrNone); sched->Start(); } delete server; delete sched; }GLDEF_C TInt E32Main()/** @return - Standard Epoc error code on process exit Secure variant only Process entry point. Called by client using RProcess API*/ { __UHEAP_MARK; CTrapCleanup* cleanup = CTrapCleanup::New(); if(cleanup == NULL) { return KErrNoMemory; } TRAP_IGNORE(MainL()); delete cleanup; __UHEAP_MARKEND; return KErrNone; }CTestStep* CTConArcTestServer::CreateTestStep(const TDesC& aStepName)/** @return - A CTestStep derived instance Secure and non-secure variants Implementation of CTestServer pure virtual */ { CTestStep* testStep = NULL; // This server creates just one step but create as many as you want // They are created "just in time" when the worker thread is created if(aStepName == KTCnfStep) testStep = new CTCnfStep(); else if(aStepName == KTB64CnvStep) testStep = new CTB64CnvStep(); else if(aStepName == KTLoadEComCnvStep) testStep = new CTLoadEComCnvStep(); return testStep; }