--- /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 */