telepathygabble/src/libgabble_wsd.cpp
changeset 10 59927b2d3b75
parent 0 d0f3a028347a
equal deleted inserted replaced
0:d0f3a028347a 10:59927b2d3b75
     1 /*
       
     2  * libgabble_wsd.cpp part of telepathygabble
       
     3  * Copyright (C) 2006 Collabora Ltd.
       
     4  * 
       
     5  *   @author Ole Andre Vadla Ravnaas <ole.andre.ravnaas@collabora.co.uk>
       
     6  *   @author Robert McQueen <robert.mcqueen@collabora.co.uk>
       
     7  *
       
     8  * This library is free software; you can redistribute it and/or
       
     9  * modify it under the terms of the GNU Lesser General Public
       
    10  * License as published by the Free Software Foundation; either
       
    11  * version 2.1 of the License, or (at your option) any later version.
       
    12  *
       
    13  * This library is distributed in the hope that it will be useful,
       
    14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       
    16  * Lesser General Public License for more details.
       
    17  *
       
    18  * You should have received a copy of the GNU Lesser General Public
       
    19  * License along with this library; if not, write to the Free Software
       
    20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
       
    21  */
       
    22 
       
    23 #include <e32std.h> 
       
    24 #include "libgabble_wsd_solution.h"
       
    25 #include "gabble_enums.h"
       
    26 #include <string.h>
       
    27 #include "telepathy-interfaces.h"
       
    28 #include <pls.h> // For emulator WSD API 
       
    29 
       
    30 const TUid KLibGabbleUid3 = {0x2000F852};     // This is the UID of the library
       
    31 struct libgabble_global_struct *libgabble_ImpurePtr()
       
    32 {
       
    33 	#if defined(__WINSCW__) || defined(__WINS__)
       
    34 
       
    35 	// Access the PLS of this process
       
    36 	struct libgabble_global_struct *g = Pls<struct libgabble_global_struct>(KLibGabbleUid3, &libgabble_Init);	
       
    37     return g;
       
    38 
       
    39 	#else
       
    40 
       
    41 	return NULL;	
       
    42 
       
    43 	#endif
       
    44 }
       
    45 
       
    46 int libgabble_Init(libgabble_global_struct *g)
       
    47 {
       
    48 
       
    49 
       
    50 Handler handlers[10] = {
       
    51   {
       
    52     { "initiate", "session-initiate", NULL },
       
    53     JS_STATE_PENDING_CREATED,
       
    54     JS_STATE_PENDING_CREATED,
       
    55     { NULL },
       
    56     JS_STATE_PENDING_INITIATED
       
    57   },
       
    58   {
       
    59     { "accept", "session-accept", NULL },
       
    60     JS_STATE_PENDING_INITIATED,
       
    61     JS_STATE_PENDING_INITIATED,
       
    62     { NULL },
       
    63     JS_STATE_ACTIVE
       
    64   },
       
    65   {
       
    66     { "reject", NULL },
       
    67     JS_STATE_PENDING_INITIATE_SENT,
       
    68     JS_STATE_PENDING_INITIATED,
       
    69     { NULL },
       
    70     JS_STATE_INVALID
       
    71   },
       
    72   {
       
    73     { "terminate", "session-terminate", NULL },
       
    74     JS_STATE_PENDING_INITIATED,
       
    75     JS_STATE_ENDED,
       
    76     { NULL },
       
    77     JS_STATE_INVALID
       
    78   },
       
    79   {
       
    80     { "candidates", "transport-info", NULL },
       
    81     JS_STATE_PENDING_INITIATED,
       
    82     JS_STATE_ACTIVE,
       
    83     { NULL },
       
    84     JS_STATE_INVALID
       
    85   },
       
    86   {
       
    87     { "content-add", NULL },
       
    88     JS_STATE_ACTIVE,
       
    89     JS_STATE_ACTIVE,
       
    90     { NULL },
       
    91     JS_STATE_INVALID,
       
    92   },
       
    93   {
       
    94     { "content-modify", NULL },
       
    95     JS_STATE_PENDING_INITIATED,
       
    96     JS_STATE_ACTIVE,
       
    97     { NULL },
       
    98     JS_STATE_INVALID
       
    99   },
       
   100   {
       
   101     { "content-accept", NULL },
       
   102     JS_STATE_PENDING_INITIATED,
       
   103     JS_STATE_ACTIVE,
       
   104     { NULL },
       
   105     JS_STATE_INVALID
       
   106   },
       
   107   {
       
   108     { "content-remove", "content-decline", NULL },
       
   109     JS_STATE_PENDING_INITIATED,
       
   110     JS_STATE_ACTIVE,
       
   111     { NULL },
       
   112     JS_STATE_INVALID
       
   113   },
       
   114   {
       
   115     { NULL },
       
   116     JS_STATE_INVALID,
       
   117     JS_STATE_INVALID,
       
   118     { NULL },
       
   119     JS_STATE_INVALID
       
   120   }
       
   121 };
       
   122 
       
   123 GDebugKey keys[] = {
       
   124   { "presence",      GABBLE_DEBUG_PRESENCE },
       
   125   { "groups",        GABBLE_DEBUG_GROUPS },
       
   126   { "roster",        GABBLE_DEBUG_ROSTER },
       
   127   { "disco",         GABBLE_DEBUG_DISCO },
       
   128   { "properties",    GABBLE_DEBUG_PROPERTIES },
       
   129   { "roomlist",      GABBLE_DEBUG_ROOMLIST },
       
   130   { "media-channel", GABBLE_DEBUG_MEDIA },
       
   131   { "muc",           GABBLE_DEBUG_MUC },
       
   132   { "connection",    GABBLE_DEBUG_CONNECTION },
       
   133   { "persist",       GABBLE_DEBUG_PERSIST },
       
   134   { "vcard",         GABBLE_DEBUG_VCARD },
       
   135   { 0, },
       
   136 };
       
   137 
       
   138 gchar NO_ALIAS[10] = "none";
       
   139 
       
   140 gchar assumed_caps[3][150] =
       
   141 {
       
   142   TP_IFACE_CHANNEL_TYPE_TEXT,
       
   143   TP_IFACE_CHANNEL_INTERFACE_GROUP,
       
   144   NULL
       
   145 };
       
   146 
       
   147 	
       
   148 gchar muc_roles[4][20] =
       
   149 {
       
   150   "none",
       
   151   "visitor",
       
   152   "participant",
       
   153   "moderator",
       
   154 };
       
   155 
       
   156 gchar muc_affiliations[4][20] =
       
   157 {
       
   158   "none",
       
   159   "member",
       
   160   "admin",
       
   161   "owner",
       
   162 };
       
   163 
       
   164 gchar video_codec_params[6][20] = {
       
   165   "x", "y", "width", "height", "layer", "transparent",
       
   166 };
       
   167 
       
   168 
       
   169 char list_handle_strings[4][20] =
       
   170 {
       
   171     "publish",      /* GABBLE_LIST_HANDLE_PUBLISH */
       
   172     "subscribe",    /* GABBLE_LIST_HANDLE_SUBSCRIBE */
       
   173     "known",        /* GABBLE_LIST_HANDLE_KNOWN */
       
   174     "deny"          /* GABBLE_LIST_HANDLE_DENY */
       
   175 };
       
   176 
       
   177 	  if(g)
       
   178 	  {	
       
   179 	    
       
   180 	      
       
   181 		//g->GET_WSD_VAR_NAME(flags,gabble_debug,s) = flags;
       
   182 		g->GET_WSD_VAR_NAME(log_handler, gabble_debug, s)	= 0;
       
   183 		g->GET_WSD_VAR_NAME(etype,gabble_enum_types,s) = 0;
       
   184 		
       
   185 		g->GET_WSD_VAR_NAME(etype,gabble_media_session_enum_types,s) = 0;
       
   186 		g->GET_WSD_VAR_NAME(etype1,gabble_media_session_enum_types,s) = 0;
       
   187 		g->GET_WSD_VAR_NAME(etype2,gabble_media_session_enum_types,s) = 0;
       
   188 		
       
   189 		
       
   190 		
       
   191 		
       
   192 		g->GET_WSD_VAR_NAME(quark,gabble_disco,s) = 0; 
       
   193 		g->GET_WSD_VAR_NAME(quark,gabble_error,s) = 0;
       
   194 		
       
   195 		
       
   196 		g->GET_WSD_VAR_NAME(ssl,gabble_conmgr,s) = TRUE; 
       
   197 		g->GET_WSD_VAR_NAME(httpport,gabble_conmgr,s) = 8080;
       
   198 		g->GET_WSD_VAR_NAME(httpproxyport,gabble_conmgr,s) = 443;
       
   199 
       
   200 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_conmgr,s)),0,LAST_SIGNAL_CON_MGR*sizeof(guint));	  
       
   201 		
       
   202 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_con,s)),0,LAST_SIGNAL_CON*sizeof(guint));	  
       
   203 		g->GET_WSD_VAR_NAME(arguments,gabble_con, s) = NULL;
       
   204 		
       
   205 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_im,s)),0,LAST_SIGNAL_IM*sizeof(guint));	  
       
   206 		
       
   207 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_search,s)),0,LAST_SIGNAL_SEARCH*sizeof(guint));	   
       
   208 		
       
   209 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_muc,s)),0,LAST_SIGNAL_MUC*sizeof(guint));	  
       
   210 		
       
   211 		
       
   212 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_chnl,s)),0,LAST_SIGNAL_MED_CHANNEL*sizeof(guint));	  
       
   213 		
       
   214 		
       
   215 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_sess,s)),0,LAST_SIGNAL_MED_SESSION*sizeof(guint));	  
       
   216 		
       
   217 
       
   218 
       
   219 
       
   220 		g->GET_WSD_VAR_NAME(google_audio_caps,gabble_med_sess,s) = PRESENCE_CAP_GOOGLE_VOICE;
       
   221 		
       
   222 		int some = PRESENCE_CAP_JINGLE | PRESENCE_CAP_JINGLE_DESCRIPTION_AUDIO |
       
   223 		    PRESENCE_CAP_GOOGLE_TRANSPORT_P2P;
       
   224 		
       
   225 		g->GET_WSD_VAR_NAME(jingle_audio_caps,gabble_med_sess,s) = (GabblePresenceCapabilities)some;
       
   226 		
       
   227 		some = PRESENCE_CAP_JINGLE | PRESENCE_CAP_JINGLE_DESCRIPTION_VIDEO |
       
   228 		    PRESENCE_CAP_GOOGLE_TRANSPORT_P2P;
       
   229 		g->GET_WSD_VAR_NAME(jingle_video_caps,gabble_med_sess,s) = 
       
   230 		(GabblePresenceCapabilities) some;
       
   231 		
       
   232 		
       
   233 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_sess,s)),0,MAX_STREAM_NAME_LEN*sizeof(gchar));	  
       
   234 		
       
   235 		
       
   236 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_med_stream,s)),0,LAST_SIGNAL_MED_STREAM*sizeof(guint));	  
       
   237 		
       
   238 		
       
   239 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_pre_cache,s)),0,LAST_SIGNAL_PRE_CACHE*sizeof(guint));	  
       
   240 		
       
   241 		
       
   242 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_register,s)),0,LAST_SIGNAL_REGISTER*sizeof(guint));	  
       
   243 		
       
   244 		
       
   245 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_ros_chnl,s)),0,LAST_SIGNAL_ROS_CHNL*sizeof(guint));	  
       
   246 		
       
   247 		
       
   248 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_room_chnl,s)),0,LAST_SIGNAL_ROOM_CHNL*sizeof(guint));	  
       
   249 		
       
   250 		g->GET_WSD_VAR_NAME(offset_quark1,gabble_mixin,s) = 0;
       
   251 		g->GET_WSD_VAR_NAME(offset_quark,gabble_mixin,s) = 0;
       
   252 		
       
   253 		
       
   254 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_roster,s)),0,LAST_SIGNAL_ROSTER*sizeof(guint));	  
       
   255 
       
   256 		g->GET_WSD_VAR_NAME(quark,gabble_errors,s) = 0;
       
   257 		
       
   258 		g->GET_WSD_VAR_NAME(busCon,gabble_helpers,s) = NULL;
       
   259 		g->GET_WSD_VAR_NAME(bus_proxy,gabble_helpers,s) = NULL;
       
   260 
       
   261 		g->GET_WSD_VAR_NAME(offset_quark1,gabble_txt_mixin,s) = 0;
       
   262 		g->GET_WSD_VAR_NAME(offset_quark,gabble_txt_mixin,s) = 0;
       
   263 		
       
   264 		memset(&(g->GET_WSD_VAR_NAME(alloc1,gabble_txt_mixin,s)),0,sizeof(GabbleAllocator));	  	
       
   265 		
       
   266 		g->GET_WSD_VAR_NAME(type,gabble_chnl_iface,s) = 0;
       
   267 		g->GET_WSD_VAR_NAME(initialized,gabble_chnl_iface,s) = EFalse;    
       
   268 		
       
   269 		g->GET_WSD_VAR_NAME(type,gabble_fac_iface,s) = 0;
       
   270 		g->GET_WSD_VAR_NAME(initialized,gabble_fac_iface,s) = EFalse;	
       
   271 		
       
   272 		memset(&(g->GET_WSD_VAR_NAME(signals,gabble_vcard_mgr,s)),0,LAST_SIGNAL_VCARD_MGR*sizeof(guint));	  
       
   273 		
       
   274 		g->GET_WSD_VAR_NAME(quark1,gabble_vcard_mgr,s) = 0;
       
   275 		g->GET_WSD_VAR_NAME(quark2,gabble_vcard_mgr,s) = 0;
       
   276 		
       
   277 		g->GET_WSD_VAR_NAME(offset_quark1,gabble_grp_mixin,s) = 0;
       
   278 		g->GET_WSD_VAR_NAME(offset_quark,gabble_grp_mixin,s) = 0;	    
       
   279 		
       
   280 		g->GET_WSD_VAR_NAME(gabble_disco_parent_class,gabble_disco,s) = ((void *)0); 
       
   281 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_disco,s) = 0;
       
   282 		
       
   283 		g->GET_WSD_VAR_NAME(gabble_connection_manager_parent_class,gabble_conmgr,s) = ((void *)0); 
       
   284 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_conmgr,s) = 0;
       
   285 		
       
   286 		g->GET_WSD_VAR_NAME(gabble_connection_parent_class,gabble_con,s) = ((void *)0); 
       
   287 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_con,s) = 0;
       
   288 		
       
   289 		g->GET_WSD_VAR_NAME(gabble_im_channel_parent_class,gabble_im,s) = ((void *)0); 
       
   290 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_im,s) = 0;
       
   291 		
       
   292 		g->GET_WSD_VAR_NAME(gabble_search_channel_parent_class,gabble_search,s) = ((void *)0); 
       
   293 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_search,s) = 0;
       
   294 
       
   295 
       
   296        	g->GET_WSD_VAR_NAME(gabble_muc_channel_parent_class,gabble_muc,s) = ((void *)0); 
       
   297 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_muc,s) = 0;
       
   298 
       
   299         g->GET_WSD_VAR_NAME(gabble_media_channel_parent_class,gabble_med_chnl,s) = ((void *)0); 
       
   300 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_med_chnl,s) = 0;
       
   301 		
       
   302 	    g->GET_WSD_VAR_NAME(gabble_media_stream_parent_class,gabble_med_stream,s) = ((void *)0); 
       
   303 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_med_stream,s) = 0;
       
   304 
       
   305         g->GET_WSD_VAR_NAME(gabble_presence_parent_class,gabble_presence,s) = ((void *)0); 
       
   306 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_presence,s) = 0;
       
   307 
       
   308         g->GET_WSD_VAR_NAME(gabble_presence_cache_parent_class,gabble_pre_cache,s) = ((void *)0); 
       
   309 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_pre_cache,s) = 0;
       
   310 
       
   311         g->GET_WSD_VAR_NAME(gabble_register_parent_class,gabble_register,s) = ((void *)0); 
       
   312 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_register,s) = 0;
       
   313         
       
   314         g->GET_WSD_VAR_NAME(gabble_roster_channel_parent_class,gabble_ros_chnl,s) = ((void *)0); 
       
   315 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_ros_chnl,s) = 0;
       
   316         
       
   317         
       
   318         g->GET_WSD_VAR_NAME(gabble_roomlist_channel_parent_class,gabble_room_chnl,s) = ((void *)0); 
       
   319 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_room_chnl,s) = 0;
       
   320 
       
   321         g->GET_WSD_VAR_NAME(gabble_im_factory_parent_class ,im_factory,s) = ((void *)0); 
       
   322 		g->GET_WSD_VAR_NAME(g_define_type_id,im_factory,s) = 0;
       
   323         
       
   324         
       
   325         g->GET_WSD_VAR_NAME(gabble_media_factory_parent_class ,media_factory,s) = ((void *)0); 
       
   326 		g->GET_WSD_VAR_NAME(g_define_type_id,media_factory,s) = 0;
       
   327 
       
   328         g->GET_WSD_VAR_NAME(gabble_muc_factory_parent_class ,muc_factory,s) = ((void *)0); 
       
   329 		g->GET_WSD_VAR_NAME(g_define_type_id,muc_factory,s) = 0;
       
   330 
       
   331         g->GET_WSD_VAR_NAME(gabble_vcard_manager_parent_class ,gabble_vcard_mgr,s) = ((void *)0); 
       
   332 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_vcard_mgr,s) = 0;
       
   333 		
       
   334 		g->GET_WSD_VAR_NAME(gabble_media_session_parent_class ,gabble_med_sess,s) = ((void *)0); 
       
   335 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_med_sess,s) = 0;
       
   336 		
       
   337 		g->GET_WSD_VAR_NAME(gabble_roster_parent_class ,gabble_roster,s) = ((void *)0); 
       
   338 		g->GET_WSD_VAR_NAME(g_define_type_id,gabble_roster,s) = 0;
       
   339 		
       
   340 		
       
   341 	    memcpy (&(g->GET_WSD_VAR_NAME(keys,gabble_debug,s)), keys, 12*sizeof(GDebugKey));
       
   342 	  	strcpy((g->GET_WSD_VAR_NAME(NO_ALIAS,gabble_vcard_mgr,s)), NO_ALIAS);
       
   343 	  	
       
   344 	  	memset(&(g->GET_WSD_VAR_NAME(assumed_caps,gabble_con,s)),0,3*150*sizeof(gchar));
       
   345 	  	
       
   346 	  	strcpy((g->GET_WSD_VAR_NAME(assumed_caps,gabble_con,s))[0], assumed_caps[0]);
       
   347 	  	strcpy((g->GET_WSD_VAR_NAME(assumed_caps,gabble_con,s))[0], assumed_caps[1]);
       
   348 	 
       
   349 	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[0], muc_roles[0]);
       
   350 	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[1], muc_roles[1]);
       
   351 	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[2], muc_roles[2]);
       
   352 	  	strcpy((g->GET_WSD_VAR_NAME(muc_roles,gabble_muc,s))[3], muc_roles[3]);
       
   353 
       
   354 		
       
   355 		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[0], muc_affiliations[0]);
       
   356 		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[1], muc_affiliations[1]);
       
   357 		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[2], muc_affiliations[2]);
       
   358 		strcpy((g->GET_WSD_VAR_NAME(muc_affiliations,gabble_muc,s))[3], muc_affiliations[3]);
       
   359 		
       
   360 		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[0], video_codec_params[0]);
       
   361 		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[1], video_codec_params[1]);
       
   362 		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[2], video_codec_params[2]);
       
   363 		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[3], video_codec_params[3]);
       
   364 		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[4], video_codec_params[4]);
       
   365 		strcpy((g->GET_WSD_VAR_NAME(video_codec_params,gabble_med_stream,s))[5], video_codec_params[5]);
       
   366 		
       
   367 		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[0], list_handle_strings[0]);
       
   368 		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[1], list_handle_strings[1]);
       
   369 		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[2], list_handle_strings[2]);
       
   370 		strcpy((g->GET_WSD_VAR_NAME(list_handle_strings,handles,s))[3], list_handle_strings[3]);
       
   371 		
       
   372 		memcpy (&(g->GET_WSD_VAR_NAME(handlers,gabble_med_sess,s)), handlers, 10*sizeof(Handler));
       
   373   
       
   374 		return 0;
       
   375   }
       
   376   return 1;
       
   377 }
       
   378