Introduce g_dbus_setup_private() to gdbus
authorForrest Zhao <forrest.zhao@intel.com>
Wed, 27 Jan 2010 08:24:23 +0000 (16:24 +0800)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 27 Jan 2010 08:50:14 +0000 (09:50 +0100)
g_dbus_setup_private() is used to setup private DBusConnection

gdbus/gdbus.h
gdbus/mainloop.c

index dc5092f..77b8aee 100644 (file)
@@ -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);
 
index b8be044..80c61b7 100644 (file)
@@ -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;
 }