diff -r 000000000000 -r 2e3d3ce01487 contextframework/cfw/inc/cfserver/CFCacheElement.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contextframework/cfw/inc/cfserver/CFCacheElement.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,216 @@ +/* +* Copyright (c) 2002-2007 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: CCFCacheElement class declaration. +* +*/ + + +#ifndef C_CFCACHEELEMENT_H +#define C_CFCACHEELEMENT_H + +#include + +#include "cfcontextobject.h" + +class CCFContextSubscriptionImpl; +class MCFContextSource; + +/** +* Encapsulates one cache element. +*/ +NONSHARABLE_CLASS( CCFCacheElement ): public CBase + { + public: + + static CCFCacheElement* NewL (); + static CCFCacheElement* NewLC (); + + ~CCFCacheElement(); + + public: // New methods + + /** + * Returns context object associated in this cache element. + * + * @since S60 5.0 + * @param None + * @return CCFContextObject& + */ + CCFContextObject& Context() const; + + /** + * Adds a new subscription in to the cache element. + * + * @since S60 5.0 + * @param aSubscription New subscription. + * @return None + */ + void AddSubscriptionL( CCFContextSubscriptionImpl& aSubscription ); + + /** + * Removes a subscription from the cache element. + * + * @since S60 5.0 + * @param aIndex Index to the subscription in the array to remove. + * @return None + */ + void RemoveSubscription( TInt aIndex ); + + /** + * Nullifies a subscription from the cache element by setting the pointer + * NULL. + * + * @since S60 5.0 + * @param aIndex Index to the subscription in the array to nullify. + * @return None + */ + void NullifySubscription( TInt aIndex ); + + /** + * Removes all NULL subscriptions from the cache element. + * + * @since S60 5.0 + * @return None + */ + void RemoveNullSubscriptions(); + + /** + * Returns subscriptions associated in this cache element. + * + * @since S60 5.0 + * @param None + * @return RPointerArray& + */ + const RPointerArray& Subscriptions() const; + + /** + * Set a read security policy associated in this cache element. + * + * @since S60 5.0 + * @param aSecurityPolicy Security policy associated to + * this cache element. + * @return None. + */ + void SetReadSecurityPolicy( const TSecurityPolicy& aSecurityPolicy ); + + /** + * Returns read security policy associated in this cache element. + * + * @since S60 5.0 + * @param None + * @return const TSecurityPolicy& + */ + const TSecurityPolicy& GetReadSecurityPolicy() const; + + /** + * Set a write security policy associated in this cache element. + * + * @since S60 5.0 + * @param aSecurityPolicy Security policy associated to + * this cache element. + * @return None. + */ + void SetWriteSecurityPolicy( const TSecurityPolicy& aSecurityPolicy ); + + /** + * Returns write security policy associated in this cache element. + * + * @since S60 5.0 + * @param None + * @return const TSecurityPolicy& + */ + const TSecurityPolicy& GetWriteSecurityPolicy() const; + + /** + * Sets the context source of this cache element. + * @param aContextPublisher Publisher of the context. + * Can also be set to NULL. + */ + void SetContextPublisher( MCFContextSource* aContextPublisher ); + + /** + * Sets the context source of this cache element. + * @param aContextPublisher Publisher of the context. + * Can also be set to NULL. + * @param aUid Context publisher's uid. + */ + void SetContextPublisher( + MCFContextSource* aContextPublisher, const TUid& aUid ); + + /** + * Get the context source of this cache element. + * @return Cache element, may be NULL if not given. + */ + const MCFContextSource* ContextPublisher() const; + + + /** + * Get UID of the context publisher process. + * @return UID of the context publisher process. + */ + const TUid& PublisherUid() const; + + + /** + * Compares two cache elements by source and type. + * + * @since S60 5.0 + * @param aFirst First cache element. + * @param aSecond Second cache element. + * @return KErrNone if same. + */ + static TInt CompareByTypeAndSource( + const CCFCacheElement& aFirst, + const CCFCacheElement& aSecond ); + + /** + * Compares two cache elements by type. + * + * @since S60 5.0 + * @param aFirst First cache element. + * @param aSecond Second cache element. + * @return KErrNone if same. + */ + static TInt CompareByType( + const CCFCacheElement& aFirst, + const CCFCacheElement& aSecond ); + + private: + + CCFCacheElement(); + void ConstructL(); + + private: // Data + + // Own: Context related to the cache element + CCFContextObject* iContext; + + // Own: Subscriptions for the context + RPointerArray iSubscriptions; + + // Own: Read security policy for the context + TSecurityPolicy iReadSecurityPolicy; + + // Own: Write security policy for the context + TSecurityPolicy iWriteSecurityPolicy; + + // Ref: Reference to the provider of this context + MCFContextSource* iPublisher; + + // Own: UID of the context publisher; + TUid iPublisherUid; + + }; + +#endif