telepathygabble/src/libgabble_wsd.cpp
changeset 0 d0f3a028347a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telepathygabble/src/libgabble_wsd.cpp	Tue Feb 02 01:10:06 2010 +0200
@@ -0,0 +1,378 @@
+/*
+ * libgabble_wsd.cpp part of telepathygabble
+ * Copyright (C) 2006 Collabora Ltd.
+ * 
+ *   @author Ole Andre Vadla Ravnaas <ole.andre.ravnaas@collabora.co.uk>
+ *   @author Robert McQueen <robert.mcqueen@collabora.co.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <e32std.h> 
+#include "libgabble_wsd_solution.h"
+#include "gabble_enums.h"
+#include <string.h>
+#include "telepathy-interfaces.h"
+#include <pls.h> // For emulator WSD API 
+
+const TUid KLibGabbleUid3 = {0x2000F852};     // This is the UID of the library
+struct libgabble_global_struct *libgabble_ImpurePtr()
+{
+	#if defined(__WINSCW__) || defined(__WINS__)
+
+	// Access the PLS of this process
+	struct libgabble_global_struct *g = Pls<struct libgabble_global_struct>(KLibGabbleUid3, &libgabble_Init);	
+    return g;
+
+	#else
+
+	return NULL;	
+
+	#endif
+}
+
+int libgabble_Init(libgabble_global_struct *g)
+{
+
+
+Handler handlers[10] = {
+  {
+    { "initiate", "session-initiate", NULL },
+    JS_STATE_PENDING_CREATED,
+    JS_STATE_PENDING_CREATED,
+    { NULL },
+    JS_STATE_PENDING_INITIATED
+  },
+  {
+    { "accept", "session-accept", NULL },
+    JS_STATE_PENDING_INITIATED,
+    JS_STATE_PENDING_INITIATED,
+    { NULL },
+    JS_STATE_ACTIVE
+  },
+  {
+    { "reject", NULL },
+    JS_STATE_PENDING_INITIATE_SENT,
+    JS_STATE_PENDING_INITIATED,
+    { NULL },
+    JS_STATE_INVALID
+  },
+  {
+    { "terminate", "session-terminate", NULL },
+    JS_STATE_PENDING_INITIATED,
+    JS_STATE_ENDED,
+    { NULL },
+    JS_STATE_INVALID
+  },
+  {
+    { "candidates", "transport-info", NULL },
+    JS_STATE_PENDING_INITIATED,
+    JS_STATE_ACTIVE,
+    { NULL },
+    JS_STATE_INVALID
+  },
+  {
+    { "content-add", NULL },
+    JS_STATE_ACTIVE,
+    JS_STATE_ACTIVE,
+    { NULL },
+    JS_STATE_INVALID,
+  },
+  {
+    { "content-modify", NULL },
+    JS_STATE_PENDING_INITIATED,
+    JS_STATE_ACTIVE,
+    { NULL },
+    JS_STATE_INVALID
+  },
+  {
+    { "content-accept", NULL },
+    JS_STATE_PENDING_INITIATED,
+    JS_STATE_ACTIVE,
+    { NULL },
+    JS_STATE_INVALID
+  },
+  {
+    { "content-remove", "content-decline", NULL },
+    JS_STATE_PENDING_INITIATED,
+    JS_STATE_ACTIVE,
+    { NULL },
+    JS_STATE_INVALID
+  },
+  {
+    { NULL },
+    JS_STATE_INVALID,
+    JS_STATE_INVALID,
+    { NULL },
+    JS_STATE_INVALID
+  }
+};
+
+GDebugKey keys[] = {
+  { "presence",      GABBLE_DEBUG_PRESENCE },
+  { "groups",        GABBLE_DEBUG_GROUPS },
+  { "roster",        GABBLE_DEBUG_ROSTER },
+  { "disco",         GABBLE_DEBUG_DISCO },
+  { "properties",    GABBLE_DEBUG_PROPERTIES },
+  { "roomlist",      GABBLE_DEBUG_ROOMLIST },
+  { "media-channel", GABBLE_DEBUG_MEDIA },
+  { "muc",           GABBLE_DEBUG_MUC },
+  { "connection",    GABBLE_DEBUG_CONNECTION },
+  { "persist",       GABBLE_DEBUG_PERSIST },
+  { "vcard",         GABBLE_DEBUG_VCARD },
+  { 0, },
+};
+
+gchar NO_ALIAS[10] = "none";
+
+gchar assumed_caps[3][150] =
+{
+  TP_IFACE_CHANNEL_TYPE_TEXT,
+  TP_IFACE_CHANNEL_INTERFACE_GROUP,
+  NULL
+};
+
+	
+gchar muc_roles[4][20] =
+{
+  "none",
+  "visitor",
+  "participant",
+  "moderator",
+};
+
+gchar muc_affiliations[4][20] =
+{
+  "none",
+  "member",
+  "admin",
+  "owner",
+};
+
+gchar video_codec_params[6][20] = {
+  "x", "y", "width", "height", "layer", "transparent",
+};
+
+
+char list_handle_strings[4][20] =
+{
+    "publish",      /* GABBLE_LIST_HANDLE_PUBLISH */
+    "subscribe",    /* GABBLE_LIST_HANDLE_SUBSCRIBE */
+    "known",        /* GABBLE_LIST_HANDLE_KNOWN */
+    "deny"          /* GABBLE_LIST_HANDLE_DENY */
+};
+
+	  if(g)
+	  {	
+	    
+	      
+		//g->GET_WSD_VAR_NAME(flags,gabble_debug,s) = flags;
+		g->GET_WSD_VAR_NAME(log_handler, gabble_debug, s)	= 0;
+		g->GET_WSD_VAR_NAME(etype,gabble_enum_types,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(etype,gabble_media_session_enum_types,s) = 0;
+		g->GET_WSD_VAR_NAME(etype1,gabble_media_session_enum_types,s) = 0;
+		g->GET_WSD_VAR_NAME(etype2,gabble_media_session_enum_types,s) = 0;
+		
+		
+		
+		
+		g->GET_WSD_VAR_NAME(quark,gabble_disco,s) = 0; 
+		g->GET_WSD_VAR_NAME(quark,gabble_error,s) = 0;
+		
+		
+		g->GET_WSD_VAR_NAME(ssl,gabble_conmgr,s) = TRUE; 
+		g->GET_WSD_VAR_NAME(httpport,gabble_conmgr,s) = 8080;
+		g->GET_WSD_VAR_NAME(httpproxyport,gabble_conmgr,s) = 443;
+
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_conmgr,s)),0,LAST_SIGNAL_CON_MGR*sizeof(guint));	  
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_con,s)),0,LAST_SIGNAL_CON*sizeof(guint));	  
+		g->GET_WSD_VAR_NAME(arguments,gabble_con, s) = NULL;
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_im,s)),0,LAST_SIGNAL_IM*sizeof(guint));	  
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_search,s)),0,LAST_SIGNAL_SEARCH*sizeof(guint));	   
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_muc,s)),0,LAST_SIGNAL_MUC*sizeof(guint));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_chnl,s)),0,LAST_SIGNAL_MED_CHANNEL*sizeof(guint));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_sess,s)),0,LAST_SIGNAL_MED_SESSION*sizeof(guint));	  
+		
+
+
+
+		g->GET_WSD_VAR_NAME(google_audio_caps,gabble_med_sess,s) = PRESENCE_CAP_GOOGLE_VOICE;
+		
+		int some = PRESENCE_CAP_JINGLE | PRESENCE_CAP_JINGLE_DESCRIPTION_AUDIO |
+		    PRESENCE_CAP_GOOGLE_TRANSPORT_P2P;
+		
+		g->GET_WSD_VAR_NAME(jingle_audio_caps,gabble_med_sess,s) = (GabblePresenceCapabilities)some;
+		
+		some = PRESENCE_CAP_JINGLE | PRESENCE_CAP_JINGLE_DESCRIPTION_VIDEO |
+		    PRESENCE_CAP_GOOGLE_TRANSPORT_P2P;
+		g->GET_WSD_VAR_NAME(jingle_video_caps,gabble_med_sess,s) = 
+		(GabblePresenceCapabilities) some;
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_sess,s)),0,MAX_STREAM_NAME_LEN*sizeof(gchar));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_stream,s)),0,LAST_SIGNAL_MED_STREAM*sizeof(guint));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_pre_cache,s)),0,LAST_SIGNAL_PRE_CACHE*sizeof(guint));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_register,s)),0,LAST_SIGNAL_REGISTER*sizeof(guint));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_ros_chnl,s)),0,LAST_SIGNAL_ROS_CHNL*sizeof(guint));	  
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_room_chnl,s)),0,LAST_SIGNAL_ROOM_CHNL*sizeof(guint));	  
+		
+		g->GET_WSD_VAR_NAME(offset_quark1,gabble_mixin,s) = 0;
+		g->GET_WSD_VAR_NAME(offset_quark,gabble_mixin,s) = 0;
+		
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_roster,s)),0,LAST_SIGNAL_ROSTER*sizeof(guint));	  
+
+		g->GET_WSD_VAR_NAME(quark,gabble_errors,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(busCon,gabble_helpers,s) = NULL;
+		g->GET_WSD_VAR_NAME(bus_proxy,gabble_helpers,s) = NULL;
+
+		g->GET_WSD_VAR_NAME(offset_quark1,gabble_txt_mixin,s) = 0;
+		g->GET_WSD_VAR_NAME(offset_quark,gabble_txt_mixin,s) = 0;
+		
+		memset(&(g->GET_WSD_VAR_NAME(alloc1,gabble_txt_mixin,s)),0,sizeof(GabbleAllocator));	  	
+		
+		g->GET_WSD_VAR_NAME(type,gabble_chnl_iface,s) = 0;
+		g->GET_WSD_VAR_NAME(initialized,gabble_chnl_iface,s) = EFalse;    
+		
+		g->GET_WSD_VAR_NAME(type,gabble_fac_iface,s) = 0;
+		g->GET_WSD_VAR_NAME(initialized,gabble_fac_iface,s) = EFalse;	
+		
+		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_vcard_mgr,s)),0,LAST_SIGNAL_VCARD_MGR*sizeof(guint));	  
+		
+		g->GET_WSD_VAR_NAME(quark1,gabble_vcard_mgr,s) = 0;
+		g->GET_WSD_VAR_NAME(quark2,gabble_vcard_mgr,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(offset_quark1,gabble_grp_mixin,s) = 0;
+		g->GET_WSD_VAR_NAME(offset_quark,gabble_grp_mixin,s) = 0;	    
+		
+		g->GET_WSD_VAR_NAME(gabble_disco_parent_class,gabble_disco,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_disco,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(gabble_connection_manager_parent_class,gabble_conmgr,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_conmgr,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(gabble_connection_parent_class,gabble_con,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_con,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(gabble_im_channel_parent_class,gabble_im,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_im,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(gabble_search_channel_parent_class,gabble_search,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_search,s) = 0;
+
+
+       	g->GET_WSD_VAR_NAME(gabble_muc_channel_parent_class,gabble_muc,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_muc,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_media_channel_parent_class,gabble_med_chnl,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_med_chnl,s) = 0;
+		
+	    g->GET_WSD_VAR_NAME(gabble_media_stream_parent_class,gabble_med_stream,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_med_stream,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_presence_parent_class,gabble_presence,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_presence,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_presence_cache_parent_class,gabble_pre_cache,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_pre_cache,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_register_parent_class,gabble_register,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_register,s) = 0;
+        
+        g->GET_WSD_VAR_NAME(gabble_roster_channel_parent_class,gabble_ros_chnl,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_ros_chnl,s) = 0;
+        
+        
+        g->GET_WSD_VAR_NAME(gabble_roomlist_channel_parent_class,gabble_room_chnl,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_room_chnl,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_im_factory_parent_class ,im_factory,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,im_factory,s) = 0;
+        
+        
+        g->GET_WSD_VAR_NAME(gabble_media_factory_parent_class ,media_factory,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,media_factory,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_muc_factory_parent_class ,muc_factory,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,muc_factory,s) = 0;
+
+        g->GET_WSD_VAR_NAME(gabble_vcard_manager_parent_class ,gabble_vcard_mgr,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_vcard_mgr,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(gabble_media_session_parent_class ,gabble_med_sess,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_med_sess,s) = 0;
+		
+		g->GET_WSD_VAR_NAME(gabble_roster_parent_class ,gabble_roster,s) = ((void *)0); 
+		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_roster,s) = 0;
+		
+		
+	    memcpy (&(g->GET_WSD_VAR_NAME(keys,gabble_debug,s)), keys, 12*sizeof(GDebugKey));
+	  	strcpy((g->GET_WSD_VAR_NAME(NO_ALIAS,gabble_vcard_mgr,s)), NO_ALIAS);
+	  	
+	  	memset(&(g->GET_WSD_VAR_NAME(assumed_caps,gabble_con,s)),0,3*150*sizeof(gchar));
+	  	
+	  	strcpy((g->GET_WSD_VAR_NAME(assumed_caps,gabble_con,s))[0], assumed_caps[0]);
+	  	strcpy((g->GET_WSD_VAR_NAME(assumed_caps,gabble_con,s))[0], assumed_caps[1]);
+	 
+	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[0], muc_roles[0]);
+	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[1], muc_roles[1]);
+	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[2], muc_roles[2]);
+	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[3], muc_roles[3]);
+
+		
+		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[0], muc_affiliations[0]);
+		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[1], muc_affiliations[1]);
+		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[2], muc_affiliations[2]);
+		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[3], muc_affiliations[3]);
+		
+		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[0], video_codec_params[0]);
+		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[1], video_codec_params[1]);
+		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[2], video_codec_params[2]);
+		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[3], video_codec_params[3]);
+		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[4], video_codec_params[4]);
+		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[5], video_codec_params[5]);
+		
+		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[0], list_handle_strings[0]);
+		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[1], list_handle_strings[1]);
+		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[2], list_handle_strings[2]);
+		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[3], list_handle_strings[3]);
+		
+		memcpy (&(g->GET_WSD_VAR_NAME(handlers,gabble_med_sess,s)), handlers, 10*sizeof(Handler));
+  
+		return 0;
+  }
+  return 1;
+}
+