diff -r 7333d7932ef7 -r 8b7f4e561641 installationservices/swi/source/daemon/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/installationservices/swi/source/daemon/main.cpp Wed Sep 01 12:22:02 2010 +0100 @@ -0,0 +1,83 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + +/** + @file + @internalComponent +*/ +#include +#include + +#include "daemon.h" +#include "daemonbehaviour.h" +#include "log.h" + +namespace Swi +{ + +/** + * Daemon main function + */ +void MainL() + { + CDaemonBehaviour* daemonBehaviour=CDaemonBehaviour::NewLC(); + CDaemon::NewLC(*daemonBehaviour); + + RProcess::Rendezvous(KErrNone); + CActiveScheduler::Start(); + + CleanupStack::PopAndDestroy(2, daemonBehaviour); + } + +} // namespace Swi + +/** + * Entry Point, sets up the cleanup stack and calls the main function. + * @return Always returns KErrNone even if SwiDemon has failed to start. + * Note: The break request to fix this problem (BR 1846) was rejected by + * the SCB 17/5/2006 so this cannot be fixed. + * see http://smglinx.intra/twiki/bin/view/BR/1846 for more details. + */ +GLDEF_C TInt E32Main() + { + DEBUG_PRINTF(_L8("SWI Daemon - Starting Daemon")); + + CTrapCleanup* cleanup = CTrapCleanup::New(); + CActiveScheduler* scheduler=new CActiveScheduler(); + + if(cleanup == NULL || scheduler==NULL) + { + delete scheduler; + delete cleanup; + return KErrNoMemory; + } + CActiveScheduler::Install(scheduler); + + + // workaround for DEF056843 to ignore return code when this leaves + // unable to remove this (supposed to be temporary workaround) + // due to BR 1846 (see above) + TRAP_IGNORE(Swi::MainL()); + + delete scheduler; + delete cleanup; + + DEBUG_PRINTF(_L8("SWI Daemon - Daemon Exiting")); + return KErrNone; + } +