ncdengine/provider/protocol/inc/ncdrequestbase.h
changeset 0 ba25891c3a9e
--- /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 <e32std.h>
+#include <e32base.h>
+#include <badesca.h>
+#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<MNcdConfigurationProtocolCookie> iCookies;
+    RPointerArray<MNcdConfigurationProtocolQueryResponse> iQueryResponses;
+    };
+
+#endif //CNCDREQUESTBASE_HH
+