From dec1fa3bd5f106ba5b2c749372231e3dd4bf9e7b Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Tue, 28 Jan 2003 14:26:49 +0000 Subject: 2003-01-28 Anders Carlsson * dbus/dbus-connection-internal.h: * dbus/dbus-connection.c: (_dbus_connection_add_timeout), (_dbus_connection_remove_timeout): Add functions for adding and removing timeouts. * dbus/dbus-message.c: (dbus_message_new_from_message): Add new function that takes a message and creates an exact copy of it, but with the refcount set to 1. (check_message_handling): Fix build error. * dbus/dbus-server-protected.h: * dbus/dbus-server.c: (_dbus_server_init_base), (_dbus_server_finalize_base), (_dbus_server_add_timeout), (dbus_server_set_timeout_functions): (_dbus_server_remove_timeout): New functions so that a server can add and remove timeouts. (dbus_server_listen): Add commented out call to dbus_server_debug_new. * dbus/dbus-timeout.c: (_dbus_timeout_new): Actually set the handler, doh. * dbus/dbus-transport.c: (_dbus_transport_open): Add commented out call to dbus_transport_debug_client_new. * dbus/Makefile.am: Add dbus-transport-debug.[ch] and dbus-server-debug.[ch] --- dbus/dbus-server.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'dbus/dbus-server.c') diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c index 83b1f578..1407c477 100644 --- a/dbus/dbus-server.c +++ b/dbus/dbus-server.c @@ -22,6 +22,9 @@ */ #include "dbus-server.h" #include "dbus-server-unix.h" +#ifdef DBUS_BUILD_TESTS +#include "dbus-server-debug.h" +#endif /** * @defgroup DBusServer DBusServer @@ -61,11 +64,22 @@ _dbus_server_init_base (DBusServer *server, if (server->watches == NULL) return FALSE; + server->timeouts = _dbus_timeout_list_new (); + if (server->timeouts == NULL) + { + _dbus_watch_list_free (server->watches); + server->watches = NULL; + return FALSE; + } + server->connection_counter = _dbus_counter_new (); if (server->connection_counter == NULL) { _dbus_watch_list_free (server->watches); server->watches = NULL; + _dbus_timeout_list_free (server->timeouts); + server->timeouts = NULL; + return FALSE; } @@ -89,6 +103,7 @@ _dbus_server_finalize_base (DBusServer *server) dbus_server_disconnect (server); _dbus_watch_list_free (server->watches); + _dbus_timeout_list_free (server->timeouts); _dbus_counter_unref (server->connection_counter); } @@ -119,6 +134,19 @@ _dbus_server_remove_watch (DBusServer *server, _dbus_watch_list_remove_watch (server->watches, watch); } +dbus_bool_t +_dbus_server_add_timeout (DBusServer *server, + DBusTimeout *timeout) +{ + return _dbus_timeout_list_add_timeout (server->timeouts, timeout); +} + +void +_dbus_server_remove_timeout (DBusServer *server, + DBusTimeout *timeout) +{ + _dbus_timeout_list_remove_timeout (server->timeouts, timeout); +} /** @} */ @@ -160,8 +188,12 @@ dbus_server_listen (const char *address, { DBusServer *server; +#if 1 /* For now just pretend the address is a unix domain socket path */ server = _dbus_server_new_for_domain_socket (address, result); +#else + server = _dbus_server_debug_new (address, result); +#endif return server; } @@ -285,6 +317,31 @@ dbus_server_set_watch_functions (DBusServer *server, free_data_function); } +/** + * Sets the timeout functions for the connection. These functions are + * responsible for making the application's main loop aware of timeouts. + * + * This function behaves exactly like dbus_connection_set_timeout_functions(); + * see the documentation for that routine. + * + * @param server the server. + * @param add_function function to add a timeout. + * @param remove_function function to remove a timeout. + * @param data data to pass to add_function and remove_function. + * @param free_data_function function to be called to free the data. + */ +void +dbus_server_set_timeout_functions (DBusServer *server, + DBusAddTimeoutFunction add_function, + DBusRemoveTimeoutFunction remove_function, + void *data, + DBusFreeFunction free_data_function) +{ + _dbus_timeout_list_set_functions (server->timeouts, + add_function, remove_function, + data, free_data_function); +} + /** * Called to notify the server when a previously-added watch * is ready for reading or writing, or has an exception such -- cgit