summaryrefslogtreecommitdiffstats
path: root/dbus
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2005-09-26 18:49:53 +0000
committerJohn (J5) Palmieri <johnp@redhat.com>2005-09-26 18:49:53 +0000
commit9ad0aafe37b87ddc5d9e885df481b2331fbc5597 (patch)
tree5836adac2dd1278139a11ea0e9101943c49e216c /dbus
parentcd883ae0436e0be1234cd0cde3c2e9a8b994d0e8 (diff)
* Integrate patches from Lennart Poettering <mzsqb at 0pointer.de>:
- 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
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-bus.c75
-rw-r--r--dbus/dbus-bus.h3
2 files changed, 54 insertions, 24 deletions
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,