--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/feedsengine/FeedsServer/UrlHandler/inc/HttpHandler.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,208 @@
+/*
+* 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: A class that fetches resources via HTTP 1.1.
+*
+*/
+
+
+#ifndef HTTP_HANDLER_H
+#define HTTP_HANDLER_H
+
+
+// INCLUDES
+#include <e32base.h>
+#include <http/mhttptransactioncallback.h>
+#include <http/rhttpheaders.h>
+#include <http/rhttptransaction.h>
+
+#include "HttpConnection.h"
+#include "LeakTracker.h"
+#include "UrlHandler.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CTimer;
+class RHTTPSession;
+class RStringPool;
+
+// CLASS DECLARATION
+
+
+/**
+* A class that fetches resources via HTTP 1.1.
+*
+* \b Library: FeedsEngine.lib
+*
+* @since 3.0
+*/
+class CHttpHandler: public CUrlHandler, public MHttpConnectionObserver,
+ public MHTTPTransactionCallback
+ {
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ */
+ static CHttpHandler* NewL(CHttpConnection& aHttpConnection);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CHttpHandler();
+
+
+ public: // From CUrlHandler
+ /**
+ * Loads the given url -- asynchronously
+ *
+ * @since 3.0
+ * @param aUrl The url to load
+ * @param aObserver The load observer.
+ * @return void.
+ */
+ virtual void LoadUrlL(const TDesC& aUrl, MLoadObserver& aObserver);
+
+
+ public: // From MHttpConnectionObserver
+ /**
+ * Notifies the observer that the connection is available.
+ *
+ * @since 3.0
+ * @return
+ */
+ virtual void ConnectionAvailable();
+
+ /**
+ * Notifies the observer that the establishment of the connection failed.
+ *
+ * @since 3.0
+ * @param aStatus The reason for the failure.
+ * @return
+ */
+ virtual void ConnectionFailed(TInt aStatus);
+
+
+ public: // From MHTTPTransactionCallback
+ /**
+ * Called when the filter's registration conditions are satisfied for events that
+ * occur on a transaction.
+ *
+ * @since 3.0
+ * @param aTransaction The transaction that the event has occurred on.
+ * @param aEvent The event that has occurred.
+ * @return void.
+ */
+ virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
+
+ /**
+ * Called when RunL leaves from a transaction event. This works in the same
+ * way as CActve::RunError; return KErrNone if you have handled the error.
+ *
+ * @since 3.0
+ * @param aError The leave code that RunL left with.
+ * @param aTransaction The transaction that was being processed.
+ * @param aEvent The Event that was being processed.
+ * @return KErrNone if the error has been cancelled or the code
+ * of the continuing error otherwise.
+ */
+ virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction,
+ const THTTPEvent& aEvent);
+
+
+ private:
+ /**
+ * C++ default constructor.
+ */
+ CHttpHandler(CHttpConnection& aHttpConnection);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Cleanup stack callback method to release a DataSupplier.
+ *
+ * @since 3.0
+ * @param aPtr A libxml2 document ptr.
+ * @return void.
+ */
+ static void CleanupDataSupplier(TAny *aPtr);
+
+ /**
+ * Get the content-type and char-encoding from the response header.
+ *
+ * @since 3.0
+ * @param aContentType The content-type.
+ * @param aCharSet The char-encoding.
+ * @return void.
+ */
+ void GetContentTypeL(TDesC*& aContentType, TDesC*& aCharSet);
+
+ /**
+ * Passes the status code and responseBody to the observer. The observer
+ * adopts aResponseBody.
+ *
+ * @since 3.0
+ * @param aStatusCode The status code - normalized to the http response codes.
+ * @param aResponseBody The response body or NULL.
+ * @param aContentType The content-type.
+ * @param aCharSet The char-encoding.
+ * @return void.
+ */
+ void LoadCompleted(TInt aStatusCode, TDesC8* aResponseBody,
+ const TDesC& aContentType, const TDesC& aCharSet);
+
+ /**
+ * The timer's callback used to abort connections that stop responding.
+ *
+ * @since 3.0
+ * @param aPtr Holds the iTimerState pointer.
+ * @return An error code.
+ */
+ static TInt TimerCallback(TAny* aPtr);
+
+
+ private:
+ const TTimeIntervalMicroSeconds32 KTimerPeriod;
+
+ TLeakTracker iLeakTracker;
+
+ CHttpConnection* iHttpConnection;
+ TBool iIsConnectionObserver;
+ RHTTPSession& iSession;
+ RStringPool iStringPool;
+ RHTTPTransaction iTransaction;
+ RHTTPHeaders iRespHeaders;
+ RHTTPHeaders iUserAgentHeader;
+
+ MLoadObserver* iObserver;
+
+ HBufC8* iResponseBuffer;
+
+ CPeriodic* iTimer;
+ TCallBack iTimerState;
+ TTime iLastActivity;
+ TInt iStatusCode;
+ };
+
+#endif // HTTP_HANDLER_H
+
+// End of File
\ No newline at end of file