From 98f19852078cf03f8b50a93d49d83b85c0dd400b Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Mon, 18 Jun 2007 16:24:03 +0000 Subject: 2007-06-18 Havoc Pennington * dbus/dbus-watch.c (dbus_watch_get_socket) (dbus_watch_get_unix_fd): new API to match DBusConnection (dbus_watch_get_fd): deprecate this Throughout: just s/dbus_watch_get_fd/dbus_watch_get_socket/g for now since all the transports use sockets anyway --- dbus/dbus-connection.c | 17 ++++++------ dbus/dbus-connection.h | 7 ++++- dbus/dbus-mainloop.c | 6 ++--- dbus/dbus-server-socket.c | 2 +- dbus/dbus-spawn.c | 2 +- dbus/dbus-transport-socket.c | 2 +- dbus/dbus-transport.c | 2 +- dbus/dbus-watch.c | 63 +++++++++++++++++++++++++++++++++++++------- 8 files changed, 75 insertions(+), 26 deletions(-) (limited to 'dbus') diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 656f7502..484873e6 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -4475,12 +4475,13 @@ dbus_connection_dispatch (DBusConnection *connection) * dbus_watch_get_enabled() every time anyway. * * The DBusWatch can be queried for the file descriptor to watch using - * dbus_watch_get_fd(), and for the events to watch for using - * dbus_watch_get_flags(). The flags returned by - * dbus_watch_get_flags() will only contain DBUS_WATCH_READABLE and - * DBUS_WATCH_WRITABLE, never DBUS_WATCH_HANGUP or DBUS_WATCH_ERROR; - * all watches implicitly include a watch for hangups, errors, and - * other exceptional conditions. + * dbus_watch_get_unix_fd() or dbus_watch_get_socket(), and for the + * events to watch for using dbus_watch_get_flags(). The flags + * returned by dbus_watch_get_flags() will only contain + * DBUS_WATCH_READABLE and DBUS_WATCH_WRITABLE, never + * DBUS_WATCH_HANGUP or DBUS_WATCH_ERROR; all watches implicitly + * include a watch for hangups, errors, and other exceptional + * conditions. * * Once a file descriptor becomes readable or writable, or an exception * occurs, dbus_watch_handle() should be called to @@ -4732,7 +4733,7 @@ dbus_connection_set_dispatch_status_function (DBusConnection *connec * example. DO NOT read or write to the file descriptor, or try to * select() on it; use DBusWatch for main loop integration. Not all * connections will have a file descriptor. So for adding descriptors - * to the main loop, use dbus_watch_get_fd() and so forth. + * to the main loop, use dbus_watch_get_unix_fd() and so forth. * * If the connection is socket-based, you can also use * dbus_connection_get_socket(), which will work on Windows too. @@ -4765,7 +4766,7 @@ dbus_connection_get_unix_fd (DBusConnection *connection, * of the connection, if any. DO NOT read or write to the file descriptor, or try to * select() on it; use DBusWatch for main loop integration. Not all * connections will have a socket. So for adding descriptors - * to the main loop, use dbus_watch_get_fd() and so forth. + * to the main loop, use dbus_watch_get_socket() and so forth. * * If the connection is not socket-based, this function will return FALSE, * even if the connection does have a file descriptor of some kind. diff --git a/dbus/dbus-connection.h b/dbus/dbus-connection.h index 533ac98d..ec227604 100644 --- a/dbus/dbus-connection.h +++ b/dbus/dbus-connection.h @@ -352,7 +352,12 @@ dbus_bool_t dbus_connection_get_socket (DBusConnection * @{ */ -int dbus_watch_get_fd (DBusWatch *watch); +#ifndef DBUS_DISABLE_DEPRECATED +DBUS_DEPRECATED int dbus_watch_get_fd (DBusWatch *watch); +#endif + +int dbus_watch_get_unix_fd (DBusWatch *watch); +int dbus_watch_get_socket (DBusWatch *watch); unsigned int dbus_watch_get_flags (DBusWatch *watch); void* dbus_watch_get_data (DBusWatch *watch); void dbus_watch_set_data (DBusWatch *watch, diff --git a/dbus/dbus-mainloop.c b/dbus/dbus-mainloop.c index 68284474..73d411e0 100644 --- a/dbus/dbus-mainloop.c +++ b/dbus/dbus-mainloop.c @@ -598,7 +598,7 @@ _dbus_loop_iterate (DBusLoop *loop, #if MAINLOOP_SPEW _dbus_verbose (" skipping watch on fd %d as it was out of memory last time\n", - dbus_watch_get_fd (wcb->watch)); + dbus_watch_get_socket (wcb->watch)); #endif } else if (dbus_watch_get_enabled (wcb->watch)) @@ -609,7 +609,7 @@ _dbus_loop_iterate (DBusLoop *loop, flags = dbus_watch_get_flags (wcb->watch); - fds[n_fds].fd = dbus_watch_get_fd (wcb->watch); + fds[n_fds].fd = dbus_watch_get_socket (wcb->watch); fds[n_fds].revents = 0; fds[n_fds].events = 0; if (flags & DBUS_WATCH_READABLE) @@ -628,7 +628,7 @@ _dbus_loop_iterate (DBusLoop *loop, { #if MAINLOOP_SPEW _dbus_verbose (" skipping disabled watch on fd %d %s\n", - dbus_watch_get_fd (wcb->watch), + dbus_watch_get_socket (wcb->watch), watch_flags_to_string (dbus_watch_get_flags (wcb->watch))); #endif } diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index 3897f0db..1840e49f 100644 --- a/dbus/dbus-server-socket.c +++ b/dbus/dbus-server-socket.c @@ -161,7 +161,7 @@ socket_handle_watch (DBusWatch *watch, int client_fd; int listen_fd; - listen_fd = dbus_watch_get_fd (watch); + listen_fd = dbus_watch_get_socket (watch); client_fd = _dbus_accept (listen_fd); diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index 74358185..2c901c12 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -722,7 +722,7 @@ handle_watch (DBusWatch *watch, if (condition & DBUS_WATCH_HANGUP) revents |= _DBUS_POLLHUP; - fd = dbus_watch_get_fd (watch); + fd = dbus_watch_get_socket (watch); if (fd == sitter->error_pipe_from_child) handle_error_pipe (sitter, revents); diff --git a/dbus/dbus-transport-socket.c b/dbus/dbus-transport-socket.c index 31a41e1f..5ef4e8bf 100644 --- a/dbus/dbus-transport-socket.c +++ b/dbus/dbus-transport-socket.c @@ -880,7 +880,7 @@ socket_handle_watch (DBusTransport *transport, flags); else _dbus_verbose ("asked to handle watch %p on fd %d that we don't recognize\n", - watch, dbus_watch_get_fd (watch)); + watch, dbus_watch_get_socket (watch)); } #endif /* DBUS_ENABLE_VERBOSE_MODE */ diff --git a/dbus/dbus-transport.c b/dbus/dbus-transport.c index 0e27dd13..3edef937 100644 --- a/dbus/dbus-transport.c +++ b/dbus/dbus-transport.c @@ -812,7 +812,7 @@ _dbus_transport_handle_watch (DBusTransport *transport, if (transport->disconnected) return TRUE; - if (dbus_watch_get_fd (watch) < 0) + if (dbus_watch_get_socket (watch) < 0) { _dbus_warn_check_failed ("Tried to handle an invalidated watch; this watch should have been removed\n"); return TRUE; diff --git a/dbus/dbus-watch.c b/dbus/dbus-watch.c index f2691c82..7ec0661c 100644 --- a/dbus/dbus-watch.c +++ b/dbus/dbus-watch.c @@ -286,7 +286,7 @@ _dbus_watch_list_set_functions (DBusWatchList *watch_list, _dbus_verbose ("Adding a %s watch on fd %d using newly-set add watch function\n", watch_type, - dbus_watch_get_fd (link->data)); + dbus_watch_get_socket (link->data)); } #endif /* DBUS_ENABLE_VERBOSE_MODE */ @@ -302,7 +302,7 @@ _dbus_watch_list_set_functions (DBusWatchList *watch_list, link2); _dbus_verbose ("Removing watch on fd %d using newly-set remove function because initial add failed\n", - dbus_watch_get_fd (link2->data)); + dbus_watch_get_socket (link2->data)); (* remove_function) (link2->data, data); @@ -359,7 +359,7 @@ _dbus_watch_list_add_watch (DBusWatchList *watch_list, if (watch_list->add_watch_function != NULL) { _dbus_verbose ("Adding watch on fd %d\n", - dbus_watch_get_fd (watch)); + dbus_watch_get_socket (watch)); if (!(* watch_list->add_watch_function) (watch, watch_list->watch_data)) @@ -390,7 +390,7 @@ _dbus_watch_list_remove_watch (DBusWatchList *watch_list, if (watch_list->remove_watch_function != NULL) { _dbus_verbose ("Removing watch on fd %d\n", - dbus_watch_get_fd (watch)); + dbus_watch_get_socket (watch)); (* watch_list->remove_watch_function) (watch, watch_list->watch_data); @@ -422,7 +422,7 @@ _dbus_watch_list_toggle_watch (DBusWatchList *watch_list, if (watch_list->watch_toggled_function != NULL) { _dbus_verbose ("Toggling watch %p on fd %d to %d\n", - watch, dbus_watch_get_fd (watch), watch->enabled); + watch, dbus_watch_get_socket (watch), watch->enabled); (* watch_list->watch_toggled_function) (watch, watch_list->watch_data); @@ -481,16 +481,59 @@ _dbus_watch_set_handler (DBusWatch *watch, */ /** - * Gets the file descriptor that should be watched. - * - * On Windows, this will be a socket. On UNIX right now it will be a - * socket but in principle it could be something else. + * Deprecated former name of dbus_watch_get_unix_fd(). * * @param watch the DBusWatch object. * @returns the file descriptor to watch. */ int dbus_watch_get_fd (DBusWatch *watch) +{ + return dbus_watch_get_unix_fd (watch); +} + +/** + * Returns a UNIX file descriptor to be watched, + * which may be a pipe, socket, or other type of + * descriptor. On UNIX this is preferred to + * dbus_watch_get_socket() since it works with + * more kinds of #DBusWatch. + * + * Always returns -1 on Windows. On Windows you use + * dbus_watch_get_socket() to get a Winsock socket to watch. + * + * @param watch the DBusWatch object. + * @returns the file descriptor to watch. + */ +int +dbus_watch_get_unix_fd (DBusWatch *watch) +{ + /* FIXME remove #ifdef and do this on a lower level + * (watch should have set_socket and set_unix_fd and track + * which it has, and the transport should provide the + * appropriate watch type) + */ +#ifdef DBUS_UNIX + return watch->fd; +#else + return -1; +#endif +} + +/** + * Returns a socket to be watched, on UNIX this will return -1 if our + * transport is not socket-based so dbus_watch_get_unix_fd() is + * preferred. + * + * On Windows, dbus_watch_get_unix_fd() returns -1 but this function + * returns a Winsock socket (assuming the transport is socket-based, + * as it always is for now). + * + * @param watch the DBusWatch object. + * @returns the socket to watch. + */ +int +dbus_watch_get_socket (DBusWatch *watch) { return watch->fd; } @@ -546,7 +589,7 @@ dbus_watch_set_data (DBusWatch *watch, DBusFreeFunction free_data_function) { _dbus_verbose ("Setting watch fd %d data to data = %p function = %p from data = %p function = %p\n", - dbus_watch_get_fd (watch), + dbus_watch_get_socket (watch), data, free_data_function, watch->data, watch->free_data_function); if (watch->free_data_function != NULL) -- cgit