connectivitymodules/SeCon/servers/pcconn/inc/sconpcconnserver.h
branchRCL_3
changeset 20 4a793f564d72
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivitymodules/SeCon/servers/pcconn/inc/sconpcconnserver.h	Wed Sep 01 12:20:56 2010 +0100
@@ -0,0 +1,247 @@
+/*
+* Copyright (c) 2005-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:  PC Connectivity server
+*
+*/
+
+
+#ifndef __SCONPCCONNSERVER_H__
+#define __SCONPCCONNSERVER_H__
+
+#include "sconconmlhandler.h"
+#include "sconconmltask.h"
+
+
+class CSConPCD;
+class CSConCSC;
+class CSConConMLParser;
+
+const TUint KSConDefaultHeapSize=0x10000;
+const TInt KSConFirstDrive = 65;
+
+_LIT8 ( KParamNameSilent, "Silent" );
+
+
+// PCD Handler Dll
+_LIT(KSConPCDLibName, "sconpcd.dll");
+const TInt KSConPCDUidValue = 0x10009D8D;
+const TUid KSConPCDUid = {KSConPCDUidValue};
+
+// CSC Handler Dll
+_LIT(KSConCSCLibName, "sconcsc.dll");
+const TInt KSConCSCUidValue = 0x10009D8D;
+const TUid KSConCSCUid = {KSConCSCUidValue};
+
+// ConML Handler Dll
+_LIT (KSConConMLHandlerLibName, "sconconmlhandler.dll");
+const TInt KSConConMLHandlerUidValue = 0x10009D8D;
+const TUid KSConConMLHandlerUid = {KSConConMLHandlerUidValue};
+
+// debug file for put and get messages
+_LIT ( KSConConMLDebugFile, "c:\\data\\handler_result.txt");
+
+// Secure ids
+_LIT_SECURE_ID(KSConPCConnClientSecureId,0x101F7C87);
+
+// PCD types
+_LIT8( KSConPCDXMLObjectType, "application/vnd.nokia.conml+xml" );
+_LIT8( KSConPCDXMLObjectType2, "application/vnd.nokia.pcd+xml" );
+_LIT8( KSConPCDWBXMLObjectType, "application/vnd.nokia.conml+wbxml" );
+_LIT8( KSConPCDWBXMLObjectType2, "application/vnd.nokia.pcd+wbxml" );
+
+// CSC types
+_LIT8( KSConCapabilityObjectType, "x-obex/capability" );
+
+// Drives
+_LIT( KSConNoDrive, "\x0" );
+_LIT( KSConDriveExists, "\x1" );
+
+// user permissions
+_LIT8( KSConPermReadOnly, "R" );
+_LIT8( KSConPermNormal, "RW" );
+// Java hash id for ConML
+_LIT8( KSConJavaHashId, "JAVA_");
+
+_LIT8( KSConAppInfoSeparator, "#" );
+
+//**********************************
+//CSConPCConnServer - PC Connectivity Server 
+//**********************************
+
+class CSConPCConnServer : public CServer2
+    {
+public:
+        // From CServer2
+    IMPORT_C static CSConPCConnServer* NewLC();
+    IMPORT_C ~CSConPCConnServer();
+    
+    /**
+     * Function to start the server
+     * @param none
+     * @return Error code
+     */
+    static TInt RunServer();
+    
+    /**
+     * Function to start the server
+     * @param none
+     * @return none
+     */
+    static void RunServerL();
+    
+    /**
+     * Increments session count.
+     * @param none
+     * @return none
+     */
+    void IncSessionCount();
+    
+    /**
+     * Decrements session count. 
+     * When count reaches zero, stops active scheduler
+     * @param none
+     * @return none
+     */ 
+    void DecSessionCount();
+    
+
+protected:
+    virtual CSession2* NewSessionL( const TVersion &aVersion, 
+                                    const RMessage2& aMessage) const;
+
+private:
+    CSConPCConnServer();
+    
+    TInt iSessionCount;
+
+    };
+
+
+class CSconFolderLister;
+class CSconBtEngine;
+
+//**********************************
+//CSConPCConnSession - Server session class, handles the requested operations
+//**********************************
+class CSConPCConnSession : public CSession2, public MWBXMLConMLCallback
+    {
+
+public:
+    static CSConPCConnSession* NewL(CSConPCConnServer& aServer);
+    
+    /**
+    * From CSession2
+    */
+    void ServiceL( const RMessage2 &aMessage);
+
+private:
+    void DispatchRequestL( const RMessage2 &aMessage);
+    void LoadPCDDllL();
+    void LoadCSCDllL();
+    void LoadConMLHandlerDllL();
+
+protected:
+    // Callback funktion for WBXML parsing
+    void ConMLL ( ConML_ConMLPtr_t aContent );
+
+private:
+    void ConstructL();
+    CSConPCConnSession ( CSConPCConnServer& aServer);
+    ~CSConPCConnSession();
+
+    TInt HandlePutMessageL();
+    TInt HandleGetMessageL();
+    TInt HandleWBXMLGetRequestL( const TDesC& aFileName );
+    TInt HandleResetMessage();
+    TInt HandleChunkMessage( const RMessage2& aMessage );
+    TInt OptionsFromExecuteL ( ConML_ExecutePtr_t aContent );
+    TInt TaskCancelL(ConML_CancelPtr_t aContent);
+    TInt TaskGetStatusL(ConML_GetStatusPtr_t aContent );
+    TInt TaskInstallL( ConML_InstallPtr_t aContent );
+    TInt TaskUnInstallL( ConML_UnInstallPtr_t aContent );
+    void SplitL( const TDesC8& aText, const TChar aSeparator, RArray<TPtrC8>& aArray );
+    TInt TaskListInstalledAppsL( ConML_ListInstalledAppsPtr_t aContent );
+    TInt TaskListDataOwnersL();
+    TInt TaskSetBURModeL( ConML_SetBURModePtr_t aContent );
+    TInt TaskGetDataSizeL( ConML_GetDataSizePtr_t aContent );
+    TInt TaskRequestDataL( ConML_RequestDataPtr_t aContent );
+    TInt TaskUpdateDeviceInfoL( ConML_UpdateDeviceInfoPtr_t aContent );
+    TInt TaskListPublicFilesL( ConML_ListPublicFilesPtr_t aContent );
+    TInt TaskGetDataOwnerStatusL( ConML_GetDataOwnerStatusPtr_t aContent );
+    TInt TaskSupplyDataL ( ConML_SupplyDataPtr_t aContent );
+    TInt TaskRebootL();
+    TInt TaskGetMetadataL( ConML_GetMetadataPtr_t aContent );
+    void AppendStatusL( ConML_ConMLPtr_t aContent, CSConStatusReply* reply );
+    void AppendUpdateDeviceInfoResultsL( ConML_ResultsPtr_t aContent, 
+                                         CSConUpdateDeviceInfo* aResult );
+    void AppendSetBURModeResultsL ( ConML_ResultsPtr_t aContent, 
+                                    CSConSetBURMode* aResult );
+    void AppendListInstalledAppsResultsL ( ConML_ResultsPtr_t aContent, 
+                                           CSConListInstApps* aResult );
+    void AppendListPublicFilesResultsL ( ConML_ResultsPtr_t aContent, 
+                                         CSConListPublicFiles* aResult );
+    void AppendRequestDataResultsL( ConML_ResultsPtr_t aContent, 
+                                    CSConRequestData* aResult );
+    void AppendSupplyDataResultsL( ConML_ResultsPtr_t aContent, 
+                                   CSConSupplyData* aResult );
+    void AppendInstallResultsL( ConML_ResultsPtr_t aContent, 
+                                CSConInstall* aResult );
+    void AppendUninstallResultsL( ConML_ResultsPtr_t aContent, 
+                                CSConUninstall* aResult );                          
+    void AppendListDataOwnersResultsL ( ConML_ResultsPtr_t aContent, 
+                                        CSConListDataOwners* aResult  );
+    void AppendGetDataOwnerStatusResultsL ( ConML_ResultsPtr_t aContent, 
+                                            CSConGetDataOwnerStatus* aResult );
+    void AppendGetDataSizeResultsL ( ConML_ResultsPtr_t aContent, 
+                                     CSConGetDataSize* aResult );
+    void AppendGetMetadataResultsL ( ConML_ResultsPtr_t aContent, 
+                                     CSConGetMetadata* aResult );
+    void AppendProgressL ( ConML_ResultsPtr_t aContent, TInt progress );
+    void AppendDrivesL( ConML_DrivesPtr_t aContent, TDriveList aDrives );
+    TDriveList DriveList( ConML_DriveListPtr_t aContent );
+    TDesC8& IntToDesLC( const TInt& anInt);
+    TDesC8& DriveNumToDesLC( const TInt& anInt );
+    TDesC8& BufToDesLC( const TDesC& aBuf );
+    TDesC8& UidToDesLC( const TUid& aUid );
+    TUid DesToUid ( const TDesC8& aDes );
+    TInt DesToInt( const TDesC8& aDes);
+    TBool HasDrives( TDriveList& aDrive );
+    TDesC8& HashToDesLC( const TDesC& aBuf );
+    TPtr DesToHashLC( const TDesC8& aDes );
+    TBool IsJavaHash( const TDesC8& aDes );
+    
+    TInt ReadOviAccountInfoL( RWriteStream& aAccountInfoStream );
+    
+// data
+private:
+    CSConPCConnServer& iServer;
+    
+    RLibrary iPCDlib;
+    RLibrary iCSClib;
+    RLibrary iConMLHandlerLib;
+    
+    CSConPCD* iPCDHandler;
+    CSConCSC* iCSCHandler;
+    CSConConMLHandler* iConMLHandler;
+    
+    RChunk iChunk;
+    CBufFlat* iBuffer;  
+    TInt iResult;
+    
+    CSconFolderLister* iFolderLister;
+    RFs iFs;
+    CSconBtEngine*  iBtEngine;
+    };
+
+#endif // __SCONPCCONNSERVER_H__