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 @@
 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 @@
 								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 @@
 	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;
-		}
+	if (result == FALSE) {
+		dbus_connection_unref(conn);
+		return NULL;
 	}
 
-	setup_dbus_with_main_loop(conn);
+	return conn;
+}
 
-	status = dbus_connection_get_dispatch_status(conn);
-	queue_dispatch(conn, status);
+DBusConnection *g_dbus_setup_private(DBusBusType type, const char *name,
+							DBusError *error)
+{
+	DBusConnection *conn;
+	gboolean result;
+
+	conn = dbus_bus_get_private(type, error);
+
+	if (error != NULL) {
+		if (dbus_error_is_set(error) == TRUE)
+			return NULL;
+	}
+
+	if (conn == NULL)
+		return NULL;
+
+	result = setup_bus(conn, name, error);
+
+	if (result == FALSE) {
+		dbus_connection_unref(conn);
+		return NULL;
+	}
 
 	return conn;
 }