[Telepathy-commits] [telepathy-gabble/master] tube-dbus: factor out create_dbus_server
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Mon Jan 26 06:37:28 PST 2009
---
src/tube-dbus.c | 29 +++++++++++++++++++++--------
1 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/src/tube-dbus.c b/src/tube-dbus.c
index e82cebd..c754afe 100644
--- a/src/tube-dbus.c
+++ b/src/tube-dbus.c
@@ -348,18 +348,16 @@ do_close (GabbleTubeDBus *self)
* See also Bug 13891:
* https://bugs.freedesktop.org/show_bug.cgi?id=13891
* */
-void
-gabble_tube_dbus_listen (GabbleTubeDBus *self)
+static gboolean
+create_dbus_server (GabbleTubeDBus *self,
+ GError **err)
{
#define SERVER_LISTEN_MAX_TRIES 5
GabbleTubeDBusPrivate *priv = GABBLE_TUBE_DBUS_GET_PRIVATE (self);
guint i;
if (priv->dbus_srv != NULL)
- return;
-
- g_signal_connect (priv->bytestream, "data-received",
- G_CALLBACK (data_received_cb), self);
+ return TRUE;
for (i = 0; i < SERVER_LISTEN_MAX_TRIES; i++)
{
@@ -396,14 +394,29 @@ gabble_tube_dbus_listen (GabbleTubeDBus *self)
g_free (priv->socket_path);
priv->socket_path = NULL;
- do_close (self);
- return;
+ g_set_error (err, TP_ERRORS, TP_ERROR_NOT_AVAILABLE,
+ "Can't create D-Bus server");
+ return FALSE;
}
DEBUG ("listening on %s", priv->dbus_srv_addr);
dbus_server_set_new_connection_function (priv->dbus_srv, new_connection_cb,
self, NULL);
+
+ return TRUE;
+}
+
+void
+gabble_tube_dbus_listen (GabbleTubeDBus *self)
+{
+ GabbleTubeDBusPrivate *priv = GABBLE_TUBE_DBUS_GET_PRIVATE (self);
+
+ g_signal_connect (priv->bytestream, "data-received",
+ G_CALLBACK (data_received_cb), self);
+
+ if (!create_dbus_server (self, NULL))
+ do_close (self);
}
static void
--
1.5.6.5
More information about the Telepathy-commits
mailing list