diff options
author | Jürg Billeter <j@bitron.ch> | 2011-12-01 12:45:04 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2011-12-01 12:45:04 +0100 |
commit | b0d8f4ad54957ec46105eeb07727fed297a61281 (patch) | |
tree | 3cb9d03e8d52597704100138c4a9a97630ab3bbd | |
parent | d0a15d79db13e5ac18e8a8afc19f9fe463d2b1f3 (diff) | |
download | tracker-b0d8f4ad54957ec46105eeb07727fed297a61281.tar.gz |
libtracker-bus: Keep connection to D-Bus session bus alive
Fixes NB#293333.
-rw-r--r-- | src/libtracker-bus/tracker-bus.vala | 52 |
1 files changed, 20 insertions, 32 deletions
diff --git a/src/libtracker-bus/tracker-bus.vala b/src/libtracker-bus/tracker-bus.vala index 7ed2cb6e3..17763d1d7 100644 --- a/src/libtracker-bus/tracker-bus.vala +++ b/src/libtracker-bus/tracker-bus.vala @@ -18,7 +18,11 @@ */ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { + DBusConnection bus; + public Connection () throws Sparql.Error, IOError, DBusError { + bus = GLib.Bus.get_sync (BusType.SESSION); + // ensure that error domain is registered with GDBus new Sparql.Error.INTERNAL (""); } @@ -46,13 +50,13 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { } } - void send_query (DBusConnection connection, string sparql, UnixOutputStream output, Cancellable? cancellable, AsyncReadyCallback? callback) throws GLib.IOError { + void send_query (string sparql, UnixOutputStream output, Cancellable? cancellable, AsyncReadyCallback? callback) throws GLib.IOError { var message = new DBusMessage.method_call (TRACKER_DBUS_SERVICE, TRACKER_DBUS_OBJECT_STEROIDS, TRACKER_DBUS_INTERFACE_STEROIDS, "Query"); var fd_list = new UnixFDList (); message.set_body (new Variant ("(sh)", sparql, fd_list.append (output.fd))); message.set_unix_fd_list (fd_list); - connection.send_message_with_reply.begin (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable, callback); + bus.send_message_with_reply.begin (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable, callback); } public override Sparql.Cursor query (string sparql, Cancellable? cancellable) throws Sparql.Error, IOError, DBusError { @@ -75,12 +79,10 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { UnixOutputStream output; pipe (out input, out output); - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - // send D-Bus request AsyncResult dbus_res = null; bool received_result = false; - send_query (connection, sparql, output, cancellable, (o, res) => { + send_query (sparql, output, cancellable, (o, res) => { dbus_res = res; if (received_result) { query_async.callback (); @@ -99,7 +101,7 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { yield; } - var reply = connection.send_message_with_reply.end (dbus_res); + var reply = bus.send_message_with_reply.end (dbus_res); handle_error_reply (reply); string[] variable_names = (string[]) reply.get_body ().get_child_value (0); @@ -107,13 +109,13 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { return new FDCursor (mem_stream.steal_data (), mem_stream.data_size, variable_names); } - void send_update (DBusConnection connection, string method, UnixInputStream input, Cancellable? cancellable, AsyncReadyCallback? callback) throws GLib.IOError { + void send_update (string method, UnixInputStream input, Cancellable? cancellable, AsyncReadyCallback? callback) throws GLib.IOError { var message = new DBusMessage.method_call (TRACKER_DBUS_SERVICE, TRACKER_DBUS_OBJECT_STEROIDS, TRACKER_DBUS_INTERFACE_STEROIDS, method); var fd_list = new UnixFDList (); message.set_body (new Variant ("(h)", fd_list.append (input.fd))); message.set_unix_fd_list (fd_list); - connection.send_message_with_reply.begin (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable, callback); + bus.send_message_with_reply.begin (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable, callback); } public override void update (string sparql, int priority = GLib.Priority.DEFAULT, Cancellable? cancellable = null) throws Sparql.Error, IOError, DBusError { @@ -136,12 +138,10 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { UnixOutputStream output; pipe (out input, out output); - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - // send D-Bus request AsyncResult dbus_res = null; bool sent_update = false; - send_update (connection, priority <= GLib.Priority.DEFAULT ? "Update" : "BatchUpdate", input, cancellable, (o, res) => { + send_update (priority <= GLib.Priority.DEFAULT ? "Update" : "BatchUpdate", input, cancellable, (o, res) => { dbus_res = res; if (sent_update) { update_async.callback (); @@ -161,7 +161,7 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { yield; } - var reply = connection.send_message_with_reply.end (dbus_res); + var reply = bus.send_message_with_reply.end (dbus_res); handle_error_reply (reply); } @@ -170,12 +170,10 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { UnixOutputStream output; pipe (out input, out output); - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - // send D-Bus request AsyncResult dbus_res = null; bool sent_update = false; - send_update (connection, "UpdateArray", input, cancellable, (o, res) => { + send_update ("UpdateArray", input, cancellable, (o, res) => { dbus_res = res; if (sent_update) { update_array_async.callback (); @@ -198,7 +196,7 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { yield; } - var reply = connection.send_message_with_reply.end (dbus_res); + var reply = bus.send_message_with_reply.end (dbus_res); handle_error_reply (reply); // process results (errors) @@ -243,12 +241,10 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { UnixOutputStream output; pipe (out input, out output); - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - // send D-Bus request AsyncResult dbus_res = null; bool sent_update = false; - send_update (connection, "UpdateBlank", input, cancellable, (o, res) => { + send_update ("UpdateBlank", input, cancellable, (o, res) => { dbus_res = res; if (sent_update) { update_blank_async.callback (); @@ -268,37 +264,31 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { yield; } - var reply = connection.send_message_with_reply.end (dbus_res); + var reply = bus.send_message_with_reply.end (dbus_res); handle_error_reply (reply); return reply.get_body ().get_child_value (0); } public override void load (File file, Cancellable? cancellable = null) throws Sparql.Error, IOError, DBusError { - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - var message = new DBusMessage.method_call (TRACKER_DBUS_SERVICE, TRACKER_DBUS_OBJECT_RESOURCES, TRACKER_DBUS_INTERFACE_RESOURCES, "Load"); message.set_body (new Variant ("(s)", file.get_uri ())); - var reply = connection.send_message_with_reply_sync (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); + var reply = bus.send_message_with_reply_sync (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); handle_error_reply (reply); } public async override void load_async (File file, Cancellable? cancellable = null) throws Sparql.Error, IOError, DBusError { - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - var message = new DBusMessage.method_call (TRACKER_DBUS_SERVICE, TRACKER_DBUS_OBJECT_RESOURCES, TRACKER_DBUS_INTERFACE_RESOURCES, "Load"); message.set_body (new Variant ("(s)", file.get_uri ())); - var reply = yield connection.send_message_with_reply (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); + var reply = yield bus.send_message_with_reply (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); handle_error_reply (reply); } public override Sparql.Cursor? statistics (Cancellable? cancellable = null) throws Sparql.Error, IOError, DBusError { - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - var message = new DBusMessage.method_call (TRACKER_DBUS_SERVICE, TRACKER_DBUS_OBJECT_STATISTICS, TRACKER_DBUS_INTERFACE_STATISTICS, "Get"); - var reply = connection.send_message_with_reply_sync (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); + var reply = bus.send_message_with_reply_sync (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); handle_error_reply (reply); string[,] results = (string[,]) reply.get_body ().get_child_value (0); @@ -318,11 +308,9 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { } public async override Sparql.Cursor? statistics_async (Cancellable? cancellable = null) throws Sparql.Error, IOError, DBusError { - var connection = GLib.Bus.get_sync (BusType.SESSION, cancellable); - var message = new DBusMessage.method_call (TRACKER_DBUS_SERVICE, TRACKER_DBUS_OBJECT_STATISTICS, TRACKER_DBUS_INTERFACE_STATISTICS, "Get"); - var reply = yield connection.send_message_with_reply (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); + var reply = yield bus.send_message_with_reply (message, DBusSendMessageFlags.NONE, int.MAX, null, cancellable); handle_error_reply (reply); string[,] results = (string[,]) reply.get_body ().get_child_value (0); |