diff -r 2669f8761a99 -r fbd2e7cec7ef xdmprotocols/XcapProtocol/XcapOperations/inc/XcapHttpOperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xdmprotocols/XcapProtocol/XcapOperations/inc/XcapHttpOperation.h Wed Sep 01 12:23:14 2010 +0100 @@ -0,0 +1,264 @@ +/* +* 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 "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: CXcapHttpOperation +* +*/ + + + + +#ifndef __XCAPHTTPOPERATION__ +#define __XCAPHTTPOPERATION__ + +#include +#include "XdmOperation.h" +#include "XcapOperationFactory.h" +#include "XcapHttpRequestTimerCallback.h" + +//The default timout for HTTP requests in seconds +const TInt KDefaultHttpRequestTimeout = 30; + +//Set, if document should be fetched from cache when processing a doc subset +const TInt KFetchMasterFromCache = KXdmOption1; + +//Set, if rules concerning document subsets should be applied when processing responses +const TInt KDocumentSubset = KXdmOption2; + +//Set, if the document an operation targets should not be cached (a directory document, for example) +const TInt KNoCache = KXdmOption3; + +//Set, if EARLY-IMS is in use => add the public ID in X-3GPP-Intended-Identity header +const TInt KUseIntendedIdentity = KXdmOption4; + +//FORWARD DECLARATION +class RXcapCache; +class CXdmDocument; +class CXcapDocument; +class CXdmXmlParser; +class CXcapUriParser; +class CXcapHttpRequest; +class CXdmDocumentNode; +class CXcapDocumentNode; +class CXcapHttpTransport; + +//Override application usage validation +//Must ONLY be used for testing, comment out before release +//#define __OVERRIDE_VALIDATION__ + +//CLASS DECLARATION +NONSHARABLE_CLASS( CXcapHttpOperation ) : public CActive, + public MXdmOperation + + { + public: + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static void EscapeLC( CXdmDocumentNode& aRootNode ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static HBufC8* EscapeLC( const TDesC8& aDescriptor ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static HBufC8* Escape2LC( const TDesC& aDescriptor ); + + public: + + /** + * Destructor. + */ + void ExecuteL( TRequestStatus& aStatus, TUint aOptions ); + + /** + * Destructor. + */ + TInt Result() const; + + /** + * Destructor. + */ + const TXdmCompletionData& CompletionData() const; + + /** + * Destructor. + */ + TBool IsCompleted() const; + + /** + * Set this operation to completed state. + */ + void Destroy(); + + /** + * Set this operation to completed state. + */ + virtual CXdmDocumentNode* TargetNode() const; + + /** + * Destructor. + */ + CXcapHttpRequest* HttpRequest() const; + + /** + * Destructor. + */ + virtual ~CXcapHttpOperation(); + + protected: //Methods + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + CXcapHttpOperation( const CXdmDocument& aTargetDoc, + CXcapDocumentNode* aDocumentSubset, + CXcapOperationFactory& aOperationFactory ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void BaseConstructL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + TPtrC8 Descriptor( HBufC8* aBuffer ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + TInt ReinterpretStatus( const TInt aHttpStatus ) const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + CXcapHttpTransport& Transport() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + virtual void OperationCompleteL() = 0; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + virtual void OperationFailedL() = 0; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + virtual void ExecuteL() = 0; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + virtual void ExecuteL( CXcapHttpRequest* aHttpRequest, + CXdmDocumentNode* aDocumentNode ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + virtual TInt FormatModRequestL( const CXdmDocumentNode* aDocumentNode ); + + private: + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void RunL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void DoCancel(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + TBool StartOperationL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void CancelOperation(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void HandleTimerEventL(); + + protected: + + TInt iResult; + TInt iCurrentIndex; + TBool iCompleted; + TBool iPartial; + TUint iOptionFlags; + CXdmXmlParser* iXmlParser; + TXdmCompletionData iFailureData; + TXdmCompletionData* iRequestData; + TRequestStatus* iClientStatus; + CXcapUriParser* iUriParser; + CXcapHttpRequest* iActiveRequest; + CXcapDocumentNode* iDocumentSubset; + CXcapDocument& iTargetDoc; + CXcapOperationFactory& iOperationFactory; + RPointerArray iRequestQueue; + + private: //Data + }; + +#endif //__XCAPHTTPOPERATION__ + +// End of File