--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/inc/ncdproviderimpl.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,453 @@
+/*
+* 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: Contains CNcdProvider class
+*
+*/
+
+
+#ifndef NCD_PROVIDER_H
+#define NCD_PROVIDER_H
+
+
+#include "catalogscommunicable.h"
+#include "catalogshttpconnectionmanager.h"
+
+
+class CNcdNodeManager;
+class CNcdFavoriteManager;
+class CNcdPurchaseHistoryDb;
+class CNcdOperationManager;
+class CNcdSubscriptionManager;
+class CNcdStorageManager;
+class CNcdProtocol;
+class CCatalogsTransport;
+class MNcdConfigurationManager;
+class MCatalogsHttpSession;
+class MCatalogsSmsSession;
+class MCatalogsContext;
+class MCatalogsAccessPointManager;
+class CNcdProviderUtils;
+class MCatalogsHttpSession;
+class RFs;
+class CNcdReportManager;
+class TCatalogsConnectionMethod;
+class CNcdHttpUtils;
+class CNcdServerReportManager;
+class MNcdProviderCloseObserver;
+class CNcdGeneralManager;
+
+struct TNcdProviderContext
+ {
+ MCatalogsHttpSession* iHttpSession;
+ MCatalogsSmsSession* iSmsSession;
+ CNcdReportManager* iReportManager;
+
+ TNcdProviderContext() :
+ iHttpSession( NULL ),
+ iSmsSession( NULL ),
+ iReportManager( NULL )
+ {
+ }
+ };
+
+/**
+ * CNcdProvider provides functions to ...
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CNcdProvider : public CCatalogsCommunicable,
+ public MCatalogsHttpConnectionConfirmationObserver,
+ public MCatalogsHttpConnectionErrorObserver
+ {
+
+public:
+
+ /**
+ * TNcdProviderFunctionNumber should be used when proxies are requesting
+ * services by calling ReceiveMessageL function of this class.
+ */
+ enum TNcdProviderFunctionNumber
+ {
+ /**
+ *
+ */
+ ENcdProviderNodeManagerHandle,
+
+ /**
+ *
+ */
+ ENcdProviderPurchaseHistoryHandle,
+
+ /**
+ *
+ */
+ ENcdProviderOperationManagerHandle,
+
+ /**
+ *
+ */
+ ENcdProviderSubscriptionManagerHandle,
+
+ /**
+ *
+ */
+ ENcdProviderFavoriteManagerHandle,
+
+ /**
+ *
+ */
+ ENcdProviderServerReportManagerHandle,
+
+ /**
+ *
+ */
+ ENcdProviderRelease,
+
+ /**
+ *
+ */
+ ENcdProviderAddConfiguration,
+
+ /**
+ *
+ */
+ ENcdProviderRemoveConfiguration,
+
+
+ /**
+ *
+ */
+ ENcdProviderRetrieveConfigurations,
+
+
+ /**
+ *
+ */
+ ENcdProviderSetDefaultAccessPoint,
+
+
+ /**
+ *
+ */
+ ENcdProviderClientId,
+
+ /**
+ *
+ */
+ ENcdProviderClearCache,
+
+
+ /**
+ */
+ ENcdGetProviderInfo,
+
+ /**
+ *
+ */
+ ENcdProviderIsSimChanged,
+
+ /**
+ *
+ */
+ ENcdProviderIsFixedAp,
+
+ /**
+ *
+ */
+ ENcdProviderSyncSeenInfo
+
+ };
+
+
+ enum TNcdProviderInfo
+ {
+ ENcdProviderInfoType,
+ ENcdProviderInfoVersion,
+ ENcdProviderInfoUid,
+ ENcdProviderInfoProvisioning
+ };
+
+
+
+ /**
+ * NewLC
+ *
+ * @param aProviderIndex Local index of the provider.
+ * @return CNcdProvider* Pointer to the created object
+ * of this class.
+ */
+ static CNcdProvider* NewLC(
+ const TUid& aFamilyId,
+ MNcdProviderCloseObserver& aCloseObserver,
+ const TDesC& aEngineRoot,
+ CCatalogsTransport& aTransport,
+ CNcdStorageManager& aStorageManager );
+
+
+ /**
+ * Destructor
+ */
+ virtual ~CNcdProvider();
+
+public:
+
+ void PrepareSessionL( MCatalogsSession& aSession, TUint32 aOptions );
+
+ /**
+ * Informs objects of session removal. They should not use
+ * given session in anyway anymore
+ *
+ * @since S60 ?S60_version
+ * @param aSession Session that is not in use anymore.
+ */
+ void HandleSessionRemoval( MCatalogsSession& aSession );
+
+ void GetProviderContextL( MCatalogsContext& aContext, TNcdProviderContext& aProviderContext );
+
+ CNcdNodeManager& NodeManager();
+
+ MCatalogsAccessPointManager& AccessPointManager();
+
+ const TUid& FamilyId() const;
+
+ const TDesC& FamilyName() const;
+
+ TInt DatabaseClearingStatus() const;
+
+public: // CCatalogsCommunicable
+
+ /**
+ * TNcdNodeFunctionNumber describes the functionality that
+ * may be required using this function.
+ *
+ * @see CCatalogsCommuniCable::ReceiveMessage
+ */
+ virtual void ReceiveMessage( MCatalogsBaseMessage* aMessage,
+ TInt aFunctionNumber );
+
+ void ReceiveMessageL(
+ MCatalogsBaseMessage& aMessage,
+ TInt aFunctionNumber );
+
+ /**
+ * @see CCatalogsCommunicable::CounterPartLost
+ */
+ virtual void CounterPartLost( const MCatalogsSession& aSession );
+
+public: // MCatalogsHttpConnectionConfirmationObserver
+
+ virtual TCatalogsHttpConnectionConfirmationState
+ HandleConnectionConfirmationRequestL(
+ MCatalogsHttpSession& aSession,
+ const TCatalogsConnectionMethod& aMethod );
+
+
+public: // MCatalogsHttpConnectionErrorObserver
+
+
+ virtual void HandleConnectionErrorL(
+ MCatalogsHttpSession& aSession,
+ const TCatalogsConnectionMethod& aMethod,
+ TInt aError );
+
+
+protected:
+
+ /**
+ * Constructor
+ */
+ CNcdProvider(
+ const TUid& aFamilyId,
+ MNcdProviderCloseObserver& aCloseObserver,
+ const TDesC& aEngineRoot,
+ CCatalogsTransport& aTransport,
+ CNcdStorageManager& aStorageManager );
+
+ /**
+ * Creates the nodemanager and the data storer.
+ */
+ void ConstructL();
+
+
+ // Here are all the functions that are used when ReceiveMessageL is called
+ // and the functionality is delegated according to the given function
+ // number.
+
+ // Gives the operationmanager handle to the proxy
+ void NodeManagerHandleRequestL(
+ MCatalogsBaseMessage& aMessage ) const;
+
+ // Gives the Purchase History handle to the proxy.
+ void PurchaseHistoryHandleRequestL( MCatalogsBaseMessage& aMessage ) const;
+
+ // Gives the operationmanager handle to the proxy
+ void OperationManagerHandleRequestL(
+ MCatalogsBaseMessage& aMessage ) const;
+
+ // Gives the subscriptionmanager handle to the proxy
+ void SubscriptionManagerHandleRequestL(
+ MCatalogsBaseMessage& aMessage ) const;
+
+ // Gives the favoritemanager handle to the proxy
+ void FavoriteManagerHandleRequestL(
+ MCatalogsBaseMessage& aMessage ) const;
+
+ void ServerReportManagerHandleRequestL(
+ MCatalogsBaseMessage& aMessage ) const;
+
+ // Removes one reference of this object from the session.
+ // ( There may be multiple references, but we take care of our own. )
+ void ReleaseRequestL( MCatalogsBaseMessage& aMessage ) const;
+
+
+ void AddConfigurationRequestL( MCatalogsBaseMessage& aMessage );
+
+ void RemoveConfigurationRequestL( MCatalogsBaseMessage& aMessage );
+
+ void RetrieveConfigurationsRequestL(
+ MCatalogsBaseMessage& aMessage );
+
+ void SetDefaultAccessPointRequestL(
+ MCatalogsBaseMessage& aMessage );
+
+ void CreateClientIdRequestL(
+ MCatalogsBaseMessage& aMessage );
+
+ // Clears client cache
+ void ClearCacheRequestL(
+ MCatalogsBaseMessage& aMessage );
+
+ void GetInfoRequestL(
+ MCatalogsBaseMessage& aMessage );
+
+ void IsSimChangedRequestL( MCatalogsBaseMessage& aMessage );
+
+ void IsFixedApRequestL( MCatalogsBaseMessage& aMessage );
+
+ void SyncSeenInfoRequestL( MCatalogsBaseMessage& aMessage );
+
+ void AllowCacheCleaningL(
+ const MCatalogsContext& aContext,
+ TBool aAllow );
+
+ TBool StartupBeginL( const TDesC& aEnginePath );
+
+ void CheckDatabaseVersionsL( const TDesC& aEnginePath );
+
+
+ void StartupEndL();
+
+ void ClearProviderFilesL( const TDesC& aEnginePath );
+
+ void ClearDatabasesL( const TDesC& aEnginePath );
+ void ClearPurchaseHistoryL();
+ void ClearTempFilesL();
+
+ void HandleShutdownFileL();
+
+ // Manages the storages if SIM card is changed.
+ // aClearStorages determines whether storages are cleared or not
+ void ManageStoragesL(
+ const MCatalogsContext& aContext,
+ TBool aClearStorages );
+
+ // Hashes IMSI with SHA-1
+ HBufC8* HashImsiLC();
+
+ HBufC8* ConvertDataToTextL( const TDesC8& aData ) const;
+
+ void PurchaseHistoryPathLC( RBuf& aPath ) const;
+
+ void FamilyPathLC( RBuf& aPath ) const;
+
+ void HandleProviderOptionsL(
+ const MCatalogsContext& aContext,
+ TUint32 aOptions,
+ MCatalogsHttpSession& aHttpSession );
+
+private:
+
+ // Prevent these two if they are not implemented
+ CNcdProvider( const CNcdProvider& aObject );
+ CNcdProvider& operator =( const CNcdProvider& aObject );
+
+
+private: // data
+
+ // ID of the family this provider instance belongs to
+ TUid iFamilyId;
+
+ TUidName iFamilyName;
+
+ MNcdProviderCloseObserver& iCloseObserver;
+
+ const TDesC& iEngineRoot;
+
+ // Local provider index number of this provider. Used to index context provider fields,
+ // for example.
+ TInt iProviderIndex;
+
+ // Node manager is used to manage the creation of nodes
+ CNcdNodeManager* iNodeManager;
+
+ // Purchase history
+ CNcdPurchaseHistoryDb* iPurchaseHistory;
+
+ // Operation manager is used to manage the creation of operations
+ CNcdOperationManager* iOperationManager;
+
+
+ // Subscription manager manages subscription info
+ CNcdSubscriptionManager* iSubscriptionManager;
+
+
+ // Storage manager is used to manage all storages in the provider
+ CNcdStorageManager& iStorageManager;
+
+ // Protocol handler manages protocol sessions and provides access
+ // to response parser and request processing
+ CNcdProtocol* iProtocolHandler;
+
+ // Transport
+ CCatalogsTransport& iTransport;
+
+ MNcdConfigurationManager* iConfigurationManager;
+
+ // Access point manager is used to manage creation of access points
+ MCatalogsAccessPointManager* iAccessPointManager;
+
+ // Favorite manager is used to manage favorite node list.
+ CNcdFavoriteManager* iFavoriteManager;
+
+ // Server report manager is used to manage server report sending.
+ CNcdServerReportManager* iServerReportManager;
+
+ // ETrue if the SIM has been changed since previous startup
+ TBool iSimChanged;
+
+ // ETrue while provider is starting up
+ TBool iProviderStartingUp;
+
+ CNcdHttpUtils* iHttpUtils;
+
+ // ETrue if the engine was not shutdown properly last time
+ TBool iShutdownFailed;
+
+ CNcdGeneralManager* iGeneralManager;
+
+ TInt iDatabaseClearingStatus;
+ };
+
+
+#endif // NCD_PROVIDER_H