summaryrefslogtreecommitdiffstats
path: root/server/sbus/sssd_dbus_private.h
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2009-07-28 12:32:38 -0400
committerStephen Gallagher <sgallagh@redhat.com>2009-08-10 09:42:17 -0400
commit508b5b2a360c9530c6ea67a7b7ed6d61559846e4 (patch)
treecc16e91f9c225f9c2a7bce5531228fb9383c0a08 /server/sbus/sssd_dbus_private.h
parent9213da890000fb602e4f1d4c3441d5ecc2bf3736 (diff)
downloadsssd-508b5b2a360c9530c6ea67a7b7ed6d61559846e4.tar.gz
sssd-508b5b2a360c9530c6ea67a7b7ed6d61559846e4.tar.xz
sssd-508b5b2a360c9530c6ea67a7b7ed6d61559846e4.zip
Refactor some code around watches and timeouts
Watches and Timeouts are now unified under one implementation that covers both dbus server and connections. In watches do not keep removing and adding file events simply toggle the appropriate flags. Also streamline some memory management within both timeout and watch related functions, checking allocations and freeing the whole context not just the events.
Diffstat (limited to 'server/sbus/sssd_dbus_private.h')
-rw-r--r--server/sbus/sssd_dbus_private.h39
1 files changed, 37 insertions, 2 deletions
diff --git a/server/sbus/sssd_dbus_private.h b/server/sbus/sssd_dbus_private.h
index bcaee62cd..fdee121e9 100644
--- a/server/sbus/sssd_dbus_private.h
+++ b/server/sbus/sssd_dbus_private.h
@@ -1,8 +1,43 @@
#ifndef _SSSD_DBUS_PRIVATE_H_
#define _SSSD_DBUS_PRIVATE_H_
-struct timeval _dbus_timeout_get_interval_tv(int interval);
+union dbus_pointer {
+ DBusServer *server;
+ DBusConnection *conn;
+};
+enum dbus_pointer_type {
+ SBUS_SERVER,
+ SBUS_CONNECTION
+};
+
+struct sbus_generic_dbus_ctx {
+ struct tevent_context *ev;
+ enum dbus_pointer_type type;
+ union dbus_pointer dbus;
+};
+
+/* =Watches=============================================================== */
+
+struct sbus_watch_ctx {
+ DBusWatch *dbus_watch;
+ enum dbus_pointer_type dbus_type;
+ union dbus_pointer dbus;
+ struct tevent_fd *fde;
+};
+
+dbus_bool_t sbus_add_watch(DBusWatch *watch, void *data);
+void sbus_toggle_watch(DBusWatch *watch, void *data);
void sbus_remove_watch(DBusWatch *watch, void *data);
-void sbus_remove_timeout(DBusTimeout *timeout, void *data);
+
+/* =Timeouts============================================================== */
+
+struct sbus_timeout_ctx {
+ DBusTimeout *dbus_timeout;
+ struct tevent_timer *te;
+};
+
+dbus_bool_t sbus_add_timeout(DBusTimeout *dbus_timeout, void *data);
+void sbus_toggle_timeout(DBusTimeout *dbus_timeout, void *data);
+void sbus_remove_timeout(DBusTimeout *dbus_timeout, void *data);
#endif /* _SSSD_DBUS_PRIVATE_H_ */