codhandler/codeng/inc/RoapSaver.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/codhandler/codeng/inc/RoapSaver.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,260 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  Declaration of class CRoapSaver.   
+*
+*/
+
+
+#ifndef ROAP_SAVER_H
+#define ROAP_SAVER_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <RoapEng.h>
+#include <RoapObserver.h>
+#include "CodSaver.h"
+
+// FORWARD DECLARATIONS
+
+class CRoapData;
+class CAiwGenericParamList;
+class TCodProgress;
+
+// CLASS DECLARATION
+
+/**
+* ROAP saver. ROAP is downloaded to memory buffer; installation is executing
+* the ROAP.
+*/
+NONSHARABLE_CLASS( CRoapSaver ): public CCodSaver, public Roap::MRoapObserver
+    {
+    public:     // Constructors and destructor.
+
+        /**
+        * Two phased constructor. Leaves on failure.
+        * @param aType Data type.
+        * @param aData ROAP data created here. Ownership not taken.
+        * @param aProgress Progress.
+        * @param aProgressBytes Estimated number of bytes (progress scale).
+        * @param aTempPath Temp path (used for multipart ROAP response).
+        * @param aRootPath Root path (used for multipart ROAP response).
+        * @param aFname File name (used for progressive downloads).
+        * @return The created object.
+        */      
+        static CRoapSaver* NewL
+            (
+            const TDesC8& aType,
+            CRoapData*& aData,
+            TCodProgress* aProgress,
+            TInt aProgressBytes,
+            const TFileName& aTempPath,
+            const TFileName& aRootPath,
+            const TFileName& aFname
+            );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CRoapSaver();
+
+    public:     // from CCodSaver
+
+        /**
+        * Open temporary store for download.
+        */
+        virtual void OpenStoreL();
+        
+        /**
+        * Append data to store.
+        * @param aData Data to append.
+        * @return Error code.
+        */
+        virtual TInt AppendData( const TDesC8& aData );
+        
+        /**
+        * Download finished, close temporary store.
+        */
+        virtual void CloseStore();
+
+        /**
+        * Check if attributes of received content match descriptor data.
+        * Leaves with KErrCodAttributeMismatch in case of mismatch.
+        * @param aData Data to match.
+        */
+        virtual void CheckResponseAttributesL( const CCodData& aData );
+
+        /**
+        * Install downloaded content. Executes the ROAP.
+        * @param aStatus Completes when done.
+        * @param aName Preferred name (ignored).
+        * @param aAttached. ETrue if the download is attached and playing progressively (ignored).
+        */
+        virtual void InstallL( TRequestStatus* aStatus, const TDesC& aName, const TBool aAttached );
+        
+
+        /**
+        * BulkInstallL - No support for ROAP
+        */        
+        virtual void BulkInstallL( TRequestStatus* /*aStatus*/, const CCodData &/*aData*/, const TBool /*aAttached*/ ){}
+        
+        /**
+        * Cancel installation.
+        */
+        virtual void CancelInstall();
+
+        /**
+        * Release content (take ownership of content from saver).
+        * @param aFname Empty string returned here.
+        * @param aHandler Handler UID returned here.
+        */
+        virtual void ReleaseContent( TFileName& aFname, TUid& aHandler );
+           
+        /**
+        * Get the downloaded file size.
+        */
+        virtual TInt DownloadedFileSize()
+            {
+            return 0;
+            };
+        
+        /**
+        * Discard the old contents
+        */        
+        virtual void ResetL()
+            {
+
+            };
+
+        /**
+        * Clean up.
+        */
+        virtual void Cleanup( TBool aDeleteFile  );
+
+        /**
+        * Release file name (take ownership of content from saver).
+        * @param aFname File name of content returned here.
+        */
+        virtual void ReleaseFileName( TFileName& aFname );
+
+    private:    // Constructors and destructor.
+
+        /**
+        * Constructor.
+        * @param aType Data type.
+        * @param aData ROAP data created here. Ownership not taken.
+        * @param aProgress Progress.
+        * @param aProgressBytes Estimated number of bytes (progress scale).
+        * @param aTempPath Temp path (used for multipart ROAP response).
+        * @param aRootPath Root path (used for multipart ROAP response).
+        * @param aFname File name of content.
+        */
+        CRoapSaver
+            (
+            const TDesC8& aType,
+            CRoapData*& aData,
+            TCodProgress* aProgress,
+            TInt aProgressBytes,
+            const TFileName& aTempPath,
+            const TFileName& aRootPath,
+            const TFileName& aFname
+            );
+
+    private:    // from Roap::MRoapObserver
+    
+        /**
+        * Confirm creating network connection.
+        * @return ETrue if network connection confirmed.
+        */
+        virtual TBool ConnectionConfL();
+
+        /**
+        * Confirm contacting Rights Issuer.
+        * @return ETrue if confirmed.
+        */
+        virtual TBool ContactRiConfL();
+		
+        /**
+        * Confirm transaction ID tracking.
+        * @return ETrue if transaction ID tracking confirmed.
+        */
+        virtual TBool TransIdConfL();
+
+       /**
+        * Handle right objects after a successful RoAcq.
+        * @param aRightsList Received right objects.
+        */
+		virtual void RightsObjectDetailsL
+	        ( const RPointerArray<CDRMRights>& aRightsList );
+
+        /**
+        * ROAP response returned multipart response, return parameters
+        * needed saving.
+        * @param aTempFolder Folder for temp file returned here.
+        * @param aContentName Name for content file returned here.
+        * @param aMaxSize Safety size limit returned here.
+        */
+        virtual void ContentDownloadInfoL
+            ( TPath& aTempFolder, TFileName& aContentName, TInt& aMaxSize );
+
+        /**
+        * Details of DCF file received in ROAP (saved by ROAP Engine).
+        * @param aPath: The path and the filename of the saved DCF file.
+        * @param aType: The plain MIME type of the saved DCF file.
+        * @param aAppUid: The handler app UID of the saved DCF file.
+        */
+		virtual void ContentDetailsL
+		    ( const TDesC& aPath, const TDesC8& aType, const TUid& aAppUid );
+                                      
+        /**
+        * Handle DCF file (received in multipart RO response).
+        * @aFilename File name.
+        */
+        virtual void HandleDCFPartL( const TDesC8& aFilename );
+
+        /**
+        * Progress callback.
+        * @param aProgressInfo Percentage completed.
+        */
+		virtual void RoapProgressInfoL( const TInt aProgressInfo );
+
+       /**
+        * ErrorUrl
+        * @param aErrorUrl: The error URL
+        * @return void
+        */
+        virtual void ErrorUrlL( const TDesC8& aErrorUrl );
+
+        /**
+        * To handle PostResponseUrlL as part of metering response
+        * @param aPrUrl: The PostResponseURL
+        * @return void
+        */
+        virtual void PostResponseUrlL( const TDesC8& aPrUrl );
+        		
+    private:    // data
+
+        HBufC8* iBuf;                   ///< Trigger buffer. Owned.
+        Roap::CRoapEng* iEng;           ///< Engine. Owned.
+        CRoapData*& iData;              ///< Data. Created but not owned.
+        TCodProgress* iProgress;        ///< Progress. Not owned.
+        TInt iProgressBytes;            ///< Progress scale.
+        const TFileName& iTempPath;     ///< Temp file path.
+        const TFileName& iRootPath;     ///< Root path.
+        TFileName iFname;               ///< File name (DCF response).
+        TPtrC iContentName;             ///< Content name.
+
+    };
+
+#endif /* def ROAP_SAVER_H */