diff options
Diffstat (limited to 'src/sbus')
-rw-r--r-- | src/sbus/sssd_dbus.h | 31 | ||||
-rw-r--r-- | src/sbus/sssd_dbus_connection.c | 19 |
2 files changed, 26 insertions, 24 deletions
diff --git a/src/sbus/sssd_dbus.h b/src/sbus/sssd_dbus.h index 5b128eaed..7552fbcf1 100644 --- a/src/sbus/sssd_dbus.h +++ b/src/sbus/sssd_dbus.h @@ -113,21 +113,6 @@ struct sbus_interface { void *instance_data; }; -/* - * Creates a new struct sbus_interface instance to be exported by a DBus - * service. - * - * Pass the result to sbus_conn_add_interface(). The interface - * will be exported at @object_path. The method handlers are represented by - * @iface_vtable. @instance_data contains additional caller specific data - * which is made available to handlers. - */ -struct sbus_interface * -sbus_new_interface(TALLOC_CTX *mem_ctx, - const char *object_path, - struct sbus_vtable *iface_vtable, - void *instance_data); - /* Server Functions */ int sbus_new_server(TALLOC_CTX *mem_ctx, struct tevent_context *ev, @@ -170,9 +155,21 @@ int sbus_init_connection(TALLOC_CTX *ctx, struct sbus_connection **_conn); DBusConnection *sbus_get_connection(struct sbus_connection *conn); + void sbus_disconnect(struct sbus_connection *conn); -int sbus_conn_add_interface(struct sbus_connection *conn, - struct sbus_interface *intf); + +/* + * Register a new interface to be available at given object path. + * + * The interface will be exported at @object_path. The method handlers are + * represented by @iface_vtable. @pvt contains additional caller specific data + * which is made available to handlers. + */ +int sbus_conn_register_iface(struct sbus_connection *conn, + struct sbus_vtable *iface_vtable, + const char *object_path, + void *pvt); + bool sbus_conn_disconnecting(struct sbus_connection *conn); /* max_retries < 0: retry forever diff --git a/src/sbus/sssd_dbus_connection.c b/src/sbus/sssd_dbus_connection.c index 6102ef9ae..7fded56bc 100644 --- a/src/sbus/sssd_dbus_connection.c +++ b/src/sbus/sssd_dbus_connection.c @@ -565,7 +565,7 @@ fail: sbus_request_finish(dbus_req, reply); } -struct sbus_interface * +static struct sbus_interface * sbus_new_interface(TALLOC_CTX *mem_ctx, const char *object_path, struct sbus_vtable *iface_vtable, @@ -606,18 +606,23 @@ static char *sbus_iface_get_reg_path(TALLOC_CTX *mem_ctx, return reg_path; } -/* Adds a new D-BUS path message handler to the connection - * Note: this must be a unique path. - */ -int sbus_conn_add_interface(struct sbus_connection *conn, - struct sbus_interface *intf) +int sbus_conn_register_iface(struct sbus_connection *conn, + struct sbus_vtable *iface_vtable, + const char *object_path, + void *pvt) { struct sbus_interface_p *intf_p; + struct sbus_interface *intf; dbus_bool_t dbret; const char *path; bool fallback; - if (!conn || !intf || !intf->vtable || !intf->vtable->meta) { + intf = sbus_new_interface(conn, object_path, iface_vtable, pvt); + if (intf == NULL) { + return ENOMEM; + } + + if (!conn || !intf->vtable || !intf->vtable->meta) { return EINVAL; } |