diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2010-02-11 15:53:59 +1100 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2010-02-11 15:57:15 +1100 |
commit | 8743d2a7cc3fa81f498e8052f899893bc24080c7 (patch) | |
tree | 2d6e4079492dc798d4985c877d1e91b998a0298e | |
parent | 09500d23db05b1bc88fb0a3ceca9061955cc4084 (diff) |
Port to TplSvcLogger
-rw-r--r-- | data/Makefile.am | 2 | ||||
-rw-r--r-- | data/dbus-service.xml | 17 | ||||
-rw-r--r-- | data/org.freedesktop.Telepathy.Logger.service.in | 3 | ||||
-rw-r--r-- | data/org.freedesktop.Telepathy.TelepathyLoggerService.service.in | 3 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/test-api.c | 54 | ||||
-rw-r--r-- | telepathy-logger/Makefile.am | 15 | ||||
-rw-r--r-- | telepathy-logger/dbus-service.c | 74 | ||||
-rw-r--r-- | telepathy-logger/dbus-service.h | 10 |
9 files changed, 62 insertions, 118 deletions
diff --git a/data/Makefile.am b/data/Makefile.am index 08d4f609c..7da06f44d 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -4,7 +4,7 @@ schemas_DATA = telepathy-logger.schemas servicefiledir = $(datadir)/dbus-1/services servicefile_in_files = \ org.freedesktop.Telepathy.Client.TelepathyLogger.service.in \ - org.freedesktop.Telepathy.TelepathyLoggerService.service.in + org.freedesktop.Telepathy.Logger.service.in servicefile_DATA = $(servicefile_in_files:.service.in=.service) %.service: %.service.in $(QUIET_GEN)sed -e "s|%bindir%|$(bindir)|" $< > $@ diff --git a/data/dbus-service.xml b/data/dbus-service.xml deleted file mode 100644 index 1c75e31d4..000000000 --- a/data/dbus-service.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<node name="/org/freedesktop/Telepathy/TelepathyLoggerService"> - <interface name="org.freedesktop.Telepathy.TelepathyLoggerService"> - <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="tpl_dbus_service"/> - <method name="LastChats"> - <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="tpl_dbus_service_last_chats"/> - <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> - <arg type="o" name="account" direction="in" /> - <arg type="s" name="identifier" direction="in" /> - <arg type="b" name="is_chatroom" direction="in" /> - <arg type="u" name="lines" direction="in" /> - <!-- ARRAY of (TIMESTAMP SENDER MESSAGE) --> - <arg type="a(ssu)" name="answer" direction="out" /> - </method> - </interface> -</node> - diff --git a/data/org.freedesktop.Telepathy.Logger.service.in b/data/org.freedesktop.Telepathy.Logger.service.in new file mode 100644 index 000000000..70213b492 --- /dev/null +++ b/data/org.freedesktop.Telepathy.Logger.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.Telepathy.Logger +Exec=%bindir%/telepathy-logger diff --git a/data/org.freedesktop.Telepathy.TelepathyLoggerService.service.in b/data/org.freedesktop.Telepathy.TelepathyLoggerService.service.in deleted file mode 100644 index 960768df5..000000000 --- a/data/org.freedesktop.Telepathy.TelepathyLoggerService.service.in +++ /dev/null @@ -1,3 +0,0 @@ -[D-BUS Service] -Name=org.freedesktop.Telepathy.TelepathyLoggerService -Exec=%bindir%/telepathy-logger diff --git a/src/Makefile.am b/src/Makefile.am index 641480191..217df6f96 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -22,10 +22,12 @@ bin_PROGRAMS = \ telepathy_logger_LDADD = \ $(top_builddir)/telepathy-logger/libtelepathy-logger.la \ + $(top_builddir)/extensions/libtpl-extensions.la \ $(LIBTPL_LIBS) test_api_LDADD = \ $(top_builddir)/telepathy-logger/libtelepathy-logger.la \ + $(top_builddir)/extensions/libtpl-extensions.la \ $(LIBTPL_LIBS) diff --git a/src/test-api.c b/src/test-api.c index bf21c9c4f..61afe6621 100644 --- a/src/test-api.c +++ b/src/test-api.c @@ -25,6 +25,7 @@ #include <telepathy-glib/dbus.h> #include <telepathy-logger/dbus-service.h> +#include <extensions/extensions.h> #define ACCOUNT_PATH "/org/freedesktop/Telepathy/Account/gabble/jabber/cosimo_2ealfarano_40collabora_2eco_2euk0" #define ID "echo@test.collabora.co.uk" @@ -32,21 +33,17 @@ //static GMainLoop *loop = NULL; static void -last_chats_cb (DBusGProxy *proxy, - GPtrArray *result, - GError *error, - gpointer userdata) +last_chats_cb (TpProxy *logger, + const GPtrArray *result, + const GError *error, + gpointer userdata, + GObject *weak_obj) { /* Just do demonstrate remote exceptions versus regular GError */ - if (error != NULL) { - if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION) - g_printerr ("Caught remote method exception %s: %s", - dbus_g_error_get_name (error), - error->message); - else - g_printerr ("Error: %s\n", error->message); - g_error_free (error); - return; + if (error != NULL) + { + g_printerr ("Error: %s\n", error->message); + return; } g_print ("Names on the message bus:\n"); @@ -75,31 +72,26 @@ last_chats_cb (DBusGProxy *proxy, int main (int argc, char *argv[]) { - DBusGConnection *connection; + TpDBusDaemon *bus; + TpProxy *proxy; GError *error = NULL; - DBusGProxy *proxy; g_type_init (); - error = NULL; - connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (connection == NULL) - { - g_printerr ("Failed to open connection to bus: %s\n", - error->message); - g_error_free (error); - return 1; - } + bus = tp_dbus_daemon_dup (&error); + g_assert_no_error (error); - /* Create a proxy object for the "bus driver" (name "org.freedesktop.DBus") */ + proxy = g_object_new (TP_TYPE_PROXY, + "bus-name", TPL_DBUS_SRV_WELL_KNOWN_BUS_NAME, + "object-path", TPL_DBUS_SRV_OBJECT_PATH, + "dbus-daemon", bus, + NULL); - proxy = dbus_g_proxy_new_for_name (connection, - TPL_DBUS_SRV_WELL_KNOWN_BUS_NAME, - TPL_DBUS_SRV_OBJECT_PATH, - TPL_DBUS_SRV_WELL_KNOWN_BUS_NAME); + g_object_unref (bus); - tpl_dbus_service_last_chats_async (proxy, ACCOUNT_PATH, ID, FALSE, 5, - last_chats_cb, NULL); + tpl_cli_logger_call_get_recent_messages (proxy, -1, + ACCOUNT_PATH, ID, FALSE, 5, + last_chats_cb, NULL, NULL, NULL); g_object_unref (proxy); diff --git a/telepathy-logger/Makefile.am b/telepathy-logger/Makefile.am index d92f024fb..a2bbceb4d 100644 --- a/telepathy-logger/Makefile.am +++ b/telepathy-logger/Makefile.am @@ -8,9 +8,7 @@ AM_CPPFLAGS = \ $(DISABLE_DEPRECATED) \ $(WARN_CFLAGS) -BUILT_SOURCES = \ - dbus-service-server.h \ - dbus-service-client.h +BUILT_SOURCES = pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libtelepathy-logger.pc @@ -52,6 +50,9 @@ libtelepathy_logger_la_SOURCES = \ observer.c \ util.c +libtelepathy_logger_la_LIBADD = \ + $(top_builddir)/extensions/libtpl-extensions.la + check_c_sources = \ $(libtelepathy_logger_la_SOURCES) \ $(LIBTPL_HEADERS) @@ -59,11 +60,3 @@ include $(top_srcdir)/tools/check-coding-style.mk check-local: check-coding-style CLEANFILES = $(BUILT_SOURCES) - -#Rule to generate the binding headers -dbus-service-server.h: $(top_srcdir)/data/dbus-service.xml - dbus-binding-tool --prefix=tpl_dbus_service --mode=glib-server $< > $@ - -dbus-service-client.h: $(top_srcdir)/data/dbus-service.xml - dbus-binding-tool --prefix=tpl_dbus_service --mode=glib-client $< > $@ - diff --git a/telepathy-logger/dbus-service.c b/telepathy-logger/dbus-service.c index b0ec8208f..97558ada5 100644 --- a/telepathy-logger/dbus-service.c +++ b/telepathy-logger/dbus-service.c @@ -28,13 +28,12 @@ #include <telepathy-logger/log-entry-text.h> #include <telepathy-logger/log-manager.h> +#include <extensions/extensions.h> + #define DBUS_STRUCT_STRING_STRING_UINT \ (dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID)) - -static gboolean tpl_dbus_service_last_chats (TplDBusService *self, - const gchar *account_path, const gchar *identifier, gboolean is_chatroom, - guint lines, DBusGMethodInvocation *context); +static void tpl_logger_iface_init (gpointer iface, gpointer iface_data); #define GET_PRIV(obj) TPL_GET_PRIV (obj, TplDBusService) struct _TplDBusServicePriv @@ -42,34 +41,14 @@ struct _TplDBusServicePriv TplLogManager *manager; }; -#include <dbus-service-server.h> - -G_DEFINE_TYPE (TplDBusService, tpl_dbus_service, G_TYPE_OBJECT) - -static void -tpl_dbus_service_finalize (GObject *obj) -{ - G_OBJECT_CLASS (tpl_dbus_service_parent_class)->dispose (obj); -} - -static void -tpl_dbus_service_dispose (GObject *obj) -{ - G_OBJECT_CLASS (tpl_dbus_service_parent_class)->finalize (obj); -} - +G_DEFINE_TYPE_WITH_CODE (TplDBusService, tpl_dbus_service, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (TPL_TYPE_SVC_LOGGER, tpl_logger_iface_init)); static void tpl_dbus_service_class_init (TplDBusServiceClass *klass) { GObjectClass* object_class = G_OBJECT_CLASS (klass); - object_class->finalize = tpl_dbus_service_finalize; - object_class->dispose = tpl_dbus_service_dispose; - - dbus_g_object_type_install_info (TPL_TYPE_DBUS_SERVICE, - &dbus_glib_tpl_dbus_service_object_info); - g_type_class_add_private (object_class, sizeof (TplDBusServicePriv)); } @@ -131,8 +110,8 @@ _pack_last_chats_answer (GList *data, return TRUE; } -static gboolean -tpl_dbus_service_last_chats (TplDBusService *self, +static void +tpl_dbus_service_get_recent_messages (TplSvcLogger *self, const gchar *account_path, const gchar *identifier, gboolean is_chatroom, @@ -150,8 +129,9 @@ tpl_dbus_service_last_chats (TplDBusService *self, guint left_lines = lines; TplDBusServicePriv *priv = GET_PRIV (self); - g_return_val_if_fail (TPL_IS_DBUS_SERVICE (self), FALSE); - g_return_val_if_fail (context != NULL, FALSE); + /* FIXME: return an invalid parameters error */ + g_return_if_fail (TPL_IS_DBUS_SERVICE (self)); + g_return_if_fail (context != NULL); dbus = tp_get_bus (); tp_dbus = tp_dbus_daemon_new (dbus); @@ -159,12 +139,15 @@ tpl_dbus_service_last_chats (TplDBusService *self, account = tp_account_new (tp_dbus, account_path, &error); if (error != NULL) { - g_error ("TpAccount creation: %s", error->message); + g_critical ("TpAccount creation: %s", error->message); + dbus_g_method_return_error (context, error); + g_error_free (error); g_object_unref (tp_dbus); g_object_unref (dbus); - return FALSE; + + return; } GList *dates = tpl_log_manager_get_dates (priv->manager, account, identifier, @@ -173,10 +156,12 @@ tpl_dbus_service_last_chats (TplDBusService *self, { g_set_error_literal (&error, TPL_DBUS_SERVICE_ERROR, TPL_DBUS_SERVICE_ERROR_FAILED, "Error during date list retrieving"); + dbus_g_method_return_error (context, error); g_object_unref (tp_dbus); g_object_unref (dbus); - return FALSE; + + return; } dates = g_list_reverse (dates); @@ -203,24 +188,19 @@ tpl_dbus_service_last_chats (TplDBusService *self, _pack_last_chats_answer (ret, &answer); g_list_foreach (ret, (GFunc) g_object_unref, NULL); - dbus_g_method_return (context, answer); + tpl_svc_logger_return_from_get_recent_messages (context, answer); g_object_unref (tp_dbus); - - return TRUE; } -DBusGProxyCall *tpl_dbus_service_last_chats_async (DBusGProxy *proxy, - const char *IN_account, - const char *IN_identifier, - const gboolean IN_is_chatroom, - const guint IN_lines, - org_freedesktop_Telepathy_TelepathyLoggerService_last_chats_reply - callback, - gpointer userdata) +static void +tpl_logger_iface_init (gpointer iface, + gpointer iface_data) { - return org_freedesktop_Telepathy_TelepathyLoggerService_last_chats_async ( - proxy, IN_account, IN_identifier, IN_is_chatroom, IN_lines, callback, - userdata); + TplSvcLoggerClass *klass = (TplSvcLoggerClass *) iface; + +#define IMPLEMENT(x) tpl_svc_logger_implement_##x (klass, tpl_dbus_service_##x) + IMPLEMENT (get_recent_messages); +#undef IMPLEMENT } diff --git a/telepathy-logger/dbus-service.h b/telepathy-logger/dbus-service.h index d882ebb6e..75e429681 100644 --- a/telepathy-logger/dbus-service.h +++ b/telepathy-logger/dbus-service.h @@ -28,9 +28,9 @@ #include <telepathy-logger/log-manager.h> #define TPL_DBUS_SRV_WELL_KNOWN_BUS_NAME \ - "org.freedesktop.Telepathy.TelepathyLoggerService" + "org.freedesktop.Telepathy.Logger" #define TPL_DBUS_SRV_OBJECT_PATH \ - "/org/freedesktop/Telepathy/TelepathyLoggerService" + "/org/freedesktop/Telepathy/Logger" G_BEGIN_DECLS @@ -73,12 +73,6 @@ GType tpl_dbus_service_get_type (void); TplDBusService *tpl_dbus_service_new (void); -DBusGProxyCall *tpl_dbus_service_last_chats_async (DBusGProxy *proxy, const - char* IN_account, const char * IN_identifier, const gboolean - IN_is_chatroom, const guint IN_lines, - org_freedesktop_Telepathy_TelepathyLoggerService_last_chats_reply - callback, gpointer userdata); - G_END_DECLS #endif |