--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/client/inc/ncdoperationmanagerproxy.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,482 @@
+/*
+* 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 CNcdOperationManagerProxy class
+*
+*/
+
+
+#ifndef NCD_OPERATION_MANAGER_PROXY_H
+#define NCD_OPERATION_MANAGER_PROXY_H
+
+
+#include <e32base.h>
+#include <e32cmn.h>
+
+#include "ncdbaseproxy.h"
+#include "ncdoperationproxyremovehandler.h"
+#include "ncdnodefunctionids.h"
+#include "ncdoperationdatatypes.h"
+#include "ncdchildloadmode.h"
+#include "ncdsearchfilter.h"
+#include "ncdsubscriptionoperation.h"
+#include "ncddownloadoperationobserver.h"
+
+class MNcdOperation;
+class CNcdLoadNodeOperationProxy;
+class CNcdNodeProxy;
+class CNcdDownloadOperationProxy;
+class CNcdFileDownloadOperationProxy;
+class MNcdDownloadOperationObserver;
+class MNcdFileDownloadOperationObserver;
+class CNcdPurchaseOperationProxy;
+class MNcdPurchaseOperationObserver;
+class CNcdNodeManagerProxy;
+class CNcdNodeIdentifier;
+class CNcdPurchaseOptionProxy;
+class CNcdInstallOperationProxy;
+class CNcdSilentInstallOperationProxy;
+class MNcdInstallOperationObserver;
+class CNcdRightsObjectOperationProxy;
+class MNcdRightsObjectOperationObserver;
+class CNcdSubscriptionOperationProxy;
+class MNcdSubscriptionOperationObserver;
+class MNcdInstallationService;
+class MNcdClientLocalizer;
+class MNcdCreateAccessPointOperationObserver;
+class CNcdCreateAccessPointOperationProxy;
+class MNcdSendHttpRequestOperationObserver;
+class CNcdSendHttpRequestOperationProxy;
+class TNcdConnectionMethod;
+class CNcdServerReportOperationProxy;
+class MNcdServerReportOperationObserver;
+
+
+// Forward declaration for silent install
+// SwiUI::TInstallOptions
+namespace SwiUI
+ {
+ class TInstallOptions;
+ }
+
+/**
+ * CNodeManagerProxy provides functions to ...
+ * @lib ?library
+ * @since S60 ?S60_version *** for example, S60 v3.0
+ */
+class CNcdOperationManagerProxy : public CNcdBaseProxy,
+ public MNcdOperationProxyRemoveHandler,
+ public MNcdDownloadOperationObserver
+ {
+
+public:
+
+ /**
+ * NewL
+ *
+ * @return CNcdOperationManagerProxy* Pointer to the created object
+ * of this class.
+ */
+ static CNcdOperationManagerProxy* NewL( MCatalogsClientServer& aSession,
+ TInt aHandle );
+
+ /**
+ * NewLC
+ *
+ * @return CNcdOperationManagerProxy* Pointer to the created object
+ * of this class.
+ */
+ static CNcdOperationManagerProxy* NewLC( MCatalogsClientServer& aSession,
+ TInt aHandle );
+
+
+ /**
+ * Destructor
+ *
+ * Deletes the nodes from the node cache.
+ */
+ virtual ~CNcdOperationManagerProxy();
+
+ /**
+ * Sets the localizer object.
+ *
+ * @param aLocalizer The localizer.
+ */
+ void SetClientLocalizer( MNcdClientLocalizer& aLocalizer );
+
+
+ /**
+ * Creates a load node children operation.
+ *
+ * @leave
+ * @param aNode The node to be loaded.
+ * @return Load node operation.
+ */
+ virtual CNcdLoadNodeOperationProxy* CreateLoadNodeOperationL(
+ CNcdNodeProxy& aNode, TBool aLoadChildren = EFalse, TInt aPageSize = 0,
+ TInt aPageStart = 0, TInt aDepth = 0,
+ TNcdChildLoadMode aMode = ELoadStructure,
+ MNcdSearchFilter* aSearchFilter = NULL );
+
+ /**
+ * Creates a load root node operation.
+ *
+ * @leave
+ * @param aNode The node to be loaded.
+ * @return Load node operation.
+ */
+ virtual CNcdLoadNodeOperationProxy* CreateLoadRootNodeOperationL(
+ CNcdNodeProxy& aNode );
+
+ /**
+ * Creates a load bundle node operation.
+ *
+ * @leave
+ * @param aNode The node to be loaded.
+ * @return Load node operation.
+ */
+ virtual CNcdLoadNodeOperationProxy* CreateLoadBundleNodeOperationL(
+ CNcdNodeProxy& aNode );
+
+ /**
+ * Creates download operation
+ *
+ * @param aType Type of the download
+ * @param aNode Proxy of the node that provides information for the operation
+ * @param aDataId Identifier for the data the download is downloading.
+ * @param aObserver Observer
+ * @param aDownloadIndex Index of the item that will be downloaded
+ * @return A download proxy. Returns an existing download if type and
+ * data ID match with an existing download,
+ *
+ * Data ID is used only on the proxyside for comparing downloads.
+ */
+ virtual CNcdDownloadOperationProxy* CreateDownloadOperationL(
+ TNcdDownloadDataType aType,
+ CNcdNodeProxy& aNode,
+ const TDesC& aDataId,
+ MNcdDownloadOperationObserver* aObserver,
+ TInt aDownloadIndex = 0 );
+
+ /**
+ * Creates a file download operation
+ *
+ * @param aType Type of the download
+ * @param aNode Node
+ * @param aTargetPath Download target
+ * @return a new file download
+ */
+ virtual CNcdFileDownloadOperationProxy* CreateFileDownloadOperationL(
+ TNcdDownloadDataType aType,
+ CNcdNodeProxy& aNode,
+ MNcdFileDownloadOperationObserver* aObserver,
+ const TDesC& aTargetPath );
+
+
+ /**
+ * Creates a generic file download operation
+ *
+ * @param aUri Source URI
+ * @param aTargetPath Download target
+ * @return a new file download
+ */
+ virtual CNcdFileDownloadOperationProxy* CreateFileDownloadOperationL(
+ TNcdDownloadDataType aType,
+ const TDesC& aUri,
+ const TDesC& aTargetPath,
+ MNcdFileDownloadOperationObserver* aObserver );
+
+
+ /**
+ * Creates a purchase operation
+ *
+ * @param
+ * @return
+ */
+ virtual CNcdPurchaseOperationProxy* CreatePurchaseOperationL(
+ CNcdNodeProxy& aNode,
+ CNcdPurchaseOptionProxy& aSelectedPurchaseOption,
+ MNcdPurchaseOperationObserver* aObserver );
+
+
+
+ /**
+ * Creates an install operation
+ *
+ * @param
+ * @return
+ */
+ virtual CNcdInstallOperationProxy* CreateInstallOperationL(
+ CNcdNodeProxy& aNode,
+ MNcdInstallOperationObserver* aObserver );
+
+
+ /**
+ * Creates an install operation
+ *
+ * @param
+ * @return
+ */
+ virtual CNcdSilentInstallOperationProxy* CreateSilentInstallOperationL(
+ CNcdNodeProxy& aNode,
+ MNcdInstallOperationObserver* aObserverconst,
+ const SwiUI::TInstallOptions& aInstallOptions );
+
+
+ /**
+ * Creates a DRM rights object download & install operation.
+ *
+ * @param
+ * @return
+ */
+ virtual CNcdRightsObjectOperationProxy* CreateRightsObjectOperationL(
+ const TDesC& aDownloadUri,
+ const TDesC& aMimeType,
+ const TNcdConnectionMethod& aConnectionMethod,
+ MNcdRightsObjectOperationObserver& aObserver );
+
+ /**
+ * Creates a subscription refresh operation.
+ *
+ * @param aObserver
+ * @return Subscription operation.
+ */
+ virtual CNcdSubscriptionOperationProxy*
+ CreateSubscriptionRefreshOperationL(
+ MNcdSubscriptionOperationObserver& aObserver );
+
+
+ /**
+ * Creates a subscription refresh operation.
+ *
+ * @param aObserver
+ * @return Subscription operation.
+ */
+ virtual CNcdSubscriptionOperationProxy*
+ CreateSubscriptionUnsubscribeOperationL(
+ const TDesC& aPurchaseOptionId,
+ const TDesC& aEntityId,
+ const TDesC& aNamespace,
+ const TDesC& aServerUri,
+ MNcdSubscriptionOperationObserver& aObserver );
+
+
+ /**
+ * Creates a server report operation.
+ *
+ * @param
+ * @return
+ */
+ virtual CNcdServerReportOperationProxy*
+ CreateServerReportOperationL(
+ MNcdServerReportOperationObserver& aObserver );
+
+
+ /**
+ * Creates an access point creation operation
+ *
+ * @param
+ * @return
+ */
+ CNcdCreateAccessPointOperationProxy* CreateCreateAccessPointOperationL(
+ const TDesC& aAccessPointData,
+ MNcdCreateAccessPointOperationObserver& aObserver );
+
+
+ /**
+ * Creates a HTTP request sending operation
+ *
+ * @param
+ * @return
+ */
+ CNcdSendHttpRequestOperationProxy* CreateSendHttpRequestOperationL(
+ const TDesC8& aUri,
+ const TDesC8& aRequest,
+ const TNcdConnectionMethod& aConnectionMethod,
+ MNcdSendHttpRequestOperationObserver& aObserver );
+
+
+ /**
+ * Restores serialized content downloads
+ *
+ * The operations can be retrieved through Operations()
+ */
+ void RestoreContentDownloadsL();
+
+
+ /**
+ * Returns the ongoing operations.
+ */
+ const RPointerArray<MNcdOperation>& Operations() const;
+
+
+ /**
+ * @param aNodeManager Ownership is not transferred.
+ */
+ void SetNodeManager( CNcdNodeManagerProxy* aNodeManager );
+
+ /**
+ * @return CNcdNodeManagerProxy* Ownership is not transferred.
+ */
+ CNcdNodeManagerProxy* NodeManager();
+
+
+ /**
+ * Installation service getter
+ *
+ * @return Installation service
+ */
+ MNcdInstallationService& InstallationServiceL();
+
+
+ /**
+ * Cancels all operations
+ *
+ * @note Releases operations with 0 refcount
+ */
+ void CancelAllOperations();
+
+
+ /**
+ * Releases operations that had not been used by any
+ * client.
+ */
+ void ReleaseUnusedOperations();
+
+
+public: // MNcdOperationProxyRemoveHandler
+
+ /**
+ * @see MNcdOperationProxyRemoveHandler::RemoveOperationProxy
+ */
+ virtual void RemoveOperationProxy(
+ CNcdBaseOperationProxy& aOperationProxy );
+
+public: // MNcdDownloadOperationObserver
+
+
+ /**
+ * @see MNcdDownloadOperationObserver::DownloadProgress()
+ */
+ virtual void DownloadProgress( MNcdDownloadOperation& aOperation,
+ TNcdProgress aProgress );
+
+ /**
+ * @see MNcdDownloadOperationObserver::QueryReceived()
+ */
+ virtual void QueryReceived( MNcdDownloadOperation& aOperation,
+ MNcdQuery* aQuery );
+
+ /**
+ * @see MNcdDownloadOperationObserver::OperationComplete()
+ */
+ virtual void OperationComplete( MNcdDownloadOperation& aOperation,
+ TInt aError );
+
+
+protected:
+
+ /**
+ * Constructor
+ */
+ CNcdOperationManagerProxy( MCatalogsClientServer& aSession,
+ TInt aHandle );
+
+ /**
+ * ConstructL
+ */
+ virtual void ConstructL();
+
+
+private:
+
+ // Prevent if not implemented
+ CNcdOperationManagerProxy( const CNcdOperationManagerProxy& aObject );
+ CNcdOperationManagerProxy& operator =( const CNcdOperationManagerProxy& aObject );
+
+private: // New methods
+
+ /**
+ * Creates an identification stream for the node
+ *
+ * @param aNode
+ * @return Id stream
+ */
+ HBufC8* CreateNodeIdentifierDataLC( CNcdNodeProxy& aNode );
+
+
+
+ /**
+ * Creates an operation on the server side
+ *
+ * @param aNode Node used by the operation
+ * @param aFunction Operation manager function used to create the operation
+ * @param aRemoveHandler Remove handler is assigned to this
+ * @return Operation handle
+ */
+ TInt CreateOperationL( CNcdNodeProxy& aNode,
+ NcdNodeFunctionIds::TNcdOperationManagerFunctionNumber aFunction,
+ MNcdOperationProxyRemoveHandler*& aRemoveHandler );
+
+
+ /**
+ * Creates an operation on the server side
+ *
+ * @param aNode Node used by the operation
+ * @param aSelectedPurchaseOption Selected purchase option
+ * @param aFunction Operation manager function used to create the operation
+ * @param aRemoveHandler Remove handler is assigned to this
+ * @return Operation handle
+ */
+ TInt CreateServerSidePurchaseOperationL( CNcdNodeProxy& aNode,
+ const CNcdPurchaseOptionProxy& aSelectedPurchaseOption,
+ NcdNodeFunctionIds::TNcdOperationManagerFunctionNumber aFunction,
+ MNcdOperationProxyRemoveHandler*& aRemoveHandler );
+
+
+
+ // Create a download operation on the server side
+ TInt CreateServerSideDownloadOperationL(
+ TNcdDownloadDataType aType, const CNcdNodeIdentifier& aNodeId,
+ TInt aDownloadIndex );
+
+ // Searches for an existing download operation
+ CNcdDownloadOperationProxy* FindExistingDownloadOperation(
+ TInt aHandle ) const;
+
+
+private: // data
+
+ // This array contains all the operations that have been created.
+ // When the operation is finished its job it should inform
+ // this manager that it is going to delete itself and delete itself.
+ RPointerArray<MNcdOperation> iOperationCache;
+
+ TBool iRemovingAllOperations;
+
+ CNcdNodeManagerProxy* iNodeManager;
+
+ /**
+ * Client localizer, not own.
+ */
+ MNcdClientLocalizer* iClientLocalizer;
+
+ /**
+ * Installation service, own
+ */
+ MNcdInstallationService* iInstallationService;
+
+ };
+
+
+#endif // NCD_OPERATION_MANAGER_PROXY_H