diff -r 7fdc9a71d314 -r 8ad140f3dd41 hti/HtiServicePlugins/HtiAppServicePlugin/inc/HtiAppServicePlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hti/HtiServicePlugins/HtiAppServicePlugin/inc/HtiAppServicePlugin.h Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,188 @@ +/* +* 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 "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: Implementation of ECOM plug-in service interface providing +* process and application control service. +* +*/ + + + +#ifndef HTIAPPSERVICEPLUGIN_H__ +#define HTIAPPSERVICEPLUGIN_H__ + +// INCLUDES +#include +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class CDesC8ArrayFlat; + +// CLASS DECLARATION +/** +* Implementation of ECOM plug-in service interface. +* Provides the service to control processes and applications. +* +*/ +class CHtiAppServicePlugin : public CHTIServicePluginInterface + { +protected: + //commands + enum TAppCommand + { + //commands + //process control + EStartProcess = 0x02, + EStartProcess_u = 0x03, + EStatusProcess = 0x04, + EStatusProcess_u = 0x05, + EStatusProcess_id = 0x06, + EStopProcess = 0x08, + EStopProcess_u = 0x09, + EStopProcess_id = 0x0A, + EListProcesses = 0x0C, + EListProcesses_u = 0x0D, + EStartProcessRetVal = 0x0E, + EStartProcessRetVal_u = 0x07, + EGetProcessExitCode = 0x0B, + + EProcessLastCommand = 0x0F, //!!! used to sort process control from + //!!! app control + + //app control + EStartApp = 0x10, + EStartApp_u = 0x11, + EStartApp_uid = 0x12, + EStartApp_uid_u = 0x13, + EStartDoc = 0x14, + EStartDoc_u = 0x15, + EStatusApp = 0x16, + EStatusApp_u = 0x17, + EStatusDoc = 0x18, + EStatusDoc_u = 0x19, + EStatusApp_uid = 0x1A, + EStopApp = 0x1C, + EStopApp_u = 0x1D, + EStopDoc = 0x1E, + EStopDoc_u = 0x1F, + EStopApp_uid = 0x20, + EListApps = 0x24, + EListApps_u = 0x25, + + EAppLastCommand = 0x2F, //!!! used to sort process control from + //!!! app control + EInstall = 0x30, + EInstall_u = 0x31, + EUnInstall = 0x32, + EUnInstallName_u = 0x33, + EUnInstallName = 0x34, + + ESisLastCommand = 0x3F, //!!! used to sort sis control from + //!!! app control + //responses + EOk = 0xF0, + ENotFound = 0xF1, + EAlreadyRunning = 0xF2, + EAlreadyStopped = 0xF3, + ERunning = 0xF4, + EKilled = 0xF5, + EPanic = 0xF6 + }; + +public: + static CHtiAppServicePlugin* NewL(); + + // Interface implementation + void ProcessMessageL(const TDesC8& aMessage, + THtiMessagePriority aPriority); + + /** + * Called by HTI-framework to initialize this plugin + */ + void InitL(); + +protected: + CHtiAppServicePlugin(); + void ConstructL(); + + virtual ~CHtiAppServicePlugin(); + + void HandleProcessControlL(const TDesC8& aMessage); + + /** + * Extracts string from incoming request and convert it to unicode + * for non-unicode request + * aResult should have enough maz length and it will contain + * Function returns either offset for a next parameter in aRequest + * or some symbian error code + */ + TInt ParseString( const TDesC8& aRequest, + TInt anOffset, + TBool aUnicode, + TDes& aResult); + + //command handlers + void HandleStartProcessL( const TDesC& aProgramName, + const TDesC& aCmdLine, + TBool aStoreProcessHandle ); + + void HandleStopProcessL( RProcess& aProcess ); + void HandleStatusProcessL( RProcess& aProcess ); + + void HandleListProcessesL( const TDesC& aMatch ); + + //construct and send short message + void SendMessageL(TAppCommand aResponseCode, const TDesC8& aMsg = KNullDesC8 ); + + /** + * Helper to send error message + * @return KErrNone or some system-wide error code + */ + inline TInt SendErrorMsg( TInt anError, const TDesC8& aMsg ); + + /** + * + */ + TInt OpenProcessL( RProcess& aProcess, const TDesC& aMatch ); + TInt OpenProcessL( RProcess& aProcess, const TUint32 aProcessId ); + + /** + * Convert string to T 32bit int (e.g. TUint, TInt32) + */ + template T Parse32( const TDesC8& a32int); + + + +protected: + + // Container array for process handles for querying the process exit codes + RArray iProcessHandleArray; + +private: + CHTIServicePluginInterface* iAppServiceUiPlugin; + RLibrary iLibrary; + + + }; + +#endif + +// End of file