summaryrefslogtreecommitdiffstats
path: root/src/sbus/sssd_dbus_server.c
diff options
context:
space:
mode:
authorStef Walter <stefw@redhat.com>2014-02-18 14:32:54 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-03-14 13:42:20 +0100
commit07e941c1bbdc752142bbd3b838c540bc7ecd0ed7 (patch)
tree56453ab3ece875a6f80fc374fadaef07584484b7 /src/sbus/sssd_dbus_server.c
parentd9577dbd92555b0755881e37724019ef9c578404 (diff)
downloadsssd-07e941c1bbdc752142bbd3b838c540bc7ecd0ed7.tar.gz
sssd-07e941c1bbdc752142bbd3b838c540bc7ecd0ed7.tar.xz
sssd-07e941c1bbdc752142bbd3b838c540bc7ecd0ed7.zip
sbus: Refactor how we export DBus interfaces
Most importantly, stop using per connection private data. This doesn't scale when you have more than one thing exporting or exported on a connection. Remove struct sbus_interface and expand sbus_conn_add_interface() function. Remove various struct sbus_interface args to connection initialization functions and make callers use sbus_conn_add_interface() directly. The old method was optimized for exporting one interface on a connection. We'll have connections that export zero, one or more interfaces. To export an interface on a DBus server, call sbus_conn_add_interface() from within the sbus_server_conn_init_fn. To export an interface on a DBus client, call sbus_conn_add_interface() after sbus_new_connection() returns. As before struct sbus_interface represents an object exported via DBus. However it is now talloc allocated. One can set instance data on the struct sbus_interface. This instance data is passed to the various handlers and used in their implementation. However, we now have type safe interface exporting in the various high level sss_process_init() sss_monitor_init() and so on. Introspection support was not in use, and is now gone until we implement it using the metadata (future patch). Reviewed-by: Jakub Hrozek <jhrozek@redhat.com> Reviewed-by: Pavel Březina <pbrezina@redhat.com> Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/sbus/sssd_dbus_server.c')
-rw-r--r--src/sbus/sssd_dbus_server.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/src/sbus/sssd_dbus_server.c b/src/sbus/sssd_dbus_server.c
index 8281158f1..b84df2d0f 100644
--- a/src/sbus/sssd_dbus_server.c
+++ b/src/sbus/sssd_dbus_server.c
@@ -52,8 +52,7 @@ static void sbus_server_init_new_connection(DBusServer *dbus_server,
}
DEBUG(SSSDBG_FUNC_DATA,"Adding connection %p.\n", dbus_conn);
- ret = sbus_init_connection(server, server->ev,
- dbus_conn, server->server_intf,
+ ret = sbus_init_connection(server, server->ev, dbus_conn,
SBUS_CONN_TYPE_PRIVATE, &conn);
if (ret != 0) {
dbus_connection_close(dbus_conn);
@@ -67,9 +66,6 @@ static void sbus_server_init_new_connection(DBusServer *dbus_server,
/*
* Initialize connection-specific features
- * This may set a more detailed destructor, but
- * the default destructor will always be chained
- * to handle connection cleanup.
* This function (or its callbacks) should also
* set up connection-specific methods.
*/
@@ -185,7 +181,6 @@ remove_socket_symlink(const char *symlink_name)
int sbus_new_server(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
const char *address,
- struct sbus_interface *intf,
bool use_symlink,
struct sbus_connection **_server,
sbus_server_conn_init_fn init_fn,
@@ -285,7 +280,6 @@ int sbus_new_server(TALLOC_CTX *mem_ctx,
server->ev = ev;
server->type = SBUS_SERVER;
server->dbus.server = dbus_server;
- server->server_intf = intf;
server->srv_init_fn = init_fn;
server->srv_init_data = init_pvt_data;