PECengine/AttributeFramework2/Inc/MPEngPresenceAttrTransactionEnv.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/AttributeFramework2/Inc/MPEngPresenceAttrTransactionEnv.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,187 @@
+/*
+* Copyright (c) 2004 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:  Presence attribute transaction environment.
+*
+*/
+
+#ifndef __MPENGPRESENCEATTRTRANSACTIONENV_H
+#define __MPENGPRESENCEATTRTRANSACTIONENV_H
+
+
+//INCLUDES
+#include <E32Std.h>
+#include "BamDescA.h"
+
+
+//FORWARD DECLARATIONS
+class MPEngPresenceAttrModel2;
+
+
+
+// CLASS DECLARATION
+
+
+/**
+ * Interface for Presence Attribute Transaction Environment.
+ *
+ * Attribute Transaction Environment manages the list
+ * of subscribed presence attributes
+ *
+ * NOTE!!! Attribute Transaction Environment is reference counted singleton,
+ * so client which has retrieved a instance to it, must also free it
+ * by calling MPEngPresenceAttrTransactionEnv::Close()
+ *
+ * @lib 3.0
+ */
+class MPEngPresenceAttrTransactionEnv
+    {
+
+    public: //Reference cleanup
+
+        /**
+         * Attribute Transaction Environment is reference counted
+         * singleton. and clients must free all obtained instances
+         * by calling this to each of them when the Attribute
+         * Transaction Environment isn't anymore needed.
+         *
+         * @since 3.0
+         */
+        virtual void Close() = 0;
+
+
+
+    public: //Subscriptions
+
+
+        /**
+         * Adds given presence id into list of subscribed users.
+         *
+         * Subscriptions are "reference counted", so one subscribed
+         * user can have several subscriptions active.
+         * If given presence ID is empty, leaves with KErrArgument.
+         *
+         * @since 3.0
+         * @param aPresenceID The subscribed users presence ID.
+         */
+        virtual void AddSubscriptionL( const TDesC& aPresenceID ) = 0;
+
+
+        /**
+         * Removes given user from attribute librarys list of
+         * subscribed users.
+
+         * Subscriptions are "reference counted", so one subscribed
+         * user can have several subscriptions active.
+         * ==> Subscribed user must be removed as many times
+         * as it has been added.
+         *
+         * If given presence id is empty, does nothing.
+         *
+         * @since 3.0
+         * @param aPresenceID The subscribed users presence ID.
+         */
+        virtual void RemoveSubscriptionL( const TDesC& aPresenceID ) = 0;
+
+
+        /**
+         * Gets the list of currently subscribed users.
+         *
+         * @since 3.0
+         * @return The list if currently subscribed users.
+         */
+        virtual const MDesCArray& SubscribedPresenceIDs() const = 0;
+
+
+    public: //Session attributes
+
+
+        /**
+         * Sets session tracing attributes.
+         * Clears previous attributes and sets the new set in use.
+         *
+         * @since 3.0
+         * @param aAttributeModels Session tracing attributes.
+         * In success, takes the ownership of attributes which
+         * are removed from parameter array.
+         */
+        virtual void SetSessionTracingAttributesL(
+            RPointerArray< MPEngPresenceAttrModel2 >& aAttributeModels ) = 0;
+
+
+        /**
+         * Updates session tracing attributes. If attribute is found
+         * from internal session tracing attributes list and also from
+         * parameter array, takes the attribute from parameter array
+         * away, and replaces the internal attribute object with
+         * parameter one.
+         *
+         * @since 3.0
+         * @param aAttributeModels New session tracing attributes.
+         * In success, takes the ownership of attributes which
+         * are removed from parameter array.
+         */
+        virtual void UpdateSessionTracingAttributesL(
+            RPointerArray< MPEngPresenceAttrModel2 >& aAttributeModels ) = 0;
+
+
+        /**
+         * Informs held attributes about session state change
+         * and then stores those back to storage.
+         *
+         * @since 3.0
+         * @param aSessionOpen If ETrue, network presence session
+         * was opened. If EFalse, network presence session was closed.
+         */
+        virtual void HandleNetworkSessionStateChangeL( TBool aSessionOpen ) = 0;
+
+
+
+
+    public: //Orphan notifications
+
+        /**
+         * Adds a presence notification to orphan notification que.
+         *
+         * @since 3.0
+         * @param aPresenceBlock The orphan notification to que.
+         */
+        virtual void QueOrphanNotificationL( const TDesC8& aPresenceBlock ) = 0;
+
+
+        /**
+         * Processes the qued orphan notifications.
+         * Adds the generated attribute models to given array.
+         *
+         * @since 3.0
+         * @param aModels The array to add produced attribute models.
+         */
+        virtual void ProcessOrphanNotificationsL(
+            RPointerArray< MPEngPresenceAttrModel2 >& aModels ) = 0;
+
+
+    protected:
+
+        /**
+         * Protected  destructor.
+         *
+         * Concrete Attribute Transaction Environment can't
+         * be deleted through this interface.
+         */
+        virtual ~MPEngPresenceAttrTransactionEnv() {};
+
+    };
+
+#endif      //  __MPENGPRESENCEATTRTRANSACTIONENV_H
+
+//  End of File