]> git.0d.be Git - empathy.git/commitdiff
Make use of generated API for EmpathyFilter
authorXavier Claessens <xclaesse@src.gnome.org>
Fri, 11 Apr 2008 13:11:31 +0000 (13:11 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Fri, 11 Apr 2008 13:11:31 +0000 (13:11 +0000)
svn path=/trunk/; revision=919

libempathy/Makefile.am
libempathy/empathy-filter.c

index fc5b326a1dc490e2993f66016fd9c8a24b2737a4..1f79378d2b2a7f56817e1127dbddfcffa0012b00 100644 (file)
@@ -108,12 +108,6 @@ empathy-marshal.list: $(libempathy_la_SOURCES) Makefile.am
        echo "#include \"empathy-marshal.h\"" > $@ && \
        $(GLIB_GENMARSHAL) --body --prefix=_$(subst -,_,$*)_marshal $< >> $*-marshal.c
 
-empathy-chandler-glue.h: empathy-chandler.xml Makefile
-       $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=empathy_chandler --mode=glib-server --output=$@ $<
-empathy-filter-glue.h: empathy-filter.xml Makefile
-       $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=empathy_filter --mode=glib-server --output=$@ $<
-
-
 empathy-enum-types.h: stamp-empathy-enum-types.h
        @true
 stamp-empathy-enum-types.h: $(libempathy_headers) Makefile
@@ -172,8 +166,6 @@ pkgconfig_DATA = libempathy.pc
 
 EXTRA_DIST =                   \
        empathy-marshal.list    \
-       empathy-chandler.xml    \
-       empathy-filter.xml      \
        $(stylesheet_DATA)      \
        $(dtd_DATA)             \
        $(ircnetworks_DATA)
index 84dd4eb66e2c75fbfaa389be660c599bcb206a86..3c42fded3a9d8d31eedccd17cfeecf2f88e92b2b 100644 (file)
@@ -24,6 +24,7 @@
 #include <telepathy-glib/dbus.h>
 #include <telepathy-glib/connection.h>
 
+#include <extensions/extensions.h>
 #include "empathy-filter.h"
 #include "empathy-debug.h"
 #include "empathy-utils.h"
@@ -38,20 +39,9 @@ struct _EmpathyFilterPriv {
        GHashTable *table;
 };
 
-static void     empathy_filter_class_init     (EmpathyFilterClass *klass);
-static void     empathy_filter_init           (EmpathyFilter      *filter);
-static void     filter_finalize               (GObject            *object);
-static gboolean empathy_filter_filter_channel (EmpathyFilter      *filter,
-                                              const gchar        *bus_name,
-                                              const gchar        *connection,
-                                              const gchar        *channel_type,
-                                              const gchar        *channel,
-                                              guint               handle_type,
-                                              guint               handle,
-                                              guint               id,
-                                              GError            **error);
-
-#include "empathy-filter-glue.h"
+static void empathy_filter_class_init (EmpathyFilterClass *klass);
+static void empathy_filter_init       (EmpathyFilter      *filter);
+static void filter_iface_init         (EmpSvcFilterClass  *iface);
 
 enum {
        PROCESS,
@@ -61,7 +51,57 @@ enum {
 
 static guint signals[LAST_SIGNAL];
 
-G_DEFINE_TYPE (EmpathyFilter, empathy_filter, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_CODE (EmpathyFilter, empathy_filter, G_TYPE_OBJECT,
+                        G_IMPLEMENT_INTERFACE (EMP_TYPE_SVC_FILTER,
+                                               filter_iface_init));
+
+static void
+my_filter_channel (EmpSvcFilter *self,
+                  const gchar *bus_name,
+                  const gchar *connection,
+                  const gchar *channel_type,
+                  const gchar *channel,
+                  guint handle_type,
+                  guint handle,
+                  guint id,
+                  DBusGMethodInvocation *context)
+{
+       EmpathyFilter       *filter = EMPATHY_FILTER (self);
+       EmpathyFilterPriv   *priv = GET_PRIV (filter);
+       TpChannel           *chan;
+       TpConnection        *conn;
+       static TpDBusDaemon *daemon = NULL;
+
+       if (!daemon) {
+               daemon = tp_dbus_daemon_new (tp_get_bus ());
+       }
+
+       conn = tp_connection_new (daemon, bus_name, connection, NULL);
+       chan = tp_channel_new (conn, channel, channel_type, handle_type, handle, NULL);
+       tp_channel_run_until_ready (chan, NULL, NULL);
+
+       g_hash_table_insert (priv->table, chan, GUINT_TO_POINTER (id));
+
+       empathy_debug (DEBUG_DOMAIN, "New channel to be filtred: "
+                                    "type=%s handle=%d id=%d",
+                                    channel_type, handle, id);
+
+       g_signal_emit (filter, signals[NEW_CHANNEL], 0, chan);
+
+       g_object_unref (conn);
+
+       emp_svc_filter_return_from_filter_channel (context);
+}
+
+static void
+filter_finalize (GObject *object)
+{
+       EmpathyFilterPriv *priv;
+
+       priv = GET_PRIV (object);
+
+       g_hash_table_destroy (priv->table);
+}
 
 static void
 empathy_filter_class_init (EmpathyFilterClass *klass)
@@ -93,6 +133,15 @@ empathy_filter_class_init (EmpathyFilterClass *klass)
        g_type_class_add_private (object_class, sizeof (EmpathyFilterPriv));
 }
 
+static void
+filter_iface_init (EmpSvcFilterClass *klass)
+{
+#define IMPLEMENT(x) emp_svc_filter_implement_##x \
+    (klass, my_##x)
+  IMPLEMENT (filter_channel);
+#undef IMPLEMENT
+}
+
 static void
 empathy_filter_init (EmpathyFilter *filter)
 {
@@ -105,16 +154,6 @@ empathy_filter_init (EmpathyFilter *filter)
                                             NULL);
 }
 
-static void
-filter_finalize (GObject *object)
-{
-       EmpathyFilterPriv *priv;
-
-       priv = GET_PRIV (object);
-
-       g_hash_table_destroy (priv->table);
-}
-
 EmpathyFilter *
 empathy_filter_new (const gchar *bus_name,
                    const gchar *object_path,
@@ -122,19 +161,12 @@ empathy_filter_new (const gchar *bus_name,
                    guint        priority,
                    guint        flags)
 {
-       static gboolean  initialized = FALSE;
        MissionControl  *mc;
        EmpathyFilter   *filter;
        DBusGProxy      *proxy;
        guint            result;
        GError          *error = NULL;
 
-       if (!initialized) {
-               dbus_g_object_type_install_info (EMPATHY_TYPE_FILTER,
-                                                &dbus_glib_empathy_filter_object_info);
-               initialized = TRUE;
-       }
-
        proxy = dbus_g_proxy_new_for_name (tp_get_bus (),
                                           DBUS_SERVICE_DBUS,
                                           DBUS_PATH_DBUS,
@@ -191,46 +223,9 @@ empathy_filter_process (EmpathyFilter *filter,
 
        empathy_debug (DEBUG_DOMAIN, "Processing channel id %d: %s",
                       id, process ? "Yes" : "No");
-       g_signal_emit (filter, signals[PROCESS], 0, id, process);
-       g_hash_table_remove (priv->table, channel);
-}
-
-static gboolean
-empathy_filter_filter_channel (EmpathyFilter  *filter,
-                              const gchar    *bus_name,
-                              const gchar    *connection,
-                              const gchar    *channel_type,
-                              const gchar    *channel,
-                              guint           handle_type,
-                              guint           handle,
-                              guint           id,
-                              GError        **error)
-{
-       EmpathyFilterPriv   *priv;
-       TpChannel           *chan;
-       TpConnection        *conn;
-       static TpDBusDaemon *daemon = NULL;
 
-       priv = GET_PRIV (filter);
+       emp_svc_filter_emit_process (filter, id, process);
 
-       if (!daemon) {
-               daemon = tp_dbus_daemon_new (tp_get_bus ());
-       }
-
-       conn = tp_connection_new (daemon, bus_name, connection, NULL);
-       chan = tp_channel_new (conn, channel, channel_type, handle_type, handle, NULL);
-       tp_channel_run_until_ready (chan, NULL, NULL);
-
-       g_hash_table_insert (priv->table, chan, GUINT_TO_POINTER (id));
-
-       empathy_debug (DEBUG_DOMAIN, "New channel to be filtred: "
-                                    "type=%s handle=%d id=%d",
-                                    channel_type, handle, id);
-
-       g_signal_emit (filter, signals[NEW_CHANNEL], 0, chan);
-
-       g_object_unref (conn);
-
-       return TRUE;
+       g_hash_table_remove (priv->table, channel);
 }