diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,133 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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: +// + +#ifndef __CHTTPCLIENTHANDLER_H__ +#define __CHTTPCLIENTHANDLER_H__ + +#include +#include +#include +#include + +#include "mconnectionprefsprovider.h" +#include "mhttpbatchingpropertiescallback.h" +#include "timerlogger.h" + +class CHttpTransportLayer; +class CHttpConnectionInfo; +class CHttpConnectionManager; +class CX509Certificate; +class CX500DistinguishedName; +class TCertInfo; +class TDNInfo; +class CHttpPipelineFallback; + +class CHttpClientHandler : public CProtocolHandler, + public MConnectionPrefsProvider, + public MRxDataObserver, + public MHttpBatchingPropertiesCallback, + public MProtHandlerInterface + + { +public: + + static CHttpClientHandler* NewL(TAny* aSession); + virtual ~CHttpClientHandler(); + +private: // methods from CProtocolHandler + virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent); + virtual TInt SessionServerCert(TCertInfo& aServerCert); + virtual TInt TransactionServerCert(TCertInfo& aServerCert, RHTTPTransaction aTransaction); + virtual void CreateCodecL(); + virtual CProtTransaction* CreateProtTransactionL(RHTTPTransaction aTransaction) ; + virtual TBool ServiceL(CProtTransaction& aTrans); + virtual void ClosedTransactionHook(CProtTransaction* aTrans); + virtual void CancelTransactionHook(CProtTransaction& aTransaction); + virtual void NotifyNewRequestBodyPart(CProtTransaction& aTransaction); + virtual void GetInterfaceL(TUid aInterfaceId, MProtHandlerInterface*& aInterfacePtr); + +private: // methods from MConnectionPrefsProvider + + virtual TBool SupplyCommsConnection( RConnection*& aConnectionPtr ); + virtual TBool SupplySocketServerHandle ( TInt& aSocketServerHandle ); + virtual void SetCommsConnectionL( RConnection* aConnectionPtr ); + virtual void SetSocketServerHandleL ( TInt aSocketServerHandle ); + virtual void GetSecurityPrefs( TBool& aDialogPrompt, MSecurityPolicy*& aSecurityPolicy ); + virtual TBool ImmediateSocketShutdown(); + virtual TInt SessionId(); + virtual TInt GetRecvBufferSize(); + +private: // methods from MRxDataObserver + + virtual void SetStatusL(CRxData& aRxData, TInt aStatus); + +private: // methods from MHttpBatchingPropertiesCallback + + virtual TInt GetMaxBatchingBufferSize(); + +private: // methods from MProtHandlerInterface + + virtual const CCertificate* TransactionServerCert(RHTTPTransaction aTransaction); + virtual const CCertificate* SessionServerCert(); + +private: + + CHttpClientHandler(RHTTPSession aSession); + void ConstructL(); + + CHttpConnectionInfo* PrepareTransactionL(RHTTPTransaction aTrans, TBool& aNeedTunnel, TBool& aCanPipeline); + void CreateRequestUriL(TInt aMethodIndex, RHTTPTransaction aTrans, TPtrC8& aHost, TInt& aPort); + TBool SetHostHeaderL(RHTTPTransaction aTrans, const TDesC8& aHost, TInt aPort); + void AddTunnelInfoL(RHTTPTransaction aTrans, const TDesC8& aHost, TInt aPort); + TBool SelectConnectionManagerL(const CHttpConnectionInfo& aConnectionInfo, RHTTPTransaction aTrans, TBool aCanPipeline, CHttpConnectionManager *&aManager); + CHttpConnectionManager* SelectTunnelConnectionL(const CHttpConnectionInfo& aConnectionInfo, RHTTPTransaction aTrans, TBool aCanPipeline); + TInt MaxNumConnectionManagers() const; + void SetupProxyInformation(RHTTPTransaction aTrans); + TBool CheckPipelineSupport(RHTTPTransaction aTrans); + + void GetCipherSuiteL(RHTTPTransaction aTransaction); + + TInt MaxNumTransactionsToPipeline() const; + + void __RecordConnectionManagerCreationL(); + void EnsureStrictConnectMethodHeaders(RHTTPTransaction aTransaction); + TInt SetStatus(CRxData& aRxData, TInt aStatus); + +#if defined (_DEBUG) + TInt GetConnectionID(const CHttpConnectionManager* aConnectionManager); + TInt GetConnectionID(const RHTTPTransaction &aTrans); +#endif + + static void GetCertInfoL(const CX509Certificate& aSource, TCertInfo& aDest); + static void GetDNInfo(const CX500DistinguishedName& aSource, TDNInfo& aDest); + +private: + TBool iEnableOptimalPipeline; + TBool iUseProxy; + TInt iRecvBufferSize; + mutable TInt iMaxNumConnectionManagers; + mutable TInt iMaxNumTransactionsToPipeline; + CHttpTransportLayer* iTransportLayer; + CHttpPipelineFallback* iPipelineFallback; + TBool* iSessionClosingPtr; // Not owned, set in ConstructL + const TStringTable& iStringTable; + RStringF iProxyAddress; + RPointerArray iConnectionManagers; + __FLOG_DECLARATION_MEMBER2 + + }; + +#endif // __CHTTPCLIENTHANDLER_H__ +