summaryrefslogtreecommitdiffstats
path: root/server/dbus/sssd_dbus.h
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2008-10-31 15:51:08 -0400
committerSimo Sorce <idra@samba.org>2008-11-03 10:12:29 -0500
commit0396ffe802dc32dc48c9d0ac3b22efc8217a98b3 (patch)
treec81f44d0e5383f039c6e74682fa9290bc812bdd8 /server/dbus/sssd_dbus.h
parent913d0433c4d70b90051727972c070af770166940 (diff)
downloadsssd-0396ffe802dc32dc48c9d0ac3b22efc8217a98b3.tar.gz
sssd-0396ffe802dc32dc48c9d0ac3b22efc8217a98b3.tar.xz
sssd-0396ffe802dc32dc48c9d0ac3b22efc8217a98b3.zip
Moved method handling into sssd_dbus_connection.c. Added support for handling multiple D-BUS paths in a connection. Added support for per-connection method setup. Added support for per-connection specialized destructors. Added mandatory getIdentity call for all services connecting to the monitor. If they do not present an identity (expose the getIdentity method and respond with name and version), they are dropped immediately. Other minor fixes.
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_*/