diff -r 000000000000 -r dd21522fd290 browserutilities/feedsengine/FeedsServer/UrlHandler/inc/HttpHandler.h --- /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 +#include +#include +#include + +#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