williamr@2: /* williamr@2: * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: This abstract class defines consumer policy interface. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #ifndef M_SEN_CONSUMER_POLICY_H williamr@2: #define M_SEN_CONSUMER_POLICY_H williamr@2: williamr@2: // INCLUDES williamr@2: #include // for CActive williamr@2: #include williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CSenIdentityProviderIdArray8; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * This abstract class defines consumer policy interface. williamr@2: * The consumer policy sets the conditions in which some service provider williamr@2: * is capable to operate in. It is defining context, through which these williamr@2: * (possibly remote) services may be contacted and used. williamr@2: * The actual properties may include transport layer settings, like williamr@2: * predefined Internet Access Point (IAP) ID. In addition, consumer policy williamr@2: * may declare, that certain service should only be contacted using certain williamr@2: * identity provider (in ID-WSF). This can be achieved by mapping certain williamr@2: * list of IDP IDs to a consumer policy. williamr@2: * A consumer policy is effective only for a single session, and thus it williamr@2: * applies to one service connection only. This means, that this policy williamr@2: * information is "private", and not shared between different WSC applications williamr@2: * using WSF, event though they might be using the same (remote) service at the williamr@2: * same time. Consumer policy properties are not serialized in any WSF williamr@2: * database, but resides in memory only. williamr@2: * williamr@2: * Example structure of ConsumerPolicy XML fragment: williamr@2: * williamr@2: * williamr@2: * williamr@2: * williamr@2: * 2 williamr@2: * williamr@2: * williamr@2: * williamr@2: * williamr@2: * urn:first.example.idp.com williamr@2: * williamr@2: * williamr@2: * urn:second.example.idp.com williamr@2: * williamr@2: * williamr@2: * williamr@2: * williamr@2: * @lib SenServDesc.lib williamr@2: * @since Series60 3.0 williamr@2: */ williamr@2: class MSenConsumerPolicy williamr@2: { williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Setter for Internet Access Point (IAP) ID existing in CommDB. williamr@2: * @since Series60 3.0 williamr@2: * @param aIapId IAP ID williamr@2: */ williamr@2: virtual void SetConsumerIapIdL(TUint32 aIapId) = 0; williamr@2: williamr@2: /** williamr@2: * Getter for IAP ID. williamr@2: * @since Series60 3.0 williamr@2: * @param aCurrentIapId will contain the current williamr@2: * Internet Access Point ID williamr@2: * @return williamr@2: * - KErrNone if element is found and has valid content williamr@2: * - KErrNotFound if no element has been found or it has williamr@2: * no content williamr@2: * - TLex error codes, if element has non-numeric value, williamr@2: * which cannot be resolved williamr@2: */ williamr@2: virtual TInt ConsumerIapId(TUint32& aCurrentIapId) = 0; williamr@2: williamr@2: /** williamr@2: * Setter for consumer identity provider IDs. Overrides current values williamr@2: * with the given values from the array. If an ID does not exist, it williamr@2: * will be added. williamr@2: * @since Series60 3.0 williamr@2: * @param aList list of identity provider IDs. williamr@2: */ williamr@2: virtual void SetConsumerIdentityProviderIdsL( williamr@2: CSenIdentityProviderIdArray8& aList) = 0; williamr@2: williamr@2: /** williamr@2: * Adds a new Identity provider ID value at the end of the current list williamr@2: * values. williamr@2: * @since Series60 3.0 williamr@2: * @param aProviderId unique ProviderID as UTF-8 descriptor williamr@2: * @return KErrAlreadyExists, if a duplicate is tried to add williamr@2: * KErrArgument if a zero-length descriptor is tried to add williamr@2: * (aProviderId.Length() == 0) williamr@2: */ williamr@2: virtual TInt AddConsumerIdentityProviderIdL(const TDesC8& aProviderId) = 0; williamr@2: williamr@2: /** williamr@2: * Rebuilds the consumer policy of this service pattern from the given williamr@2: * consumer policy. williamr@2: * @since Series60 3.0 williamr@2: * @param aTemplate the consumer policy to rebuild from. williamr@2: * @return KErrNone or other system-wide Symbian error codes. williamr@2: */ williamr@2: virtual TInt RebuildFromConsumerPolicy(MSenConsumerPolicy& aTemplate) = 0; williamr@2: williamr@2: /** williamr@2: * Getter for Identity provider IDs. williamr@2: * @since Series60 3.0 williamr@2: * @return a list of IDP arrays if such value(s) have been set williamr@2: * or an empty array if no IDP:s have been specified. williamr@2: */ williamr@2: virtual const CSenIdentityProviderIdArray8& williamr@2: ConsumerIdentityProviderIds8L() = 0; williamr@2: williamr@2: /** williamr@2: * Checks if the policy of this service pattern accepts given policy. williamr@2: * @since Series60 3.0 williamr@2: * @param aPolicyPattern the consumer policy to check. williamr@2: * @return ETrue if accepts, EFalse if not williamr@2: */ williamr@2: virtual TBool AcceptsConsumerPolicy(MSenConsumerPolicy& aPolicyPattern) = 0; williamr@2: }; williamr@2: williamr@2: #endif //M_SEN_CONSUMER_POLICY_H williamr@2: williamr@2: // End of File williamr@2: williamr@2: