contacts_plat/presence_cache_api/inc/presencecachereader2.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/presence_cache_api/inc/presencecachereader2.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2008 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:  Interface for presence cache reader.
+*
+*/
+
+#ifndef MPRESENCECACHEREADER2_H
+#define MPRESENCECACHEREADER2_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <badesca.h>
+#include <presencecacheids.hrh>
+
+class MPresenceBuddyInfo2;
+class MPresenceCacheReadHandler2;
+
+/**
+ * Interface for presence cache reader API. This interface is implemented 
+ * by the Presence Cache client. Notice that an xsp id is
+ * in the form ovi:xyz@example.com
+ *
+ * @since S60 v5.1
+ */
+class MPresenceCacheReader2
+    {
+public:
+
+
+    /**
+     * Factory method to instantiate MPresenceCacheReader.
+     *
+     * @return The new MPresenceCacheReader object. Object
+     *         ownership is returned to caller.
+     */
+    IMPORT_C static MPresenceCacheReader2* CreateReaderL( );    
+
+    /**
+     * Public destructor.
+     * Objects can be deleted through this interface.
+     */
+    virtual ~MPresenceCacheReader2() {};        
+    
+
+public: //Sub interfaces for presence cache reader, Synchonous methods
+
+    
+    /**
+     * Reads presence info from cache for a given identity, returns immediately.
+     *
+     * @param aIdentity buddy id, identity must be in xsp id format
+     * @return MPresenceInfo for the given buddy. Ownership to caller.
+     *         Null if service or buddy not found, not on Cleanup in that case.    
+     */
+    virtual MPresenceBuddyInfo2* PresenceInfoLC(const TDesC& aIdentity) = 0;
+    
+    /**
+     * Returns total number of buddies stored in presence cache.
+     * It includes all services, probably useful while deciding performance 
+     * overheads or informing to the user.
+     *
+     * @return TInt Total number of presence infos in presence cache.
+     */                           
+    virtual TInt BuddyCountInAllServices() = 0;
+    
+    /**
+     * Returns total number of buddies (presence infos) stored in a specific
+     * service in presence cache. It includes only the given service. 
+     *
+     * @param aServiceName as in device's service table
+     * @return TInt buddy count or error code. e.g. in case of service not
+     *         found return value is KErrNotFound.
+     */                           
+    virtual TInt BuddyCountInService(const TDesC& aServiceName) = 0;
+    
+    /**
+     * Returns total number services in presence cache.
+     *
+     * @return TInt total number of services in presence cache.
+     */                           
+    virtual TInt ServicesCount() = 0;
+        
+    /**
+     * Cancels any async. read operation going on. After calling this
+     * method no callback will be received from asycn read method.
+     *
+     * @return error code, KErrNone if successfully cancelled.
+     */
+    virtual TInt CancelRead() = 0;
+                                                
+
+public: //Sub interfaces for presence cache reader, Asynchronous methods
+
+    /**
+     * Reads all presence info from cache for a given service. Returns in 
+     * MPresenceCacheReadHandler2's HandlePresenceReadL.
+     *
+     * @param aServiceName Service name to search from
+     * @param aHandler to handle async. callback
+     * @return error code, in case of error callback wont be called.
+     */    
+    virtual TInt AllBuddiesPresenceInService(const TDesC& aServiceName, 
+                                MPresenceCacheReadHandler2* aHandler) = 0;
+
+public: //Sub interfaces for presence cache reader, Asynchronous methods
+    
+    /**
+     * Sets the observer to receive Presence Buddy Change notifications.
+     * Observer must be set before using SubscribePresenceBuddyChangeL.
+     * If client changes the observer using this method, all the notifications
+     * related to existing and new subscriptions will be delivered to 
+     * the new observer.
+     *
+     * @return Error code, if KErrNone observer is successfully set.
+     */
+    virtual TInt SetObserverForSubscribedNotifications(
+        MPresenceCacheReadHandler2* aHandler) = 0;
+    
+    /**
+     * Subscribe for given presence buddy's change in presence. An observer
+     * must be set before using this method by SetObserverForSubscribedNotifications.
+     * Notifcations are delivered through MPresenceCacheReadHandler2's HandlePresenceNotificationL
+     *
+     * @param aIdentity buddy id, identity must be in xsp id format
+     * @return KErrNone if successful, KErrArgument if observer not set
+     * @leave Only in system error cases e.g. if failed to allocate memory.
+     */
+    virtual TInt SubscribePresenceBuddyChangeL(const TDesC& aIdentity) = 0;
+                                                
+    /**
+     * Unsubscribe for given presence buddy's change in presence. The request
+     * is ignored if invalid.
+     *
+     * @param aIdentity buddy id, identity must be in xsp id format
+     * @leave Only in system error cases e.g. if failed to allocate memory.
+     */
+    virtual void UnSubscribePresenceBuddyChangeL(const TDesC& aIdentity) = 0;
+
+    };
+
+#endif // MPRESENCECACHEREADER2_H
+
+
+