diff -r 000000000000 -r 95b198f216e5 drm_plat/roap_api/inc/RoapEngBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drm_plat/roap_api/inc/RoapEngBase.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,296 @@ +/* +* 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_ENG_BASE_H +#define ROAP_ENG_BASE_H + +// INCLUDES +#include +#include +#include +#include + +class CAiwGenericParamList; +class CDRMRights; +class CDRMRIContext; + +namespace Roap +{ +// FORWARD DECLARATION + +class CRoapTrigger; +class CRoapHttpHandler; +class CRoapResponse; +class CRoapMessage; +class MRoapObserver; + +// CLASS DECLARATION + +enum TTriggerType + { + ERegistrationTrigger, + ERoAcquisitionTrigger, + EJoinDomainTrigger, + ELeaveDomainTrigger, + EExtendedTrigger, + EMeteringReportTrigger + }; + +enum TRiContextStatus + { + EValidContext, + EInvalidContext, + EInvalidContextNoConf + }; + +enum TDomainOperation + { + ENotDomainOperation, + EJoinDomainOperation, + EKeyUpgradeOperation + }; + + +class CRoapEngBase: public CActive + { + public: + + enum TRoapState + { + EInit, + EReady, + ECreateConn, + EStartTrans, + ERespReceived, + EComplete + }; + + enum TRequestType + { + EDeviceHello, + ERegistration, + EROAcquisition, + EJoinDomain, + ELeaveDomain, + EMeteringRequest + }; + + + public: // destructor + + IMPORT_C virtual ~CRoapEngBase(); + + public: + + /** + * SetTriggerL + * + * The function takes in a ROAP Trigger and parses it. The the internal state + * of ROAP Engine is changed accordingly. After the trigger is set a caller + * can either accept the ROAP transaction by calling AcceptL or reject by calling + * Reject. + * + * @since 3.0 + * @param aXmlTrigger: An ROAP Trigger in XML format + * + * @param aParamList: Generic paramaters from application that lauched the ROAP UI + * Can contain e.g. access point etc. + * + * @param aType: On return, defines the type of the parsed trigger + * + * @param aContextStatus: On return, indicates if the Device has stored a valid + * RI context or not + * + * @param aDomainOper: On return, in the case of Join Domain protocol indicates + * the intended Domain operation. Join Domain or Key upgrade. + * + * @param aContentIdList: Out parameter. ContentIDs that are related to the + * RO acquisition. Can be used e.g. for opening the + * content file after the ROAP has succesfully finished. + * The elements inside the array must be deleted by the + * caller + * + * @leave System wide error code + */ + + IMPORT_C void SetTriggerL( const TDesC8& aXmlTrigger, + const CAiwGenericParamList* aParamList, + TTriggerType& aType, + TRiContextStatus& aContextStatus, + TDomainOperation& aDomainOperation, + RPointerArray& aContentIdList ); + /** + * AcceptL + * + * The function starts the ROAP operation. SetTriggerL must be called successfully + * before calling this function. + * + * @since 3.0 + * @param aObserver: An observer object. Can be NULL if the observer is not needed. + * + * @param aStatus: Indicates the completion status of ROAP. Contains an error code or + * KErrNone is everything worked ok. + * + * @leave System wide error code + */ + + IMPORT_C void AcceptL( MRoapObserver* aObserver, TRequestStatus* aStatus ); + + /** + * Reject + * + * The function cancels the ROAP operation. The initial state (as it was before calling + * SetTriggerL) is restored. The function handles cleanup of stored data internally + * (by calling the DoCleanupL method) + * + * @since 3.0 + */ + + IMPORT_C void Reject(); + + /** + * DoCleanup + * + * The function deletes the data that has been stored during the last ROAP processing. + * The asynchronous AcceptL call must be finished before it is useful to call this method. + * + * @since 3.0 + * + * @return System wide error code + */ + + IMPORT_C TInt DoCleanup(); + + /** + * HandleRoReponseL + * + * The function is for handling the 1-pass RO acquisition case. Takes in RO response + * PDU and parses it and stores the Rights Object into the database. + * + * @since 3.0 + * @param aResponse: RO acquisition response PDU in XML format. + * @param aParsedRights: Out parameter. Contains pointers to stored ROs. The array + * contents are owned by a caller. If the function leaves + * the caller must cleanup and close aParsedRights + * + * @leave System wide error code + */ + + IMPORT_C void HandleRoReponseL( const TDesC8& aResponse, RPointerArray& aParsedRights ); + + + /** + * Trigger + * + * The function returns a reference to the parsed CRoapTrigger object. The SetTriggerL + * method must be called successfully before this method can be called. + * + * @since 3.0 + * + * @return Parsed CRoapTrigger obejct. + */ + + IMPORT_C const CRoapTrigger& Trigger() const; + + protected: // Constructors + + CRoapEngBase(); + + void ConstructL(); + + + protected: // from CActive + + virtual void DoCancel(); + + virtual void RunL(); + + virtual TInt RunError( TInt aError ); + + + protected: + + void SetL(); + + void CreateConnectionL(); + + void StartTransactionL(); + + void HandleResponseL(); + + void SetProtocolL(); + + void CompleteL(); + + void CompleteRequest(); + + void Continue( TRoapState aNextState ); + + + protected: + + virtual CRoapTrigger* ParseTriggerL( const TDesC8& aXmlTrigger ) = 0; + + virtual void GetRIContextL( TBool& aRegistered, const TDesC8& aRiId ) = 0; + + virtual void GetDomainContextL( TBool& aIsJoined, + TBool& aIsValidGeneration, + const TDesC8& aDomainId ) = 0; + + virtual void CreateReqMessageL() = 0; + + virtual void HandleRoapResponseL( const TDesC8& aXmlResponse ) = 0; + + virtual void HandleRightsResponsePduL( const TDesC8& aRightsResp, TBool aOnePass ) = 0; + + virtual void HandleMultipartL() = 0; + + virtual HBufC8* SignMessageL( const TDesC8& aMessage ) const = 0; + + virtual TInt MapStatusL() = 0; + + + protected: + + CRoapTrigger* iTrigger; + CRoapMessage* iRequest; + CRoapMessage* iResponse; + CRoapHttpHandler* iHttpHandler; + CRoapResponse* iRoapResp; + CDRMRIContext* iStoredRiContext; + TRoapState iState; + TInt iStatusCode; + TInt iResult; + TRequestStatus* iParentStatus; + TUint32 iPreferredIap; + TRequestType iReqMessage; + TBool iCompleted; + MRoapObserver* iObserver; + TBool iTransTrackConf; + RPointerArray iReturnedROs; + TBool iAllowedToContactRi; + TBool iUseRiContextUrl; + TBool iImplicitJoinDomain; + HBufC8* iDomainRightsResp; // for the implicit Join Domain + TInt iProgressInBytes; + TBool iReRegistered; + HBufC8* iRiAlias; + }; +} + +#endif