webservices/wsframework/inc/msenmessagecontext.h
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/inc/msenmessagecontext.h	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,189 @@
+/*
+* Copyright (c) 2002-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: Header declaration
+*
+*/
+
+
+
+
+
+
+
+
+#ifndef M_SEN_MESSAGE_CONTEXT_H
+#define M_SEN_MESSAGE_CONTEXT_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32std.h>
+#include "msencontext.h"
+#include "MSenProperties.h"
+#include "MSenMessage.h"
+
+
+// CONSTANTS
+namespace SenContext
+    {
+    _LIT8(KSenCurrentSoapMessageCtxKey,             "urn:com.nokia.serene:message:soap:current");
+    _LIT8(KRemoteConsumer,                          "RemoteConsumer");
+    }
+
+/**
+* This is the message context interface, which is visible to CSenMessageHandler ECOM plug-in implementations.
+*/
+
+// FORWARD DECLARATIONS
+class CSenSoapEnvelope;
+class CSenSoapMessage;
+class CSenChunk;
+
+// CLASS DECLARATION
+class MSenMessageContext : public MSenContext
+    {
+    public:
+
+        /**
+        * Getter for the current message held by this message context.
+        * @return pointer to MSenMessage, or NULL if message is not 
+        * within this context at the moment.
+        */
+        virtual MSenMessage* MessageL() = 0;	//codescannerwarnigns
+
+        /**
+        * Sets the current message for this context, potentially freeing 
+        * currently owned message (de-alloc) if such exists. 
+        * @param apMessage provides pointer to new message. Note that
+        * by default the ownership *is* passed to this context.
+        * @return status code: 
+        *   KErrArgument if argument is NULL.
+        *   KErrNone on success.
+        */
+        virtual TInt SetMessage(MSenMessage* apMessage, TBool aOwned = ETrue) = 0;
+        
+
+        /**
+        * Getter for chunk which representates of the main message,
+        * held by this message context.
+        * @return pointer to CSenChunk, or NULL if message is not 
+        * within this context at the moment.
+        */
+        virtual CSenChunk* ChunkL() = 0;	//codescannerwarnings
+
+
+        /**
+        * Sets the current message (as chunk) for this context, potentially freeing 
+        * currently owned message (de-alloc) if such exists. 
+        * @param apMsgAsChunk provides pointer to chunk. Note that
+        * by default the ownership *is* passed to this context.
+        * @return status code: 
+        *   KErrArgument if argument is NULL.
+        *   KErrNone on success.
+        */
+        virtual TInt SetChunk(CSenChunk* apMsgAsChunk, TBool aOwned = ETrue) = 0;
+
+        /*
+        * Setter for message specific (transport) properties
+        * @param apProperties is the pointer to properties.
+        * Note that by default the ownership *is* passed to this context.
+        * @return status code: 
+        *   KErrArgument if argument is NULL.
+        *   KErrNone on success.
+        */
+        virtual TInt SetProperties(MSenProperties* apProperties, TBool aOwned = ETrue) = 0;
+
+        /*
+        * Getter for message specific (transport) properties
+        * @return transport properites as MSenProperties pointer, or NULL
+        * if properties object does not exist.
+        */
+        virtual MSenProperties* Properties() = 0;
+
+
+        virtual TInt Add(const TDesC8& aKey, MSenMessage* apMessage, TBool aOwned = ETrue) = 0;
+        virtual TInt Update(const TDesC8& aKey, MSenMessage* apMessage, TBool aOwned = ETrue) = 0;
+        virtual MSenMessage* GetMessageL(const TDesC8& aKey) = 0;	//codescannerwarnings
+
+
+        // ---
+        
+        // Old, deprecated methods
+
+        /*
+        * Method returns "current" CSenSoapMessage*.
+        * @return value, or NULL, if not found.
+        * Ownership is not transferred, but remains to be held by this context.   
+        * Caller is supposed to know the type (class) of returned value from 
+        * the pre-defined binding to certain key.
+        * @deprecated: use Message() getter instead!
+        */
+        virtual CSenSoapMessage* GetCurrentSoapMessage() = 0;  // DEPRECATED: remove this method; replace with MSenMessage variant
+
+
+        
+        /*
+        * Method returns original message serialized into UCS8 by
+        * service consumer (msg=request), or service (msg=response),
+        * depending direction of this context.
+        * @return serialized message (outgoing one from
+        * service consumer, or incoming, original response
+        * which transport has received from (remote) service.
+        * - or KNullDesC8, if not set.
+        * Ownership is NOT transferred, but remains to be held by this context.   
+        * Caller is supposed to know the type (class) of returned
+        * value from the pre-defined binding to certain key.
+        */
+        virtual TPtrC8 GetMessageL() = 0; // DEPRECATED: keep but rename this method 
+
+        /*
+        * Adds new CSenSoapEnvelope* type value into context, identified by given key.
+        * @param aKey identifies new value
+        * @param aValue is the value being added. Ownership is transferred
+        * to this context.
+        * @return KErrNone on success, 
+        *         KErrAlreadyExists, if the key is reserved,
+        *         or some other system-wide error code.
+        */
+        virtual TInt Add(const TDesC8& aKey, CSenSoapEnvelope* aValue) = 0; // DEPRECATED: remove this method; replace with MSenMessage variant
+
+        /*
+        * Updates new CSenSoapEnvelope* type value into context, identified by given key.
+        * If some value for the same key already exists, it is destroyed and replaced
+        * by the new value.
+        * @param aKey identifies new value
+        * @param aValue is the updated value, which may replace
+        *         any existing value, which used same key.
+        *         Ownership is transferred to this context.
+        * @return KErrNone on success, 
+        *         or some other system-wide error code.
+        */
+        virtual TInt Update(const TDesC8& aKey, CSenSoapEnvelope* aValue) = 0;  // DEPRECATED: remove this method; replace with MSenMessage variant
+
+        /*
+        * Method returns CSenSoapEnvelope* type value.
+        * 
+        * @param aKey identifies SOAP envelope object
+        * 
+        * @return value behind given key, or NULL, if not found.
+        * Ownership is NOT transferred, but remains to be held by
+        * this context.   
+        * Method leaves with KErrSenTypeMismatch error code,
+        * if value at this index is not CSenSoapEnvelope* type.   
+        */
+        virtual const CSenSoapEnvelope* GetSenSoapEnvelopeL(const TDesC8& aKey) = 0;  // DEPRECATED: remove this method; replace with MSenMessage variant
+    };
+
+#endif // M_SEN_MESSAGE_CONTEXT_H
+
+// End of File