telepathygabble/inc/libgabble_wsd_solution.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:10:06 +0200
changeset 0 d0f3a028347a
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
 * libgabble_wsd_solution.h - Header 
 * Copyright (C) 2006 Collabora Ltd.
 *   @author Ole Andre Vadla Ravnaas <ole.andre.ravnaas@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
 */

#ifndef _LIBGABBLE_WSD_H
#define _LIBGABBLE_WSD_H
#include "libgabble_wsd_macros.h"
//#include "debug.h"
#include "telepathy-errors.h"
#include "disco.h"
#include "gabble_enums.h"
#include "ghash.h"
#include "gabble-presence.h"
#include "gabble-media-session.h"

#define MAX_GABBLE_UTILS_GCHAR_ARRAY_LEN 5


#if EMULATOR
#ifdef __cplusplus
extern "C" 
{
#endif

typedef gboolean (*StreamHandlerFunc)(GabbleMediaSession *session,
                                      LmMessage *message,
                                      LmMessageNode *content_node,
                                      const gchar *stream_name,
                                      GabbleMediaStream *stream,
                                      LmMessageNode *desc_node,
                                      LmMessageNode *trans_node,
                                      GError **error);
                                      


                                   
typedef struct _Handler Handler;

struct _Handler {
  gchar actions[3][50];
  JingleSessionState min_allowed_state;
  JingleSessionState max_allowed_state;
  StreamHandlerFunc stream_handlers[4];
  JingleSessionState new_state;
};

struct libgabble_global_struct
{
	
	VARIABLE_DECL(flags,s,gabble_debug,GabbleDebugFlags)	
	VARIABLE_DECL(log_handler,s,gabble_debug,guint)	
	VARIABLE_DECL(etype,s,gabble_enum_types,GType)
	
	VARIABLE_DECL(etype,s,gabble_media_session_enum_types,GType)
	VARIABLE_DECL(etype1,s,gabble_media_session_enum_types,GType)
	VARIABLE_DECL(etype2,s,gabble_media_session_enum_types,GType)
	
	VARIABLE_DECL(quark,s,gabble_disco,GQuark)
	VARIABLE_DECL(quark,s,gabble_error,GQuark)
	
	
	VARIABLE_DECL(ssl,s,gabble_conmgr,gboolean)
	VARIABLE_DECL(httpport,s,gabble_conmgr,guint)
	VARIABLE_DECL(httpproxyport,s,gabble_conmgr,guint)
	VARIABLE_DECL_ARRAY(signals,s,gabble_conmgr,guint,LAST_SIGNAL_CON_MGR)
	VARIABLE_DECL_ARRAY(signals,s,gabble_con,guint,LAST_SIGNAL_CON)
	VARIABLE_DECL(arguments,s,gabble_con,GHashTable*)
	VARIABLE_DECL_ARRAY(signals,s,gabble_im,guint,LAST_SIGNAL_IM)
	
	//todo: later ..see what it should be in search
	VARIABLE_DECL_ARRAY(signals,s,gabble_search,guint,LAST_SIGNAL_SEARCH)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_muc,guint,LAST_SIGNAL_MUC)
	VARIABLE_DECL_ARRAY(signals,s,gabble_med_chnl,guint,LAST_SIGNAL_MED_CHANNEL)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_med_sess,guint,LAST_SIGNAL_MED_SESSION)
	



	VARIABLE_DECL(google_audio_caps,s,gabble_med_sess,GabblePresenceCapabilities)
	VARIABLE_DECL(jingle_audio_caps,s,gabble_med_sess,GabblePresenceCapabilities)
	VARIABLE_DECL(jingle_video_caps,s,gabble_med_sess,GabblePresenceCapabilities)
	
	VARIABLE_DECL_ARRAY(ret_sess,s,gabble_med_sess,gchar,MAX_STREAM_NAME_LEN)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_med_stream,guint,LAST_SIGNAL_MED_STREAM)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_pre_cache,guint,LAST_SIGNAL_PRE_CACHE)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_register,guint,LAST_SIGNAL_REGISTER)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_ros_chnl,guint,LAST_SIGNAL_ROS_CHNL)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_room_chnl,guint,LAST_SIGNAL_ROOM_CHNL)
	
	VARIABLE_DECL(offset_quark1,s,gabble_mixin,GQuark)
	VARIABLE_DECL(offset_quark,s,gabble_mixin,GQuark)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_roster,guint,LAST_SIGNAL_ROSTER)

	VARIABLE_DECL(quark,s,gabble_errors,GQuark)
	
	VARIABLE_DECL(busCon,s,gabble_helpers,DBusGConnection*)
	VARIABLE_DECL(bus_proxy,s,gabble_helpers,DBusGProxy*)

	VARIABLE_DECL(offset_quark1,s,gabble_txt_mixin,GQuark)
	VARIABLE_DECL(offset_quark,s,gabble_txt_mixin,GQuark)
	VARIABLE_DECL(alloc1,s,gabble_txt_mixin,GabbleAllocator)
	
	VARIABLE_DECL(offset_quark1,s,gabble_search_mixin,GQuark)
	VARIABLE_DECL(offset_quark,s,gabble_search_mixin,GQuark)
	//todo: check if this required for search
	VARIABLE_DECL(alloc1,s,gabble_search_mixin,GabbleAllocator)
	
	VARIABLE_DECL(type,s,gabble_chnl_iface,GType)
	VARIABLE_DECL(initialized,s,gabble_chnl_iface,gboolean)
	
	VARIABLE_DECL(type,s,gabble_fac_iface,GType)
	VARIABLE_DECL(initialized,s,gabble_fac_iface,gboolean)
	
	VARIABLE_DECL_ARRAY(signals,s,gabble_vcard_mgr,guint,LAST_SIGNAL_VCARD_MGR)
	VARIABLE_DECL(quark1,s,gabble_vcard_mgr,GQuark)
	VARIABLE_DECL(quark2,s,gabble_vcard_mgr,GQuark)
	
	
	VARIABLE_DECL(offset_quark1,s,gabble_grp_mixin,GQuark)
	VARIABLE_DECL(offset_quark,s,gabble_grp_mixin,GQuark)
	
	
	VARIABLE_DECL(gabble_disco_parent_class,s,gabble_disco,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_disco,GType)
	
	VARIABLE_DECL(gabble_connection_manager_parent_class,s,gabble_conmgr,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_conmgr,GType)

    VARIABLE_DECL(gabble_connection_parent_class,s,gabble_con,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_con,GType)
	
	VARIABLE_DECL(gabble_im_channel_parent_class,s,gabble_im,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_im,GType)
	
	VARIABLE_DECL(gabble_search_channel_parent_class,s,gabble_search,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_search,GType)

	VARIABLE_DECL(gabble_muc_channel_parent_class,s,gabble_muc,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_muc,GType)

    VARIABLE_DECL(gabble_media_channel_parent_class,s,gabble_med_chnl,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_med_chnl,GType)

    VARIABLE_DECL(gabble_media_stream_parent_class,s,gabble_med_stream,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_med_stream,GType)
    
    VARIABLE_DECL(gabble_presence_parent_class,s,gabble_presence,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_presence,GType)
    
    VARIABLE_DECL(gabble_presence_cache_parent_class,s,gabble_pre_cache,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_pre_cache,GType)

    VARIABLE_DECL(gabble_register_parent_class,s,gabble_register,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_register,GType)

    VARIABLE_DECL(gabble_roster_channel_parent_class,s,gabble_ros_chnl,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_ros_chnl,GType)
    
    VARIABLE_DECL(gabble_roomlist_channel_parent_class,s,gabble_room_chnl,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_room_chnl,GType)

    VARIABLE_DECL(gabble_im_factory_parent_class ,s,im_factory,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,im_factory,GType)
	
	VARIABLE_DECL(gabble_search_factory_parent_class ,s,search_factory,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,search_factory,GType)

    VARIABLE_DECL(gabble_media_factory_parent_class ,s,media_factory,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,media_factory,GType)

	VARIABLE_DECL(gabble_muc_factory_parent_class ,s,muc_factory,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,muc_factory,GType)

	VARIABLE_DECL(gabble_vcard_manager_parent_class ,s,gabble_vcard_mgr,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_vcard_mgr,GType)
	
	VARIABLE_DECL_ARRAY(keys,s,gabble_debug,GDebugKey,12)
	
	VARIABLE_DECL_ARRAY(NO_ALIAS,s,gabble_vcard_mgr,gchar,MAX_GABBLE_UTILS_GCHAR_ARRAY_LEN)


	VARIABLE_DECL_2DARRAY(assumed_caps,s,gabble_con,gchar,3,150)
	
	VARIABLE_DECL_2DARRAY(muc_roles,s,gabble_muc,gchar,4,20)
	VARIABLE_DECL_2DARRAY(muc_affiliations,s,gabble_muc,gchar,4,20)
	
	VARIABLE_DECL_2DARRAY(video_codec_params,s,gabble_med_stream,gchar,6,20)
	
	VARIABLE_DECL_2DARRAY(list_handle_strings,s,handles,char,4,20)
	
	VARIABLE_DECL_ARRAY(handlers,s,gabble_med_sess,Handler,10)
	
	VARIABLE_DECL(gabble_media_session_parent_class ,s,gabble_med_sess,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_med_sess,GType)
	
	VARIABLE_DECL(gabble_roster_parent_class ,s,gabble_roster,gpointer)	
	VARIABLE_DECL(g_define_type_id,s,gabble_roster,GType)
	
	
      /*END-global vars*/
 
    };

struct libgabble_global_struct * libgabble_ImpurePtr();
int libgabble_Init(struct libgabble_global_struct *);
#ifdef __cplusplus
}
#endif
#endif //EMULATOR
#endif //header guard ifdef _LIBGABBLE_WSD_H