diff -r 000000000000 -r 95b198f216e5 omadrm/drmengine/roap/inc/RoapHttpHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omadrm/drmengine/roap/inc/RoapHttpHandler.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2002-2004 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: ?Description +* +*/ + + +#ifndef ROAP_HTTP_HANDLER_H +#define ROAP_HTTP_HANDLER_H + +// INCLUDES +#include "RoapConnection.h" +#include "RoapResponse.h" +#include "RoapObserver.h" + +#include +#include +#include +#include + +namespace Roap +{ + +// CLASS DECLARATION + +class CRoapHttpHandler +: public CActive, + public MHTTPTransactionCallback, + public MHTTPDataSupplier, + public MHTTPAuthenticationCallback + { + public: // Constructors and destructor + + static CRoapHttpHandler* NewL(); + + virtual ~CRoapHttpHandler(); + + public: // new methods + + void CreateConnectionL( TRequestStatus* aStatus ); + + void DoTransactionL + ( + CRoapResponse& aResponse, + TDesC8& aReqBody, + TRequestStatus* aStatus + ); + + + void SetUrlL( TDesC8& aUrl ); + + void SetObserver( MRoapObserver* aRoapObserver ); + + void SetPreferredIap( TUint32 aPreferredIap ); + + protected: // from CActive + + virtual void DoCancel(); + + virtual void RunL(); + + virtual TInt RunError( TInt aError ); + + protected: // from MHTTPTransactionCallback + + virtual void MHFRunL + ( RHTTPTransaction aTransaction, const THTTPEvent& aEvent ); + + virtual TInt MHFRunError + ( + TInt aError, + RHTTPTransaction aTransaction, + const THTTPEvent& aEvent + ); + + protected: // from MHTTPDataSupplier + + virtual TBool GetNextDataPart( TPtrC8& aDataPart ); + + virtual void ReleaseData(); + + virtual TInt OverallDataSize(); + + virtual TInt Reset(); + + + protected: // from MHTTPAuthenticationCallback + + virtual TBool GetCredentialsL + ( + const TUriC8& aURI, + RString aRealm, + RStringF aAuthenticationType, + RString& aUsername, + RString& aPassword + ); + + private: // types + + enum TRoapState ///< State. + { + EInit, + EStart, + EConnect, + EReady, + ERequest, + EComplete, + ECloseSession, + }; + + private: // Constructors and destructor + + CRoapHttpHandler(); + + void ConstructL(); + + protected: // state machine parts + + + void ConnectL(); + + + void CreateSessionL(); + + + void DoTransactionL(); + + + void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue); + + + void Complete(); + + + void InstallHttpFiltersL(); + + + void SelfComplete( TInt& aResult ); + + + void HandleResponseHeadersL( RHTTPResponse aHttpResponse ); + + + TBool CheckHttpCode( TInt aHttpStatus ); + + + TInt AppendPduData( const TDesC8& aDataChunk ); + + + TInt AppendMultipartData( const TDesC8& aDataChunk ); + + + static TInt StaticTimeOut( TAny* aPointer ); + + + void TimeOut(); + + private: // data + + HBufC8* iUri; + HBufC8* iRequestBody; + RHTTPSession iSession; + RHTTPTransaction iTransaction; + CRoapConnection* iConnection; + MRoapObserver* iObserver; + CRoapResponse* iResponse; + HBufC8* iBoundary; + TRequestStatus* iParentStatus; + TUint32 iPreferredIap; + TRoapState iState; + TInt iError; + CPeriodic* iTimeout; + TInt iBytesReceived; + TBool iReportBytes; + }; +} + +#endif // ROAP_HTTP_HANDLER