brandingserver/bsclient/bsprocessstarter.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:31:29 +0300
branchRCL_3
changeset 21 cfd5c2994f10
parent 0 e6b17d312c8b
child 22 113b91e0a2ad
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 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:  bsprocessstarter.h
*
*/

#ifndef __PROCESSSTARTER_H__
#define __PROCESSSTARTER_H__

#include <e32std.h>
class TProcessStartupParam;



/**
 * Generic process starter.
 */
class BSProcessStarter
    {
    public:     // New methods

        static void FullExePathForClienLocation(
                        const TDesC& aExeName,
                        TFileName& aFullExePath );

        static TInt StartInstance(
                        const TDesC& aFullExePath,
                        const TDesC& aCommand,
                        const TArray< TProcessStartupParam >* aParams );

        static TInt ConnectToServer(
                        const TDesC& aFullExePath,
                        const TDesC& aCommand,
                        const TArray< TProcessStartupParam >* aParams,
                        RSessionBase& aSessionToConnect,
                        const TDesC& aServerName,
                        const TVersion& aClientVersion,
                        TInt aAsyncMessageSlots );



    private:    // Helpers
        static TInt DoStartInstance(
                        const TDesC& aFullExePath,
                        const TDesC& aCommand,
                        const TArray< TProcessStartupParam >* aParams );

        static TInt ApplyParameters(
                        const TArray< TProcessStartupParam >* aParams,
                        RProcess& aProcess );

    };




/**
 * Generic process startup parameters.
 */
class TProcessStartupParam
    {
    public:

        TProcessStartupParam();
        void Set( TInt aSlot, const RHandleBase& aHandle );
        void Set( TInt aSlot, const RSubSessionBase& aSubSession );
        void Set( TInt aSlot, const TDesC16& aDes );
        void Set( TInt aSlot, const TDesC8& aDes );
        void Set( TInt aSlot, TInt aInt );
        TInt ApplyParam( RProcess& aProcess ) const;



    private: //data

        enum TParamType{ EUnknown, EHandle, ESubSession,
                         EDes16, EDes8, EInt };

        TParamType iType;
        TInt iSlot;
        const RHandleBase* iHandle;
        const RSubSessionBase* iSubSession;
        TPtrC16 iDes16;
        TPtrC8 iDes8;
        TInt iInt;
    };


#endif      //  __PROCESSSTARTER_H__


//END OF FILE