diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/msenmessagecontext.h --- /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 +#include +#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