diff -r 000000000000 -r 4e1aa6a622a0 sensorservices/sensorserver/src/server/sensrvserverstartup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sensorservices/sensorserver/src/server/sensrvserverstartup.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,121 @@ +/* +* Copyright (c) 2006 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: Contains methods handling startup of the server process. +* +*/ + + +#include +#include "sensrvserver.h" +#include "sensrvdefines.h" +#include "sensrvtrace.h" +#include "sensrvssyactivescheduler.h" + + +TInt E32Main(void); // Process entry point + +// ============================= LOCAL FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// Function that starts the sensrvserver. +// ----------------------------------------------------------------------------- +// +static void RunServerL() + { + COMPONENT_TRACE( ( _L( "Sensor Server - RunServer()" )) ); + + // Naming the server process and thread after the startup helps to debug panics + // No error checking as names are not critical for operation + User::RenameProcess(KSensrvProcessName); + User::RenameThread(KSensrvMainThreadName); + + // Use process default priority (EPriorityForgeround) + + // Create and install the active scheduler we need + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CleanupStack::PushL(scheduler); + + CActiveScheduler::Install( scheduler ); + + // Now we are ready to instantiate the actual server instance + CSensrvServer* server = CSensrvServer::NewLC(); + + // Initialisation complete, now signal the client + RProcess::Rendezvous(KErrNone); + + // Ready to run + COMPONENT_TRACE( ( _L( "Sensor Server - RunServer() - Starting scheduler..." )) ); + CActiveScheduler::Start(); + + COMPONENT_TRACE( ( _L( "Sensor Server - RunServer() - Scheduler stopped" )) ); + + // Cleanup + CleanupStack::PopAndDestroy(server); + CleanupStack::PopAndDestroy(scheduler); + + COMPONENT_TRACE( ( _L( "Sensor Server - RunServer() - return" )) ); + } + +// ----------------------------------------------------------------------------- +// Main function +// ----------------------------------------------------------------------------- +// +TInt E32Main() + { + COMPONENT_TRACE( ( _L( "Sensor Server - E32Main()" )) ); + + __UHEAP_MARK; + +#ifdef MEMORY_TRACE_DEBUG + // TRACE heap usage + TInt heapSize = User::Heap().Size(); + TInt biggestBlock(0); + TInt heapAvail = User::Heap().Available(biggestBlock); + TInt used(heapSize-heapAvail); + MEMORY_TRACE( ( _L( "#### Sensor Server, main thread starting - HEAP: Size: %d, Available: %d, Used: %d" ), heapSize, heapAvail, used ) ); +#endif + + TInt err(KErrNone); + + // Start server. + CTrapCleanup* cleanup = CTrapCleanup::New(); + err = KErrNoMemory; + + if ( cleanup ) + { + TRAP(err, RunServerL()); + + delete cleanup; + cleanup = NULL; + } + + COMPONENT_TRACE( ( _L( "Sensor Server - E32Main - return %d" ), err ) ); + +#ifdef MEMORY_TRACE_DEBUG + // TRACE heap usage + heapSize = User::Heap().Size(); + heapAvail = User::Heap().Available(biggestBlock); + TInt newUsed(heapSize-heapAvail); + MEMORY_TRACE( ( _L( "#### Sensor Server, main thread exit - HEAP: Size: %d, Available: %d, Used: %d, Change in used: %d" ), heapSize, heapAvail, newUsed, newUsed - used ) ); + + // Print out the heap contents + +#endif + + __UHEAP_MARKEND; + + return err; + } + +// End of File