diff -r 000000000000 -r d0f3a028347a telepathygabble/src/libgabble_wsd.cpp --- /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 + * @author Robert McQueen + * + * 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 +#include "libgabble_wsd_solution.h" +#include "gabble_enums.h" +#include +#include "telepathy-interfaces.h" +#include // 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(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; +} +