isolationserver/isoserver/inc/isofetchcontactlist.h
changeset 0 d0f3a028347a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/isolationserver/isoserver/inc/isofetchcontactlist.h	Tue Feb 02 01:10:06 2010 +0200
@@ -0,0 +1,159 @@
+
+/* ============================================================================
+*  Name        : isofetchcontactlist.h
+*  Part of     : isolation server.
+*  Version     : %version: 9 %
+*
+*  Copyright © 2007-2008 Nokia.  All rights reserved.
+*  All rights reserved.
+*  Redistribution and use in source and binary forms, with or without modification, 
+*  are permitted provided that the following conditions are met:
+*  Redistributions of source code must retain the above copyright notice, this list 
+*  of conditions and the following disclaimer.Redistributions in binary form must 
+*  reproduce the above copyright notice, this list of conditions and the following 
+*  disclaimer in the documentation and/or other materials provided with the distribution.
+*  Neither the name of the Nokia Corporation nor the names of its contributors may be used 
+*  to endorse or promote products derived from this software without specific prior written 
+*  permission.
+*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
+*  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
+*  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
+*  SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+*  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
+*  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+*  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* ============================================================================
+* Template version: 1.0
+*/
+
+
+
+/*!
+* \def To avoid multiple inclusion of header
+*/
+#ifndef __IFETCHCONTACTLIST_H__
+#define __IFETCHCONTACTLIST_H__
+
+#include "tp-conn.h"
+#include "tp-connmgr.h"
+#include "tp-chan.h"
+#include "tp-chan-gen.h"
+#include "tp-ch-gen.h"
+#include "tp-chan-iface-group-gen.h"
+#include "tp-chan-type-text-gen.h"
+#include "tp-chan-type-streamed-media-gen.h"
+#include "tp-props-iface.h"
+#include "tp-constants.h"
+#include "tp-interfaces.h"
+
+#include "isoim.h"
+
+/*!	\file
+*	Interfaces for fetching of contacts.
+*	client anywhere in the documentation refers to anyone
+*	using the isoserver
+*/
+
+/*! \enum channel_type
+ *	type of the channel
+ */
+enum channel_type
+	{
+	ESubscribe_Channel,
+	EPublish_Channel	
+	};
+
+/*!	\brief This function is called as a callback to get the contact names from 
+ * 	contact handles. Contact names are sent to client in multiple packets of
+ * 	size MAX_MSG_SIZE
+ *
+ * 	\param proxy unused
+ * 	\param handles_names 2D array of contact names
+ * 	\param error error if any 
+ * 	\param userdata msg_type
+ */
+static void inspect_handles_cb( DBusGProxy *proxy,char **handles_names, 
+			GError *error, gpointer userdata ) ;
+
+
+/*!	\brief This function is called if there are 0 contacts or there was an error
+ *
+ * 	\param contact_type : Type of the contacts
+ * 	\param err : err if any, 0 otherwise
+ */
+static gint send_fetch_contacts_error( gint contact_type , gint err );
+
+/*!	\brief This function is a callback for request for the contacts 
+ *	in local pending contatct list from server. This is 
+ *	only called for publish channel members. fetch_contacts is called 
+ *	to get the contact names from the handles. If there are no conatcts in 
+ *	the list it calls send_fetch_contacts_error else requests for the contact names
+ *	from the contact handles
+ *
+ * 	\param proxy unused 
+ * 	\param current_members array of handles of current contatcs
+ * 	\param local_pending_members unused 
+ * 	\param remote_pending_members array of handles of remote pending contatcs
+ * 	\param error error if any
+ * 	\param userdata unused 
+ */
+static void get_roster_local_member_cb( DBusGProxy *proxy,GArray* current_members, 
+			GArray* local_pending_members, GArray* remote_pending_members, 
+			GError *error, gpointer userdata );
+			
+/*!	\brief Requests the server to get contact names from the handles
+ *	The contact names are returned in inspect_handles_cb. From there
+ *	contacts are sent to client
+ *
+ * 	\param contact_mem : handles to contact members
+ * 	\param msg_type : type of the message, which wil be passed to cb
+ * 	\return  Errors if any, else 0
+ */
+			
+static gint fetch_contacts( GArray* contact_mem, gint* msg_type ) ;			
+
+/*!	\brief This function is a callback for request for the contacts 
+ *	in msg_type(subscribe or publish) contatct list from server. This is 
+ *	only called for subscribe channel members. fetch_contacts is called 
+ *	to get the contact names from the handles. If there are no conatcts in 
+ *	the list it calls send_fetch_contacts_error else requests for the contacts 
+ *	from the handles
+ *
+ * 	\param proxy unused 
+ * 	\param current_members array of handles of current contatcs
+ * 	\param local_pending_members unused 
+ * 	\param remote_pending_members array of handles of remote pending contatcs
+ * 	\param error error if any
+ * 	\param userdata unused 
+ */
+static void get_roster_member_cb( DBusGProxy *proxy,GArray* current_members,
+		 GArray* local_pending_members, GArray* remote_pending_members, 
+		 	GError *error, gpointer userdata ) ;
+		 	
+
+/*!	\brief this function requests for the contacts in its contatct list from server
+ *	
+ *	\param	type of the contacts channel( publish, subscribe )
+ */
+void request_roster( enum channel_type type );
+
+/*! \brief Sends contacts to the client. Contact names are sent to client in multiple 
+ * 	packets of size less than or equal to MAX_MSG_SIZE. Contact will be sent as a whole. 
+ * 	A single contact will not be sent in two consecutive packets
+ *
+ * 	\param members : Contacts to be sent to client
+ * 	\param mem_count : no. of contacts 
+ * 	\param contact_type : type of the contact
+ * 	\return error code..
+ */
+gint send_contacts_to_client( gchar** members, gint mem_count, gint contact_type ) ;
+
+
+/*! \brief Fetches the cached contacts stored in telepathy gabble
+ *   This is as good as fetching the contacts
+ */ 
+void fetch_cached_contacts();
+
+#endif //__IFETCHCONTACTLIST_H__
\ No newline at end of file