From: Forrest Zhao Date: Wed, 27 Jan 2010 08:24:23 +0000 (+0800) Subject: Introduce g_dbus_setup_private() to gdbus X-Git-Tag: 2.0_alpha~2864 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a22875ffece0ce823882a653c9c212e1ebb4963c;p=framework%2Fconnectivity%2Fconnman.git Introduce g_dbus_setup_private() to gdbus g_dbus_setup_private() is used to setup private DBusConnection --- diff --git a/gdbus/gdbus.h b/gdbus/gdbus.h index dc5092f..77b8aee 100644 --- a/gdbus/gdbus.h +++ b/gdbus/gdbus.h @@ -40,6 +40,9 @@ typedef gboolean (* GDBusSignalFunction) (DBusConnection *connection, DBusConnection *g_dbus_setup_bus(DBusBusType type, const char *name, DBusError *error); +DBusConnection *g_dbus_setup_private(DBusBusType type, const char *name, + DBusError *error); + gboolean g_dbus_request_name(DBusConnection *connection, const char *name, DBusError *error); diff --git a/gdbus/mainloop.c b/gdbus/mainloop.c index b8be044..80c61b7 100644 --- a/gdbus/mainloop.c +++ b/gdbus/mainloop.c @@ -262,11 +262,36 @@ static inline void setup_dbus_with_main_loop(DBusConnection *conn) NULL, NULL); } +static gboolean setup_bus(DBusConnection *conn, const char *name, + DBusError *error) +{ + gboolean result; + DBusDispatchStatus status; + + if (name != NULL) { + result = g_dbus_request_name(conn, name, error); + + if (error != NULL) { + if (dbus_error_is_set(error) == TRUE) + return FALSE; + } + + if (result == FALSE) + return FALSE; + } + + setup_dbus_with_main_loop(conn); + + status = dbus_connection_get_dispatch_status(conn); + queue_dispatch(conn, status); + + return TRUE; +} + DBusConnection *g_dbus_setup_bus(DBusBusType type, const char *name, DBusError *error) { DBusConnection *conn; - DBusDispatchStatus status; gboolean result; conn = dbus_bus_get(type, error); @@ -279,24 +304,38 @@ DBusConnection *g_dbus_setup_bus(DBusBusType type, const char *name, if (conn == NULL) return NULL; - if (name != NULL) { - result = g_dbus_request_name(conn, name, error); + result = setup_bus(conn, name, error); - if (error != NULL) { - if (dbus_error_is_set(error) == TRUE) - result = FALSE; - } + if (result == FALSE) { + dbus_connection_unref(conn); + return NULL; + } + + return conn; +} + +DBusConnection *g_dbus_setup_private(DBusBusType type, const char *name, + DBusError *error) +{ + DBusConnection *conn; + gboolean result; - if (result == FALSE) { - dbus_connection_unref(conn); + conn = dbus_bus_get_private(type, error); + + if (error != NULL) { + if (dbus_error_is_set(error) == TRUE) return NULL; - } } - setup_dbus_with_main_loop(conn); + if (conn == NULL) + return NULL; - status = dbus_connection_get_dispatch_status(conn); - queue_dispatch(conn, status); + result = setup_bus(conn, name, error); + + if (result == FALSE) { + dbus_connection_unref(conn); + return NULL; + } return conn; }