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 |
|