diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/protocol/inc/ncdrequestbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/protocol/inc/ncdrequestbase.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2006 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: CNcdRequest declaration +* +*/ + + +#ifndef CNCDREQUESTBASE_HH +#define CNCDREQUESTBASE_HH + +#include +#include +#include +#include "ncdrequestconstants.h" +#include "ncdprotocoltypes.h" +#include "ncdprotocolutils.h" +#include "ncdprotocolwords.h" + +class CNcdRequestConfigurationData; +class MNcdConfigurationProtocolDetail; +class MNcdConfigurationProtocolCookie; +class MNcdConfigurationProtocolQueryResponse; + +class CNcdRequestBase : public CBase + { + +public: + /** + * Request body generation. + * Returns NULL if all required fields are not set. + * At least namespace must be set explicitly. + * @return The request serialized into 8-bit buffer or NULL. + */ + virtual HBufC8* CreateRequestL(); + + /** + * Configuration object getter. + * The ownership is NOT transferred outside RequestBase + * @return Configuration object. + */ + CNcdRequestConfigurationData* Configuration(); + + /** + * Configuration object setter. + * RequestBase takes ownership of the object. + * @param aConfiguration Configuration object + */ + void SetConfigurationL( + CNcdRequestConfigurationData* configuration); + + /** + * Adds a query response to the request. + * @param aResponse The response object to add. + */ + void AddQueryResponseL( + MNcdConfigurationProtocolQueryResponse* aResponse); + + + /** + * Adds cookie element to the request. + * RequestBase takes ownership of the object. + * @param aCookie Pointer to the cookie object + */ + void AddCookieL( + MNcdConfigurationProtocolCookie* aCookie); + + // response root element attribute setters + void SetRequestIdL(TInt aId); + void SetProtocolVersionL(const TDesC8& aVersion); + void SetSessionL(const TDesC& aSession); + void SetNamespaceL(const TDesC& aNamespace); + + HBufC* IdLC() const; + HBufC* SessionLC() const; + HBufC* NamespaceLC() const; + +public: + ~CNcdRequestBase(); + +protected: + static CNcdRequestBase* NewL(); + static CNcdRequestBase* NewLC(); + + CNcdRequestBase(); + + virtual void ConstructL( const TDesC8& aRootName ); + + TXmlEngElement GetCookiesElementL( const TDesC8& aPrefix ); + TXmlEngElement GetQueryResponsesElementL( const TDesC8& aPrefix ); + TXmlEngElement GetDetailsElementL( const TDesC8& aPrefix ); + + HBufC8* ExternalizeL(); + +private: + void InitializeDocumentL(); + +protected: +#ifdef RD_XML_ENGINE_API_CHANGE + RXmlEngDOMImplementation iDomImplementation; +#endif + RXmlEngDocument iDocument; + TXmlEngElement iRoot; + + TXmlEngNamespace iCdpNamespace; + TXmlEngNamespace iXsNamespace; + TXmlEngNamespace iXsiNamespace; + + // element used for the actual request + TXmlEngElement iRequestElement; + + // these can change according to the request type + // (preminetRequest / configurationRequest) + TXmlEngString iId; + TXmlEngString iVersion; + HBufC8* iRootName; + + // response root attributes + TXmlEngString iSession; + TXmlEngString iNamespace; + + // owned: client and network configuration data + CNcdRequestConfigurationData* iConfiguration; + +private: + + TXmlEngString iPrefix; + + RPointerArray iCookies; + RPointerArray iQueryResponses; + }; + +#endif //CNCDREQUESTBASE_HH +