summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Crequy <alban.crequy@collabora.co.uk>2012-05-28 11:09:14 +0000
committerRodrigo Moya <rodrigo@gnome-db.org>2012-05-29 16:01:40 +0200
commit506e12fb6a5c6439a44b81894b2cf157c1ece8c3 (patch)
tree1d6b7cd2fb9a212a37c123a2310ea1fbfa95c49e
parent1f2473a21c8810dec0bb1e499a367e9e57530a8b (diff)
downloaddbus-506e12fb6a5c6439a44b81894b2cf157c1ece8c3.tar.gz
Introduce dbus_server_is_afbus()
It will be used to: 1. check there is maximum one AF_BUS server 2. keep a reference to the AF_BUS server for proxying
-rw-r--r--dbus/dbus-server-afbus.c2
-rw-r--r--dbus/dbus-server-protected.h3
-rw-r--r--dbus/dbus-server.c20
-rw-r--r--dbus/dbus-server.h2
4 files changed, 27 insertions, 0 deletions
diff --git a/dbus/dbus-server-afbus.c b/dbus/dbus-server-afbus.c
index a9554d55..1d8e9bd2 100644
--- a/dbus/dbus-server-afbus.c
+++ b/dbus/dbus-server-afbus.c
@@ -268,6 +268,8 @@ _dbus_server_new_for_afbus (int fd, const char *path, DBusError *error)
goto failed_2;
server = (DBusServer *) afbus_server;
+ server->is_afbus = TRUE;
+
SERVER_LOCK (server);
diff --git a/dbus/dbus-server-protected.h b/dbus/dbus-server-protected.h
index dd5234b9..b423cb97 100644
--- a/dbus/dbus-server-protected.h
+++ b/dbus/dbus-server-protected.h
@@ -89,6 +89,9 @@ struct DBusServer
#ifndef DBUS_DISABLE_CHECKS
unsigned int have_server_lock : 1; /**< Does someone have the server mutex locked */
#endif
+#ifdef HAVE_AFBUS
+ unsigned int is_afbus : 1; /**< TRUE if this server listen on a AF_BUS socket */
+#endif
};
dbus_bool_t _dbus_server_init_base (DBusServer *server,
diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c
index 0894b0a4..1dc83a56 100644
--- a/dbus/dbus-server.c
+++ b/dbus/dbus-server.c
@@ -850,6 +850,26 @@ dbus_server_get_address (DBusServer *server)
}
/**
+ * Returns TRUE if the server listens on an AF_BUS address
+ *
+ * @param server the server
+ * @returns TRUE if the server listens on an AF_BUS address
+ */
+dbus_bool_t
+dbus_server_is_afbus (DBusServer *server)
+{
+ dbus_bool_t retval;
+
+ _dbus_return_val_if_fail (server != NULL, FALSE);
+
+ SERVER_LOCK (server);
+ retval = server->is_afbus;
+ SERVER_UNLOCK (server);
+
+ return retval;
+}
+
+/**
* Returns the unique ID of the server, as a newly-allocated
* string which must be freed by the caller. This ID is
* normally used by clients to tell when two #DBusConnection
diff --git a/dbus/dbus-server.h b/dbus/dbus-server.h
index bdbefa0f..49cb9cfb 100644
--- a/dbus/dbus-server.h
+++ b/dbus/dbus-server.h
@@ -62,6 +62,8 @@ dbus_bool_t dbus_server_get_is_connected (DBusServer *server);
DBUS_EXPORT
char* dbus_server_get_address (DBusServer *server);
DBUS_EXPORT
+dbus_bool_t dbus_server_is_afbus (DBusServer *server);
+DBUS_EXPORT
char* dbus_server_get_id (DBusServer *server);
DBUS_EXPORT
void dbus_server_set_new_connection_function (DBusServer *server,