summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2010-02-11 15:53:59 +1100
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2010-02-11 15:57:15 +1100
commit8743d2a7cc3fa81f498e8052f899893bc24080c7 (patch)
tree2d6e4079492dc798d4985c877d1e91b998a0298e
parent09500d23db05b1bc88fb0a3ceca9061955cc4084 (diff)
Port to TplSvcLogger
-rw-r--r--data/Makefile.am2
-rw-r--r--data/dbus-service.xml17
-rw-r--r--data/org.freedesktop.Telepathy.Logger.service.in3
-rw-r--r--data/org.freedesktop.Telepathy.TelepathyLoggerService.service.in3
-rw-r--r--src/Makefile.am2
-rw-r--r--src/test-api.c54
-rw-r--r--telepathy-logger/Makefile.am15
-rw-r--r--telepathy-logger/dbus-service.c74
-rw-r--r--telepathy-logger/dbus-service.h10
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