--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/HtiServicePlugins/HtiAppServicePlugin/inc/HtiAppServicePlugin.h Tue Feb 02 01:57:15 2010 +0200
@@ -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 <e32base.h>
+#include <HTIServicePluginInterface.h>
+
+// 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<class T> T Parse32( const TDesC8& a32int);
+
+
+
+protected:
+
+ // Container array for process handles for querying the process exit codes
+ RArray<RProcess> iProcessHandleArray;
+
+private:
+ CHTIServicePluginInterface* iAppServiceUiPlugin;
+ RLibrary iLibrary;
+
+
+ };
+
+#endif
+
+// End of file