diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/msenservicedescription.h --- a/epoc32/include/mw/msenservicedescription.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/msenservicedescription.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,312 @@ -msenservicedescription.h +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Interface (abstract) class for subclasses implementing the +* most common value objects used in WSF, which are used to +* describe some invocable service. +* +*/ + + + + + + + + +#ifndef M_SEN_SERVICE_DESCRIPTION_H +#define M_SEN_SERVICE_DESCRIPTION_H + +// INCLUDES +#include +#include +#include + +// CONSTANTS +_LIT8(KSenFacetValFalse, "false"); +_LIT8(KSenFacetValTrue, "true"); + +// Facet identifier (URN) constants: +_LIT8(KCompleteMessagesFacet, "urn:nokia.com.serene:complete-messages"); +_LIT8(KExposeLocalServiceFacet, "urn:nokia.com.serene:expose"); +_LIT8(KProviderSharableFacet, "urn:nokia.com.serene.provider:sharable"); +_LIT8(KProviderCompleteClientMsgsFacet, "urn:nokia.com.serene.provider:complete-client-messages") ; +_LIT8(KProviderLoadOnStartupFacet, "urn:nokia.com.serene.provider:load-on-startup") ; +_LIT8(KProviderThreadsafeFacet, "urn:nokia.com.serene.provider:threadsafe") ; +_LIT8(KProviderReinitializableFacet, "urn:nokia.com.serene.provider:re-initializable") ; +_LIT8(KProviderStayOnBackgroundFacet, "urn:nokia.com.serene.provider:stay-on-background") ; +_LIT8(KTransportClassFacet, "urn:nokia.com:serene:transport:class"); + +// Transport plug-in types (ECOM cues / class types): +_LIT8(KSenTransportCueHTTP, "com.nokia.wsf.transport.plugin.httpchannel"); +_LIT8(KSenTransportCueVirtualTCP, "com.nokia.wsf.transport.plugin.virtualtcp"); +_LIT8(KSenTransportCueLocalEcom, "com.nokia.wsf.transport.plugin.local"); +_LIT8(KSenTransportCueHostletConnection, "com.nokia.wsf.transport.plugin.hostlet"); + +// Transport schemes +_LIT8(KSenTransportSchemeHTTP, "http"); +_LIT8(KSenTransportSchemeTCP, "tcp"); +_LIT8(KSenTransportSchemeLocal, "local"); +_LIT8(KSenTransportSchemeHostlet, "hostlet"); +//_LIT8(KSenTransportSchemeVirtualTCP, "vtcp"); + +const TInt KSenServiceDescriptionBaseScore = 100; + +// FORWARD DECLARATIONS +class CSenFacet; + +// DATA TYPES +typedef RPointerArray RFacetArray; + +// CLASS DECLARATION + +/** +* Interface (abstract) class for subclasses implementing the most common value +* objects used in WSF, which are used to describe some invocable service. +* All of the subclasses are capable of representing themselves in XML. +* @lib SenServDesc.lib +* @since Series60 3.0 +*/ +class MSenServiceDescription + { + public: + + /** + * DescriptionClassType enumeration. + */ + IMPORT_C enum TDescriptionClassType + { + ERoot = 0, // not in use + EBaseServiceDescription = 1, // not in use + EXmlServiceDescription = 2, + EIdentityProvider = 3, + EServicePattern = 4, + EServiceSession = 5, + EWebServiceSession = 6, + EBasicWebServiceSession = 7, + EIdWSFServiceSession = 8, + EIdWsfServiceInstance = 9, + ECoreServiceConsumer = 10, + ESenInternalServiceConsumer = 11, + EIdWsfAuthenticationServiceClient = 12, + EIdWsfDiscoveryServiceClient = 13, + ERestServiceSession = 14, + EWSStarServiceSession = 15, + EWSStarSTSClient = 16, + EWSStarPolicyClient = 17, + EWSDescription = 18, + EWSPattern = 19, + EAtomPubServiceSession = 20, + EAtomPubAuthClient = 21, + EAccount = 22, + EOviServiceSession = 23, + EOviOAuthClient = 24 + }; + + // New functions + + /** + * The DescriptionClassType() method is used to resolve the real + * subclass type in cases where instance of that class is seen + * through one of its superclass interfaces. + * @since Series60 3.0 + * @return TDescriptionClassType enumeration identifying the class. + */ + virtual TDescriptionClassType DescriptionClassType() = 0; + + /** + * Method returns ETrue if this service description matches the given + * pattern. + * The bits of information that are in the pattern are read and compared + * to corresponding fields in this service description. Note that a pattern + * may have far fewer fields and that only the non-null and non-zero-length + * fields are compared. + * For example, assume that a pattern with only a contract was defined; + * with the contract set to "urn:example.com:service". Each + * service description with the same contract will match the pattern, + * even if such a service description has non-null/non-zero-length fields + * for other aspects. + * @since Series60 3.0 + * @param aPattern is a Service Description, typically with partial + * information. + * @return TBool ETrue if match, EFalse otherwise. If the value is + * not found from current instance, it is not used in comparison + * (even if offered in the given pattern). + */ + virtual TBool Matches(MSenServiceDescription& aPattern) = 0; + + /** + * Getter for contract, which is typically some URI. + * @since Series60 3.0 + * @return the Contract + */ + virtual TPtrC8 Contract() = 0; + + /** + * Method for checking if service description has a certain facet. + * @since Series60 3.0 + * @param aURI the facet to check, typically some URI. + * @param aHasFacet is ETrue if facet is found and EFalse, if not. + * @return KErrNone or other system-wide Symbian error codes. + */ + virtual TInt HasFacetL(const TDesC8& aURI, TBool& aHasFacet) = 0; + + /* + * Method for getting a facet value from the service description + * @since Series60 3.0 + * @param aURI the facet to get + * @param aValueTo a ref-to-pointer into which the value will + * be allocated, which ownership is transferred + * to the caller. + * @return KErrNone + * KErrNoMemory value couldn't be allocated due to lack + * of memory + * KErrNotFound if the wanted facet was not found. + * Other system-wide Symbian error codes. + */ + virtual TInt FacetValue(TDesC8& aURI, HBufC8*& aValueTo) = 0; + + /** + * Method for adding a facet. Will NOT override an already + * existing facet with a same name. + * @since Series60 3.0 + * @param aFacet is the one to be added. A copy of the + * the original facet instance will be added. + * @return KErrNone or other system-wide Symbian error codes. + * KErrAlreadyExists if a facet with same name exists + */ + virtual TInt AddFacetL(const CSenFacet& aFacet) = 0; + + /** + * Method for setting a facet.Adds a new facet, if non-existent. + * But, if a facet with same name exists, it will be overridden. + * @since Series60 3.0 + * @param aFacet to be set. A copy of the original will be + * created. + * @return KErrNotFound if facet can not be found + * KErrNone if facet was found + * KErrNoMemory if no memory could be allocated for the value + * Other system-wide Symbian error codes. + */ + virtual TInt SetFacetL(const CSenFacet& aFacet) = 0; + + /** + * Removes a characteristic (Facet) from the description + * @since Series60 3.0 + * @param aURI of the facet to be removed. + * @return KErrNone if a Facet was successfully removed + * KErrNotFound if a Facet could not be found + * Other system-wide Symbian error codes. + */ + virtual TInt RemoveFacet(const TDesC8& aURI) = 0; + + /** + * Method for getting all facets. Copies characteristics (Facets) + * from the description into array. For each characteristic (Facet) + * found in array the HasFacetL() method should return "ETrue". + * @since Series60 3.0 + * @param aFacetArray is typically an empty array, into where + * copies of facets will be added. Ownership of the + * items in this array is transferred to the caller. + * @return KErrNone or other system-wide Symbian error codes. + */ + virtual TInt FacetsL(RFacetArray& aFacetArray) = 0; + + /** + * This leaving variant of ScoreMatch() always returns a positive integer + * if this service description matches with the given pattern in at + * least one aspect. Higher numbers mean closer match. + * + * In case of system error, method leaves. + * + * The bits of information that are in the pattern are read and compared + * to corresponding fields in this ServiceDescription. Note that a pattern + * may have far fewer fields and that only the non-null fields are compared. + * For example, assume that a pattern with only a contract was defined; + * with the contract set to "urn:example.com:service". + * Each ServiceDescription with the same contract will match the pattern, + * even if such a ServiceDescription has non-null fields for other aspects. + * @since Series60 3.0 + * @param aPattern a ServiceDescription, typically with partial + * information. + * @return the score. If nothing matches, returns 0 + */ + virtual TInt ScoreMatchL(MSenServiceDescription& aPattern) = 0; + + /** + * Getter for endpoint. + * @since Series60 3.0 + * @return The endpoint. + */ + virtual TPtrC8 Endpoint() = 0; + + /** + * Getter for the framework ID. + * @since Series60 3.0 + * @return The framework ID or KNullDesC8 if no framework is set + */ + virtual TPtrC8 FrameworkId() = 0; + + /** + * Getter for the framework version. + * @since Series60 3.0 + * @return The framework version or KNullDesC8 if not set. + */ + virtual TPtrC8 FrameworkVersion() = 0; + + /** + * Setter for contract. + * @since Series60 3.0 + * @param aContract the contract to be set. + */ + virtual void SetContractL(const TDesC8& aContract) = 0; + + /** + * Setter for endpoint. + * @since Series60 3.0 + * @param aEndpoint to the service. Note that endpoint cannot + * include characters which are illegal in XML. If endpoint + * is an URL which contains illegal characters (like '&'-char), + * those need to be encoded into XML entity form (like &). + * EncodeHttpCharactersLC() method from XmlUtils can be used + * for encoding of basic XML entities. + */ + virtual void SetEndPointL(const TDesC8& aEndPoint) = 0; + + /** + * Gets the service description as XML fragment in UTF-8 format. + * @since Series60 3.0 + * @return the service description as XML, which ownership is + * transferred to the caller. + */ + virtual HBufC8* AsXmlL() = 0; + + /** + * Gets the service description as XML, in Unicode (UCS-2) + * @since Series60 3.0 + * @return the service description as XML, in Unicode (UCS-2) + * encoding form. + */ + virtual HBufC* AsXmlUnicodeL() = 0; + + /** + * Writes this service description as XML, in UTF-8 form to a stream + * @since Series60 3.0 + * @param aWriteStream to write into. + */ + virtual void WriteAsXMLToL(RWriteStream& aWriteStream) = 0; + }; + +#endif // M_SEN_SERVICE_DESCRIPTION_H + +// End of File