diff options
author | Pavel Březina <pbrezina@redhat.com> | 2014-12-11 22:23:32 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-01-23 21:29:31 +0100 |
commit | 46ee931314e6a5517f5c6b6b14f759364be119cc (patch) | |
tree | ddd462856868f8e5aad32d940302640221dd8e46 /src/sbus/sssd_dbus_private.h | |
parent | 894f09f146f0c9cda9e0f7dfe1916519d73dde72 (diff) | |
download | sssd-46ee931314e6a5517f5c6b6b14f759364be119cc.tar.gz sssd-46ee931314e6a5517f5c6b6b14f759364be119cc.tar.xz sssd-46ee931314e6a5517f5c6b6b14f759364be119cc.zip |
sbus: support multiple interfaces on single path
This patch removes the old message handler which is replaced
with a new one that supports multiple interfaces registered
on single object path.
A hash table is used to store registered object paths and their
interfaces. When an entry or the table itself is destroyed,
registered object path is unregistered through delete callback.
It temporarily removes support of Introspect and Properties
standard D-Bus interfaces and disables unit tests of those
interfaces. The support is brought back by following patches.
Resolves:
https://fedorahosted.org/sssd/ticket/2339
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/sbus/sssd_dbus_private.h')
-rw-r--r-- | src/sbus/sssd_dbus_private.h | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/sbus/sssd_dbus_private.h b/src/sbus/sssd_dbus_private.h index fc63405a1..23d2898f8 100644 --- a/src/sbus/sssd_dbus_private.h +++ b/src/sbus/sssd_dbus_private.h @@ -37,14 +37,6 @@ enum dbus_conn_type { struct sbus_watch_ctx; -struct sbus_interface_p { - struct sbus_interface_p *prev, *next; - struct sbus_connection *conn; - struct sbus_interface *intf; - - const char *reg_path; -}; - struct sbus_connection { struct tevent_context *ev; @@ -55,8 +47,7 @@ struct sbus_connection { int connection_type; int disconnect; - /* dbus tables and handlers */ - struct sbus_interface_p *intf_list; + hash_table_t *managed_paths; /* reconnect settings */ int retries; @@ -75,8 +66,6 @@ struct sbus_connection { struct sbus_watch_ctx *watch_list; }; -extern DBusObjectPathVTable dbus_object_path_vtable; - /* =Watches=============================================================== */ struct sbus_watch_ctx { @@ -114,9 +103,10 @@ sbus_new_request(struct sbus_connection *conn, struct sbus_interface *intf, /* =Interface=and=object=paths============================================ */ -void sbus_unreg_object_paths(struct sbus_connection *conn); -bool sbus_iface_handles_path(struct sbus_interface_p *intf_p, - const char *path); +errno_t +sbus_opath_hash_init(TALLOC_CTX *mem_ctx, + struct sbus_connection *conn, + hash_table_t **_table); /* =Interface=introspection=============================================== */ extern const struct sbus_method_meta introspect_method; |