diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-08-11 22:44:33 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-08-11 22:45:49 +0800 |
commit | dd4f24ee49d50145a30722010f6d849d36129c7c (patch) | |
tree | b769d1c9b39de5cba5a1c790c6d69ad253a5c337 | |
parent | 7ccdd1850f123f1e4a3bcc019ab422b1291c39e1 (diff) | |
download | gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.tar gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.tar.gz gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.tar.bz2 gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.tar.lz gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.tar.xz gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.tar.zst gsoc2013-empathy-dd4f24ee49d50145a30722010f6d849d36129c7c.zip |
bye bye empathy-handler
-rw-r--r-- | libempathy/Makefile.am | 2 | ||||
-rw-r--r-- | libempathy/empathy-handler.c | 416 | ||||
-rw-r--r-- | libempathy/empathy-handler.h | 91 |
3 files changed, 0 insertions, 509 deletions
diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am index ca0df9206..eb8a874c4 100644 --- a/libempathy/Makefile.am +++ b/libempathy/Makefile.am @@ -42,7 +42,6 @@ libempathy_headers = \ empathy-ft-factory.h \ empathy-ft-handler.h \ empathy-gsettings.h \ - empathy-handler.h \ empathy-idle.h \ empathy-individual-manager.h \ empathy-irc-network-manager.h \ @@ -79,7 +78,6 @@ libempathy_la_SOURCES = \ empathy-dispatcher.c \ empathy-ft-factory.c \ empathy-ft-handler.c \ - empathy-handler.c \ empathy-idle.c \ empathy-individual-manager.c \ empathy-irc-network-manager.c \ diff --git a/libempathy/empathy-handler.c b/libempathy/empathy-handler.c deleted file mode 100644 index 20850cd60..000000000 --- a/libempathy/empathy-handler.c +++ /dev/null @@ -1,416 +0,0 @@ -/* - * Copyright (C) 2007-2009 Collabora Ltd. - * - * 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 - * - * Authors: Xavier Claessens <xclaesse@gmail.com> - * Sjoerd Simons <sjoerd.simons@collabora.co.uk> - * Cosimo Cecchi <cosimo.cecchi@collabora.co.uk> - */ - -#include <config.h> - -#include <telepathy-glib/dbus.h> -#include <telepathy-glib/proxy-subclass.h> -#include <telepathy-glib/gtypes.h> -#include <telepathy-glib/defs.h> -#include <telepathy-glib/svc-client.h> -#include <telepathy-glib/svc-generic.h> -#include <telepathy-glib/interfaces.h> - -#include "empathy-handler.h" -#include "empathy-utils.h" - -#define DEBUG_FLAG EMPATHY_DEBUG_DISPATCHER -#include <libempathy/empathy-debug.h> - -#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyHandler) -typedef struct -{ - EmpathyHandlerHandleChannelsFunc *handle_channels; - gpointer handle_channels_user_data; - - EmpathyHandlerChannelsFunc *channels; - gpointer channels_user_data; - - gchar *name; - gchar *busname; - - GPtrArray *filters; - GStrv *capabilities; - - gboolean dispose_run; -} EmpathyHandlerPriv; - -static void empathy_handler_client_handler_iface_init (gpointer g_iface, - gpointer g_iface_data); - -G_DEFINE_TYPE_WITH_CODE (EmpathyHandler, - empathy_handler, - G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, - tp_dbus_properties_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CLIENT, NULL); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CLIENT_HANDLER, - empathy_handler_client_handler_iface_init); - ); - -static const gchar *empathy_handler_interfaces[] = { - TP_IFACE_CLIENT_HANDLER, - NULL -}; - -enum -{ - PROP_INTERFACES = 1, - PROP_CHANNEL_FILTER, - PROP_CHANNELS, - PROP_CAPABILITIES, - PROP_NAME, -}; - -static GObject * -handler_constructor (GType type, - guint n_construct_params, - GObjectConstructParam *construct_params) -{ - GObject *obj = - G_OBJECT_CLASS (empathy_handler_parent_class)->constructor - (type, n_construct_params, construct_params); - EmpathyHandler *handler = EMPATHY_HANDLER (obj); - EmpathyHandlerPriv *priv = GET_PRIV (handler); - TpDBusDaemon *dbus; - gchar *object_path; - - priv = GET_PRIV (handler); - - priv->busname = g_strdup_printf (TP_CLIENT_BUS_NAME_BASE"%s", priv->name); - object_path = g_strdup_printf (TP_CLIENT_OBJECT_PATH_BASE"%s", - priv->name); - - dbus = tp_dbus_daemon_dup (NULL); - - DEBUG ("Registering at %s, %s", priv->busname, object_path); - g_assert (tp_dbus_daemon_request_name (dbus, - priv->busname, TRUE, NULL)); - dbus_g_connection_register_g_object (tp_proxy_get_dbus_connection (dbus), - object_path, obj); - - - g_free (object_path); - g_object_unref (dbus); - - return G_OBJECT (handler); -} - -static void -handler_dispose (GObject *object) -{ - EmpathyHandlerPriv *priv = GET_PRIV (object); - TpDBusDaemon *dbus; - - if (priv->dispose_run) - return; - - priv->dispose_run = TRUE; - - dbus = tp_dbus_daemon_dup (NULL); - - tp_dbus_daemon_release_name (dbus, priv->busname, NULL); - - g_object_unref (dbus); - - if (G_OBJECT_CLASS (empathy_handler_parent_class)->dispose != NULL) - G_OBJECT_CLASS (empathy_handler_parent_class)->dispose (object); -} - -static void -handler_finalize (GObject *object) -{ - EmpathyHandlerPriv *priv = GET_PRIV (object); - - if (priv->filters != NULL) - g_boxed_free (TP_ARRAY_TYPE_CHANNEL_CLASS_LIST, priv->filters); - - if (priv->capabilities != NULL) - g_boxed_free (G_TYPE_STRV, priv->capabilities); - - g_free (priv->name); - g_free (priv->busname); - - if (G_OBJECT_CLASS (empathy_handler_parent_class)->finalize != NULL) - G_OBJECT_CLASS (empathy_handler_parent_class)->finalize (object); -} - -static void -handler_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - EmpathyHandler *handler = EMPATHY_HANDLER (object); - EmpathyHandlerPriv *priv = GET_PRIV (handler); - - switch (property_id) - { - case PROP_CHANNEL_FILTER: - priv->filters = g_value_dup_boxed (value); - if (priv->filters == NULL) - priv->filters = g_ptr_array_new (); - break; - case PROP_CAPABILITIES: - priv->capabilities = g_value_dup_boxed (value); - break; - case PROP_NAME: - priv->name = g_value_dup_string (value); - if (EMP_STR_EMPTY (priv->name)) - { - TpDBusDaemon *bus; - - bus = tp_dbus_daemon_dup (NULL); - priv->name = g_strdup_printf ("badger_%s_%p", - tp_dbus_daemon_get_unique_name (bus), object); - g_strdelimit (priv->name, ":.", '_'); - g_object_unref (bus); - } - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -handler_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - EmpathyHandler *self = EMPATHY_HANDLER (object); - EmpathyHandlerPriv *priv = GET_PRIV (self); - - switch (property_id) - { - case PROP_INTERFACES: - g_value_set_boxed (value, empathy_handler_interfaces); - break; - case PROP_CHANNEL_FILTER: - g_value_set_boxed (value, priv->filters); - break; - case PROP_CAPABILITIES: - g_value_set_boxed (value, priv->capabilities); - break; - case PROP_NAME: - g_value_set_string (value, priv->name); - break; - case PROP_CHANNELS: - { - GList *l, *channels = NULL; - GPtrArray *array = g_ptr_array_new (); - - if (priv->channels != NULL) - channels = priv->channels (self, priv->channels_user_data); - - for (l = channels ; l != NULL; l = g_list_next (l)) - { - TpProxy *channel = TP_PROXY (l->data); - g_ptr_array_add (array, - (gpointer) tp_proxy_get_object_path (channel)); - } - g_value_set_boxed (value, array); - g_ptr_array_free (array, TRUE); - break; - } - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -empathy_handler_class_init (EmpathyHandlerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GParamSpec *param_spec; - - static TpDBusPropertiesMixinPropImpl client_props[] = { - { "Interfaces", "interfaces", NULL }, - { NULL } - }; - static TpDBusPropertiesMixinPropImpl client_handler_props[] = { - { "HandlerChannelFilter", "channel-filter", NULL }, - { "HandledChannels", "channels", NULL }, - { "Capabilities", "capabilities", NULL }, - { NULL } - }; - static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { - { TP_IFACE_CLIENT, - tp_dbus_properties_mixin_getter_gobject_properties, - NULL, - client_props - }, - { TP_IFACE_CLIENT_HANDLER, - tp_dbus_properties_mixin_getter_gobject_properties, - NULL, - client_handler_props - }, - { NULL } - }; - - object_class->finalize = handler_finalize; - object_class->dispose = handler_dispose; - object_class->constructor = handler_constructor; - - object_class->get_property = handler_get_property; - object_class->set_property = handler_set_property; - - param_spec = g_param_spec_boxed ("interfaces", "interfaces", - "Available D-Bus interfaces", - G_TYPE_STRV, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); - - param_spec = g_param_spec_boxed ("channel-filter", "channel-filter", - "Filter for channels this handles", - TP_ARRAY_TYPE_CHANNEL_CLASS_LIST, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY); - g_object_class_install_property (object_class, - PROP_CHANNEL_FILTER, param_spec); - - param_spec = g_param_spec_boxed ("capabilities", "capabilities", - "Filter for channels this handles", - G_TYPE_STRV, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY); - g_object_class_install_property (object_class, - PROP_CAPABILITIES, param_spec); - - param_spec = g_param_spec_boxed ("channels", "channels", - "List of channels we're handling", - EMPATHY_ARRAY_TYPE_OBJECT, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, - PROP_CHANNELS, param_spec); - - param_spec = g_param_spec_string ("name", "name", - "The local name of the handler", - NULL, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY); - g_object_class_install_property (object_class, - PROP_NAME, param_spec); - - g_type_class_add_private (object_class, sizeof (EmpathyHandlerPriv)); - - klass->dbus_props_class.interfaces = prop_interfaces; - tp_dbus_properties_mixin_class_init (object_class, - G_STRUCT_OFFSET (EmpathyHandlerClass, dbus_props_class)); -} - -static void -empathy_handler_init (EmpathyHandler *handler) -{ - EmpathyHandlerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (handler, - EMPATHY_TYPE_HANDLER, EmpathyHandlerPriv); - - handler->priv = priv; -} - -EmpathyHandler * -empathy_handler_new (const gchar *name, - GPtrArray *filters, - GStrv capabilities) -{ - return EMPATHY_HANDLER ( - g_object_new (EMPATHY_TYPE_HANDLER, - "name", name, - "channel-filter", filters, - "capabilities", capabilities, - NULL)); -} - -static void -empathy_handler_handle_channels (TpSvcClientHandler *self, - const gchar *account_path, - const gchar *connection_path, - const GPtrArray *channels, - const GPtrArray *requests_satisfied, - guint64 timestamp, - GHashTable *handler_info, - DBusGMethodInvocation *context) -{ - EmpathyHandler *handler = EMPATHY_HANDLER (self); - EmpathyHandlerPriv *priv = GET_PRIV (handler); - GError *error = NULL; - - if (!priv->handle_channels) - { - error = g_error_new_literal (TP_ERRORS, - TP_ERROR_NOT_AVAILABLE, - "No handler function setup"); - goto error; - } - - if (!priv->handle_channels (handler, account_path, connection_path, - channels, requests_satisfied, timestamp, handler_info, - priv->handle_channels_user_data, &error)) - goto error; - - tp_svc_client_handler_return_from_handle_channels (context); - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - -const gchar * -empathy_handler_get_busname (EmpathyHandler *handler) -{ - EmpathyHandlerPriv *priv = GET_PRIV (handler); - - return priv->busname; -} - -static void -empathy_handler_client_handler_iface_init (gpointer g_iface, - gpointer g_iface_data) -{ - TpSvcClientHandlerClass *klass = (TpSvcClientHandlerClass *) g_iface; - - tp_svc_client_handler_implement_handle_channels (klass, - empathy_handler_handle_channels); -} - -void -empathy_handler_set_handle_channels_func (EmpathyHandler *handler, - EmpathyHandlerHandleChannelsFunc *func, - gpointer user_data) -{ - EmpathyHandlerPriv *priv = GET_PRIV (handler); - - priv->handle_channels = func; - priv->handle_channels_user_data = user_data; -} - -void -empathy_handler_set_channels_func (EmpathyHandler *handler, - EmpathyHandlerChannelsFunc *func, - gpointer user_data) -{ - EmpathyHandlerPriv *priv = GET_PRIV (handler); - - priv->channels = func; - priv->channels_user_data = user_data; -} - diff --git a/libempathy/empathy-handler.h b/libempathy/empathy-handler.h deleted file mode 100644 index f6b894ba0..000000000 --- a/libempathy/empathy-handler.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2007-2009 Collabora Ltd. - * - * 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 - * - * Authors: Sjoerd Simons <sjoerd.simons@collabora.co.uk> - */ - -#ifndef __EMPATHY_HANDLER_H__ -#define __EMPATHY_HANDLER_H__ - -#include <glib.h> - -#include <telepathy-glib/channel.h> -#include <telepathy-glib/dbus-properties-mixin.h> - -G_BEGIN_DECLS - -#define EMPATHY_TYPE_HANDLER (empathy_handler_get_type ()) -#define EMPATHY_HANDLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \ - EMPATHY_TYPE_HANDLER, EmpathyHandler)) -#define EMPATHY_HANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), \ - EMPATHY_TYPE_HANDLER, EmpathyHandlerClass)) -#define EMPATHY_IS_HANDLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \ - EMPATHY_TYPE_HANDLER)) -#define EMPATHY_IS_HANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \ - EMPATHY_TYPE_HANDLER)) -#define EMPATHY_HANDLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \ - EMPATHY_TYPE_HANDLER, EmpathyHandlerClass)) - -GType empathy_handler_get_type (void) G_GNUC_CONST; - -typedef struct _EmpathyHandler EmpathyHandler; -typedef struct _EmpathyHandlerClass EmpathyHandlerClass; - -struct _EmpathyHandler -{ - GObject parent; - gpointer priv; -}; - -struct _EmpathyHandlerClass -{ - GObjectClass parent_class; - TpDBusPropertiesMixinClass dbus_props_class; -}; - - -EmpathyHandler * empathy_handler_new (const gchar *name, - GPtrArray *filters, - GStrv capabilities); - -const gchar *empathy_handler_get_busname (EmpathyHandler *handler); - -typedef gboolean (EmpathyHandlerHandleChannelsFunc) (EmpathyHandler *handler, - const gchar *account_path, - const gchar *connection_path, - const GPtrArray *channels, - const GPtrArray *requests_satisfied, - guint64 timestamp, - GHashTable *handler_info, - gpointer user_data, - GError **error); - -void empathy_handler_set_handle_channels_func (EmpathyHandler *handler, - EmpathyHandlerHandleChannelsFunc *func, - gpointer user_data); - -typedef GList * (EmpathyHandlerChannelsFunc) ( - EmpathyHandler *handler, - gpointer user_data); - -void empathy_handler_set_channels_func (EmpathyHandler *handler, - EmpathyHandlerChannelsFunc func, - gpointer user_data); - -G_END_DECLS - -#endif /* __EMPATHY_HANDLER_H__ */ |