webengine/osswebengine/cache/inc/HttpCacheHandler.h
changeset 0 dd21522fd290
child 1 7c90e6132015
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/cache/inc/HttpCacheHandler.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,341 @@
+/*
+* 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 CHttpCacheHandler
+*
+*/
+
+#ifndef CHTTPCACHEHANDLER_H
+#define CHTTPCACHEHANDLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <BrCtlDefs.h>
+#include <http\rhttpsession.h>
+#include <stringpool.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CHttpCacheEntry;
+class CHttpCacheLookupTable;
+class CHttpCacheStreamHandler;
+class RHTTPTransaction;
+class RHTTPHeaders;
+class RStringPool;
+class MHTTPDataSupplier;
+class CIdle;
+class CHttpCacheEvictionHandler;
+class THttpCacheEntry;
+class CHttpCacheObserver;
+
+// CLASS DECLARATION
+
+/**
+*
+*  @lib
+*  @since 3.1
+*/
+class CHttpCacheHandler : public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @since 3.1
+        * @param
+        * @param
+        * @return CacheHandler object.
+        */
+        static CHttpCacheHandler* NewL( TInt aSize, 
+            const TDesC& aDirectory,
+            const TDesC& aIndexFile,
+            TInt aCriticalLevel );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CHttpCacheHandler();
+
+    public: // new functions
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt RequestL( RHTTPTransaction& aTrans, TBrCtlDefs::TBrCtlCacheMode aCacheMode, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt RequestHeadersL( RHTTPTransaction& aTrans, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        HBufC8* RequestNextChunkL( RHTTPTransaction& aTrans, TBool& aLastChunk, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void ReceivedResponseHeadersL( RHTTPTransaction& aTrans, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void ReceivedResponseBodyDataL( RHTTPTransaction& aTrans, MHTTPDataSupplier& aBodyDataSupplier, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void ResponseComplete( RHTTPTransaction& aTrans, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void RequestClosed( RHTTPTransaction* aTrans, THttpCacheEntry& aCacheEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt RemoveAllL();
+
+        /**
+        *
+        * @since 7.1
+        * @param
+        * @return
+        */
+        TInt CHttpCacheHandler::ListFiles(RPointerArray<TDesC>& aFilenameList);
+        
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt RemoveL( const TDesC8& aUrl );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool Find( const TDesC8& aUrl );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TBool SaveL( const TDesC8& aUrl, const TDesC8& aHeader, const TDesC8& aContent );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        TInt AddHeaderL( const TDesC8& aUrl, const TDesC8& aName, const TDesC8& aValue );
+
+        /**
+        * Some time response time form the origin server is not matching
+        * with GMt time. Adjust the response time.
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void AdjustResponseTime(RHTTPTransaction& aTrans);
+
+        /**
+        * Some other application modified the cache and the lookup table needs to be updated
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void UpdateLookupTable();
+
+    private:
+
+        /**
+        * Construct.
+        * @since 3.1
+        * @param
+        * @param
+        * @return CacheHandler object.
+        */
+        CHttpCacheHandler( TInt aSize );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL( const TDesC& aDirectory, const TDesC& aIndexFile,  TInt aCriticalLevel);
+
+    private: //
+
+        /**
+        * Some other application modified the cache and the lookup table needs to be updated
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
+        void UpdateLookupTableL();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        TBool CacheNeedsValidationL( CHttpCacheEntry& aCacheEntry, RHTTPTransaction& aTrans, TBrCtlDefs::TBrCtlCacheMode aCacheMode );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        TBool CacheNeedsSpaceL( TInt aSize );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        TBool IsCacheable( RHTTPTransaction& aTrans, TBool& aProtectedEntry );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        TBool HandleResponseOkL( CHttpCacheEntry& aEntry, RHTTPTransaction& aTrans );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        TBool HandleResponseNotModifiedL( CHttpCacheEntry& aEntry, RHTTPTransaction& aTrans );
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        void SaveLookupTableL();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        void OpenLookupTableL();
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        void OpenLookupTableL(CHttpCacheLookupTable* aLookupTable);
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        void HandleCorruptEntry( CHttpCacheEntry& aStrayEntry, TBool aUpdate = ETrue );
+
+
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @param
+        * @return
+        */
+        TBool SaveBuffer( CHttpCacheEntry& aEntry, const TDesC8& aBuffer, TBool aBody = EFalse );
+
+    private:    // Data
+
+        // hash table for cache entries
+        CHttpCacheLookupTable*          iLookupTable;   // owned
+        // stream manager
+        CHttpCacheStreamHandler*        iStreamHandler; // owned
+        //
+        CHttpCacheEvictionHandler*      iEvictionHandler; // owned
+        // cache size
+        TInt                            iSize;
+        // cache directory
+        HBufC*                          iDirectory; // owned
+        // name of the index file
+        HBufC*                          iIndexFile; // owned
+        // Observing changes in cache
+        CHttpCacheObserver* iHttpCacheObserver; // owned
+	// An opened and configured file server session
+	RFs iRfs;
+    };
+
+#endif      // CHTTPCACHEHANDLER_H
+
+// End of File