diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/msencontext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/inc/msencontext.h Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,332 @@ +/* +* 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_CONTEXT_H +#define M_SEN_CONTEXT_H + + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CSenElement; +class CSenXmlReader; + +// CONSTANTS +namespace SenContext + { + // COMMON CONTEXT KEYS + _LIT8(KSenCtxKeyCoreServiceManager, "urn:com.nokia.serene:core:service-manager"); + _LIT8(KSenCtxKeySessionInitializer, "urn:com.nokia.serene:framework:session-initializer"); + _LIT8(KSenCtxKeyServiceSession, "urn:com.nokia.serene:framework:service-session"); + _LIT8(KSenCtxKeyTransportProperties, "urn:com.nokia.serene:framework:transport-properties"); + + _LIT8(KSenCtxKeyMessage, "urn:com.nokia.serene:framework:message"); + _LIT8(KSenCtxKeyChunk, "urn:com.nokia.serene:framework:chunk"); + _LIT8(KSenCtxKeyMessageProperties, "urn:com.nokia.serene:framework:message:properties"); +// _LIT8(KSenCtxKeyXmlParser, "urn:com.nokia.serene:framework:xml-parser"); + + + // DEPRECATED KEYS, + _LIT8(KSenCtxKeyCurrentSoapMessage, "urn:com.nokia.serene:framework:current-soap-msg"); + _LIT8(KSenCtxKeyCurrentMessageAsDesc,"urn:com.nokia.serene:framework:current-msg-desc"); + + + enum TContextType + { + EContextBase = 0, + EHandlerContext, + ESessionContext, + EMessageContext, + ETransportContext + }; + + enum TContextDirection + { + EOutgoing = 1, + EIncoming, + EBoth + }; + } + + +// CLASS DECLARATION +/** +* This is the abstract super class for all WSF context classes, providing +* convenience methods for basic, excessively used data types, and some +* foundation methods for general context properties, like context type and +* direction. +* +*/ +class MSenContext + { + public: + + // New functions + + /** + * Method is used to resolve concrete type (class) + * for this context. + * + * @return the class type of this handler + */ + virtual SenContext::TContextType Type() const = 0; + + /** + * Indicates the direction this context is serving. + * + * @return enum, which tells where this handler will + * be applied - outgoing, incoming, or on both directions. + */ + virtual SenContext::TContextDirection Direction() const = 0; + + /** + * Adds new const TDesC8& type value into context, identified by given key. + * + * @param aKey identifies new value + * @param aValue is the value being added. + * + * @return KErrNone on success, + * KErrAlreadyExists, if the key is reserved, + * or some other system-wide error code. + */ + virtual TInt Add(const TDesC8& aKey, const TDesC8& aValue) = 0; + + /** + * Updates new const TDesC8& 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. If key does not already exist, a new one will be added. + * + * @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, const TDesC8& aValue) = 0; + + /** + * Method returns TDesC8* type value. + * + * @param aKey identifies descriptor object + * + * @return value behind given key, or NULL, if + * not found. + * Ownership is not transferred, but remains + * to be held by this context. + * NOTE: Method leaves with KErrSenTypeMismatch error code, + * if value behind this key of UCS8 descriptor type. + */ + virtual const TDesC8* GetDesC8L(const TDesC8& aKey) = 0; + + /** + * Adds new TInt type value into context, identified by given key. + * + * @param aKey identifies new value + * @param aValue is the value being added. + * @return KErrNone on success, + * KErrAlreadyExists, if the key is reserved, + * or some other system-wide error code. + */ + virtual TInt Add(const TDesC8& aKey, TInt aValue) = 0; + + /** + * Updates new TInt 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. + * + * @return KErrNone on success, + * or some other system-wide error code. + */ + virtual TInt Update(const TDesC8& aKey, TInt aValue) = 0; + + /** + * Method returns TInt* type value. + * + * @param aKey identifies integer 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 behind this descriptor is not TInt* type. + */ + virtual const TInt* GetIntL(const TDesC8& aKey) = 0; + + /** + * Adds new CSenElement* 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, CSenElement* aValue) = 0; + + /** + * Updates new CSenElement* 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, CSenElement* aValue) = 0; + + /** + * Method returns CSenElement* type value. + * + * @param aKey identifies the XML element 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 behind this descriptor is not CSenElement* type. + */ + virtual const CSenElement* GetSenElementL(const TDesC8& aKey) = 0; + + /** + * Adds new TAny* type value into context, identified by given key. + * + * @param aKey identifies new value + * @param aValue is the value being added. Ownership is NOT 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, TAny* aValue) = 0; + + /** + * Updates new TAny* type value into context, identified by given key. + * If some value for the same key already exists, it is replaced with + * 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 NOT transferred this context. + * + * @return KErrNone on success, + * or some other system-wide error code. + */ + virtual TInt Update(const TDesC8& aKey, TAny* aValue) = 0; + + /** + * Method returns TAny* type value. + * + * @param aKey identifying the requested value + * + * @return value behind given key, or NULL, if + * not found. + * Ownership can NOT be transferred, since it was NEVER + * held by this context. + * Caller is supposed to know the type (class) of returned + * value from the pre-defined binding to certain key. + */ + virtual TAny* GetAnyL(const TDesC8& aKey) = 0; //codescannerwarnings + + // virtual TInt AddParser(CSenXmlReader* aValue) = 0; // protected context + // virtual TInt UpdateParser(CSenXmlReader* aValue) = 0; // protected context + /** + * Method returns XML parser (CSenXmlReader*) + * + * @return pointer to parser or NULL, if not + * found. + * Ownership of returned pointer is NOT transferred. + * Method leaves with KErrSenTypeMismatch error code, + * if value behind this descriptor is not CSenXmlReader* type. + */ + virtual const CSenXmlReader* GetParser() = 0; + + /** + * Removes value from the context, possibly destroying the + * value, too - if it is owned by this context. + * + * @param aKey used to identify value which needs to be removed + * + * @return the index of removed key-value pair, or + * KErrNotFound, if such key was not found + */ + virtual TInt Remove(const TDesC8& aKey) = 0; + + /** + * Methods tells the count of context items (key-value pairs). + * + * @return count of current items in this context. + */ + virtual TInt Count() const = 0; + + /** + * Resolves key at certain index, if it is + * not out of bounds of the current context. + * + * @return the key at certain index. + * Method can be used to interate through + * context values. + * If index is out of bounds, method leaves + * with either KErrUnderflow (negative index), + * or KErrOverflow(index>count-1) + */ + virtual TPtrC8 KeyAtL(TInt aIndex) = 0; + + /** + * Method clears (possibly destroys) the current contents + * of this context, making it possible to re-use this instance. + */ + virtual void Reset() = 0; + + + + /** + * Sets the direction (inbound or outbound for this context). + * @return KErrNone or error code (KErrNotSupported is expected, + * if method is not implemented). + */ + virtual TInt SetDirection( SenContext::TContextDirection aDirection ) = 0; + + + }; + +#endif // M_SEN_CONTEXT_H + +// End of File