webengine/osswebengine/cache/inc/HttpCacheStreamHandler.h
changeset 0 dd21522fd290
child 8 7c90e6132015
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/cache/inc/HttpCacheStreamHandler.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,394 @@
+/*
+* 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 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:  Definition of CHttpCacheStreamHandler  
+*
+*/
+
+#ifndef CHTTPCACHESTREAMHANDLER_H
+#define CHTTPCACHESTREAMHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <f32file.h>
+#include <s32file.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CHttpCacheEntry;
+class RFileWriteStream;
+class RFileReadStream;
+
+// CLASS DECLARATION
+
+/**
+*
+*  @lib
+*  @since 3.1
+*/
+class CHttpCacheStreamEntry : public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @since 3.1
+        * @param
+        * @param
+        * @return CHttpCacheStreamEntry object.
+        */
+        static CHttpCacheStreamEntry* NewL( RFs& aRfs, CHttpCacheEntry& aHttpCacheEntry, TDriveUnit aDrive,
+            TInt64 aCriticalLevel );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CHttpCacheStreamEntry();
+
+    public: // new functions
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        inline CHttpCacheEntry* CacheEntry() const { return iHttpCacheEntry; }
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void Erase();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        HBufC8* HeadersL();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        HBufC8* NextChunkL( TBool& aLastChunk );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt SaveHeaders( const TDesC8& aHeaderStr );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void RemoveHeaders();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt SaveBodyData( const TDesC8& aBodyStr );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void RemoveBodyData();
+
+        /**
+        * Flush
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt Flush();
+
+    private:
+
+        /**
+        * Construct.
+        * @since 3.1
+        * @param
+        * @param
+        * @return CHttpCacheStreamEntry object.
+        */
+        CHttpCacheStreamEntry( RFs& aRfs, CHttpCacheEntry& aHttpCacheEntry, TDriveUnit aDrive,
+            TInt64 aCriticalLevel );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    private: //
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void GetHeaderFileName( const TFileName& aBodyFileName, TFileName& aHeaderFileName );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool OpenCacheFiles();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool CreateNewFilesL();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void BodyFileName( TFileName& aBodyFileName );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool DiskSpaceBelowCriticalLevel( TInt aContentSize );
+
+    private:    // Data
+
+        //
+        TBool               iFileOk;
+        //
+        RFs                 iRfs;       // not owned
+        //
+        RFile               iHeaderFile;      // owned
+        //
+        RFile               iBodyFile;      // owned
+        //
+        CHttpCacheEntry*    iHttpCacheEntry; // not owned
+        //
+        TDriveUnit          iDrive;
+        //
+        TInt64              iCriticalLevel;
+        //
+        HBufC8*             iCacheBuffer;   // owned
+    };
+
+/**
+*
+*  @lib
+*  @since 3.1
+*/
+class CHttpCacheStreamHandler : public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @since 3.1
+        * @param
+        * @param
+        * @return CHttpCacheStreamHandler object.
+        */
+        static CHttpCacheStreamHandler* NewL( const TDesC& aDirectory, TInt aCriticalLevel );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CHttpCacheStreamHandler();
+
+    public: // new functions
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        inline TInt SavedContentSize() const { return iContentSize; }
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool AttachL( CHttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void Detach( const CHttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void Erase( const CHttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        HBufC8* HeadersL( CHttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        HBufC8* NextChunkL( CHttpCacheEntry& aCacheEntry, TBool& aLastChunk );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool SaveHeaders( CHttpCacheEntry& aCacheEntry, const TDesC8& aHeaderStr );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void RemoveHeaders( CHttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool SaveBodyData( CHttpCacheEntry& aCacheEntry, const TDesC8& aBodyStr );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void RemoveBodyData( CHttpCacheEntry& aCacheEntry );
+
+        /**
+        * Flush
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool Flush( CHttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        inline void SetStartupCacheSize( TInt aContentSize ) { iContentSize = aContentSize; }
+
+#ifdef _DEBUG
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        inline TBool Find( const CHttpCacheEntry& aCacheEntry ) { return ( FindStreamEntry( aCacheEntry ) != NULL );  }
+#endif // _DEBUG
+    private:
+
+        /**
+        * Construct.
+        * @since 3.1
+        * @param
+        * @param
+        * @return CacheHandler object.
+        */
+        CHttpCacheStreamHandler();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL( const TDesC& aDirectory, TInt aCriticalLevel );
+
+    private:
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        CHttpCacheStreamEntry* FindStreamEntry( const CHttpCacheEntry& aCacheEntry, TInt* aIndex = NULL );
+
+
+
+    private:    // Data
+
+        //
+        RFs                                         iRfs;               // owned
+        // attached entries
+        CArrayPtrFlat<CHttpCacheStreamEntry>*       iActiveEntries;     // owned
+        //
+        TInt                                        iContentSize;
+        //
+        TDriveUnit          iDrive;
+        //
+        TInt64              iCriticalLevel;
+        //
+        TInt                iDiskFull;
+    };
+
+#endif      // CHTTPCACHESTREAMHANDLER_H
+
+// End of File