diff -r 000000000000 -r f0cf47e981f9 mmsharing/mmshmanagercli/src/musmanagerserverstarter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshmanagercli/src/musmanagerserverstarter.cpp Thu Dec 17 08:44:37 2009 +0200 @@ -0,0 +1,90 @@ +/* +* 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: ?Description +* +*/ + + +// INCLUDES +#include "musmanagerserverstarter.h" +#include "musmanageripccommon.h" +#include "muslogger.h" + +// ---------------------------------------------------------------------------- +// MusManagerServerStarter::Start +// ---------------------------------------------------------------------------- +// +TInt MusManagerServerStarter::Start () + { + MUS_LOG( "mus: [MUSCLI] -> MusManagerServerStarter::Start()" ); + TInt err( KErrNone ); + + if( !Started() ) + { + RSemaphore semaphore; + err = semaphore.CreateGlobal( KMusManagerServerSemaphoreName ,0 ); + if ( err != KErrNone ) + { + MUS_LOG1( "mus: [MUSCLI] <- MusManagerServerStarter::Start( %d )", + err ); + return err; + } + + err = CreateServerProcess( semaphore ); + semaphore.Close (); + } + MUS_LOG( "mus: [MUSCLI] <- MusManagerServerStarter::Start()" ); + return err; + } + +// ---------------------------------------------------------------------------- +// MusManagerServerStarter::Started +// ---------------------------------------------------------------------------- +// +TBool MusManagerServerStarter::Started() + { + MUS_LOG( "mus: [MUSCLI] -> MusManagerServerStarter::Start()" ); + TFindServer findServer( KMusManagerServerName ); + TFullName name; + if (findServer.Next(name) == KErrNone) + { + MUS_LOG( "mus: [MUSCLI] <- MusManagerServerStarter::Start()" ); + return ETrue; // Server already running + } + MUS_LOG( "mus: [MUSCLI] <- MusManagerServerStarter::Start()" ); + return EFalse; + } + +// ---------------------------------------------------------------------------- +// MusManagerServerStarter::CreateServerProcess +// ---------------------------------------------------------------------------- +// +TInt MusManagerServerStarter::CreateServerProcess( RSemaphore& aSemaphore ) + { + TInt err = KErrNone; + const TUidType serverUid( KNullUid, KNullUid, KServerUid3 ); + RProcess server; + err = server.Create( KMusManagerServerName, KNullDesC() ,serverUid ); + if ( err ) + { + return err; + } + server.Resume(); + aSemaphore.Wait(); + TInt exitReason = server.ExitReason(); + server.Close(); + return exitReason; + } + +// End of File