From 9ad0aafe37b87ddc5d9e885df481b2331fbc5597 Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Mon, 26 Sep 2005 18:49:53 +0000 Subject: * Integrate patches from Lennart Poettering : - dbus/dbus-bus.c (internal_bus_get): new method that take over the heavy lifting of dbus_bus_get and adds the ability to get a private connection to the bus (dbus_bus_get): wrapper to internal_bus_get that provides the same interface as in previous versions (dbus_bus_get_private): new method that is a wrapper to internal_bus_get to get a private connection to the bus - dbus/dbus-bus.h (dbus_bus_get_private): add as a public libdbus interface - dbus-1.pc.in: output system_bus_default_address and sysconfdir variables so apps can use them when compiling --- dbus/dbus-bus.c | 75 +++++++++++++++++++++++++++++++++++++++------------------ dbus/dbus-bus.h | 3 +++ 2 files changed, 54 insertions(+), 24 deletions(-) (limited to 'dbus') diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c index bc9ebfb1..107fde90 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -302,27 +302,9 @@ ensure_bus_data (DBusConnection *connection) return bd; } -/** @} */ /* end of implementation details docs */ - -/** - * @addtogroup DBusBus - * @{ - */ - -/** - * Connects to a bus daemon and registers the client with it. If a - * connection to the bus already exists, then that connection is - * returned. Caller owns a reference to the bus. - * - * @todo alex thinks we should nullify the connection when we get a disconnect-message. - * - * @param type bus type - * @param error address where an error can be returned. - * @returns a DBusConnection with new ref - */ -DBusConnection * -dbus_bus_get (DBusBusType type, - DBusError *error) +static DBusConnection * +internal_bus_get (DBusBusType type, + DBusError *error, dbus_bool_t private) { const char *address; DBusConnection *connection; @@ -356,7 +338,7 @@ dbus_bus_get (DBusBusType type, bus_connection_addresses[activation_bus_type] != NULL) type = activation_bus_type; - if (bus_connections[type] != NULL) + if (!private && bus_connections[type] != NULL) { connection = bus_connections[type]; dbus_connection_ref (connection); @@ -374,7 +356,10 @@ dbus_bus_get (DBusBusType type, return NULL; } - connection = dbus_connection_open (address, error); + if (private) + connection = dbus_connection_open_private(address, error); + else + connection = dbus_connection_open (address, error); if (!connection) { @@ -399,7 +384,9 @@ dbus_bus_get (DBusBusType type, return NULL; } - bus_connections[type] = connection; + if (!private) + bus_connections[type] = connection; + bd = ensure_bus_data (connection); _dbus_assert (bd != NULL); @@ -410,6 +397,46 @@ dbus_bus_get (DBusBusType type, } +/** @} */ /* end of implementation details docs */ + +/** + * @addtogroup DBusBus + * @{ + */ + +/** + * Connects to a bus daemon and registers the client with it. If a + * connection to the bus already exists, then that connection is + * returned. Caller owns a reference to the bus. + * + * @todo alex thinks we should nullify the connection when we get a disconnect-message. + * + * @param type bus type + * @param error address where an error can be returned. + * @returns a DBusConnection with new ref + */ +DBusConnection * +dbus_bus_get (DBusBusType type, + DBusError *error) { + return internal_bus_get(type, error, FALSE); +} + +/** + * Connects to a bus daemon and registers the client with it. Unlike + * dbus_bus_get(), always creates a new connection. This connection + * will not be saved or recycled by libdbus. Caller owns a reference + * to the bus. + * + * @param type bus type + * @param error address where an error can be returned. + * @returns a DBusConnection with new ref + */ +DBusConnection * +dbus_bus_get_private (DBusBusType type, + DBusError *error) { + return internal_bus_get(type, error, TRUE); +} + /** * Registers a connection with the bus. This must be the first * thing an application does when connecting to the message bus. diff --git a/dbus/dbus-bus.h b/dbus/dbus-bus.h index 7843c7ed..24470672 100644 --- a/dbus/dbus-bus.h +++ b/dbus/dbus-bus.h @@ -33,6 +33,9 @@ DBUS_BEGIN_DECLS DBusConnection *dbus_bus_get (DBusBusType type, DBusError *error); +DBusConnection *dbus_bus_get_private (DBusBusType type, + DBusError *error); + dbus_bool_t dbus_bus_register (DBusConnection *connection, DBusError *error); dbus_bool_t dbus_bus_set_unique_name (DBusConnection *connection, -- cgit