summaryrefslogtreecommitdiffstats
path: root/server/dbus/sssd_dbus.h
diff options
context:
space:
mode:
Diffstat (limited to 'server/dbus/sssd_dbus.h')
-rw-r--r--server/dbus/sssd_dbus.h49
1 files changed, 42 insertions, 7 deletions
diff --git a/server/dbus/sssd_dbus.h b/server/dbus/sssd_dbus.h
index 547aaad29..2b8a77878 100644
--- a/server/dbus/sssd_dbus.h
+++ b/server/dbus/sssd_dbus.h
@@ -21,10 +21,26 @@
#ifndef _SSSD_DBUS_H_
#define _SSSD_DBUS_H_
-
+struct dbus_connection_toplevel_context;
typedef int (*sssd_dbus_msg_handler_fn)(DBusMessage *msg, void *data,
DBusMessage **reply);
+/*
+ * sssd_dbus_connection_destructor_fn
+ * Function to be called when a connection is finalized
+ */
+typedef int (*sssd_dbus_connection_destructor_fn)(
+ void *ctx);
+
+/*
+ * sssd_dbus_server_connection_init_fn
+ * Set up function for connection-specific activities
+ * This function should define the sssd_dbus_connection_destructor_fn
+ * for this connection at a minimum
+ */
+typedef int (*sssd_dbus_server_connection_init_fn)(
+ struct dbus_connection_toplevel_context *dct_ctx);
+
extern int connection_type_slot;
enum {
@@ -37,17 +53,36 @@ struct sssd_dbus_method {
sssd_dbus_msg_handler_fn fn;
};
-struct sssd_dbus_ctx {
- struct event_context *ev;
- char *name;
+struct sssd_dbus_method_ctx {
+ struct sssd_dbus_method_ctx *prev, *next;
+ /*struct event_context *ev;*/
+ char *interface;
char *path;
+
+ /* If a non-default message_handler is desired, set it in this
+ * object before calling dbus_connection_add_method_ctx()
+ * Otherwise it will default to message_handler() in
+ * sssd_dbus_connection.c
+ */
+ DBusObjectPathMessageFunction message_handler;
struct sssd_dbus_method *methods;
};
/* Server Functions */
-int sssd_new_dbus_server(struct sssd_dbus_ctx *ctx, const char *address);
+int sssd_new_dbus_server(struct event_context *ev, struct sssd_dbus_method_ctx *ctx, const char *address, sssd_dbus_server_connection_init_fn init_fn);
/* Connection Functions */
-int sssd_new_dbus_connection(struct sssd_dbus_ctx *ctx, const char *address,
- DBusConnection **connection);
+int sssd_new_dbus_connection(TALLOC_CTX *ctx, struct event_context *ev, const char *address,
+ struct dbus_connection_toplevel_context **dct_ctx,
+ sssd_dbus_connection_destructor_fn destructor);
+
+void sssd_dbus_connection_set_destructor(struct dbus_connection_toplevel_context *dct_ctx,
+ sssd_dbus_connection_destructor_fn destructor);
+int default_connection_destructor(void *ctx);
+
+DBusConnection *sssd_get_dbus_connection(struct dbus_connection_toplevel_context *dct_ctx);
+void sssd_dbus_disconnect (struct dbus_connection_toplevel_context *dct_ctx);
+void sssd_connection_set_private_data(struct dbus_connection_toplevel_context *dct_ctx, void *private);
+int dbus_connection_add_method_ctx(struct dbus_connection_toplevel_context *dct_ctx, struct sssd_dbus_method_ctx *method_ctx);
+
#endif /* _SSSD_DBUS_H_*/