diff -r 000000000000 -r 32704c33136d ncdengine/provider/client/inc/ncdoperationmanagerproxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/client/inc/ncdoperationmanagerproxy.h Tue Jan 26 12:06:03 2010 +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 +#include + +#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& 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 iOperationCache; + + TBool iRemovingAllOperations; + + CNcdNodeManagerProxy* iNodeManager; + + /** + * Client localizer, not own. + */ + MNcdClientLocalizer* iClientLocalizer; + + /** + * Installation service, own + */ + MNcdInstallationService* iInstallationService; + + }; + + +#endif // NCD_OPERATION_MANAGER_PROXY_H