Introduce g_dbus_setup_private() to gdbus

g_dbus_setup_private() is used to setup private DBusConnection
This commit is contained in:
Forrest Zhao 2010-01-27 16:24:23 +08:00 committed by Marcel Holtmann
parent 2bece5fe0d
commit 57013cfa0d
2 changed files with 57 additions and 15 deletions

View 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);

View 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;
}
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;
}