2 #include "test-utils.h"
7 DBusConnection *connection;
12 connection_watch_callback (DBusWatch *watch,
13 unsigned int condition,
16 return dbus_watch_handle (watch, condition);
20 add_watch (DBusWatch *watch,
25 return _dbus_loop_add_watch (cd->loop,
27 connection_watch_callback,
32 remove_watch (DBusWatch *watch,
37 _dbus_loop_remove_watch (cd->loop,
38 watch, connection_watch_callback, cd);
42 add_timeout (DBusTimeout *timeout,
47 return _dbus_loop_add_timeout (cd->loop, timeout);
51 remove_timeout (DBusTimeout *timeout,
56 _dbus_loop_remove_timeout (cd->loop, timeout);
60 dispatch_status_function (DBusConnection *connection,
61 DBusDispatchStatus new_status,
64 DBusLoop *loop = data;
66 if (new_status != DBUS_DISPATCH_COMPLETE)
68 while (!_dbus_loop_queue_dispatch (loop, connection))
69 _dbus_wait_for_memory ();
74 cdata_free (void *data)
78 dbus_connection_unref (cd->connection);
79 _dbus_loop_unref (cd->loop);
85 cdata_new (DBusLoop *loop,
86 DBusConnection *connection)
90 cd = dbus_new0 (CData, 1);
95 cd->connection = connection;
97 dbus_connection_ref (cd->connection);
98 _dbus_loop_ref (cd->loop);
104 test_connection_setup (DBusLoop *loop,
105 DBusConnection *connection)
111 dbus_connection_set_dispatch_status_function (connection, dispatch_status_function,
114 cd = cdata_new (loop, connection);
118 /* Because dbus-mainloop.c checks dbus_timeout_get_enabled(),
119 * dbus_watch_get_enabled() directly, we don't have to provide
120 * "toggled" callbacks.
123 if (!dbus_connection_set_watch_functions (connection,
131 cd = cdata_new (loop, connection);
135 if (!dbus_connection_set_timeout_functions (connection,
142 if (dbus_connection_get_dispatch_status (connection) != DBUS_DISPATCH_COMPLETE)
144 if (!_dbus_loop_queue_dispatch (loop, connection))
154 dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL);
155 dbus_connection_set_watch_functions (connection, NULL, NULL, NULL, NULL, NULL);
156 dbus_connection_set_timeout_functions (connection, NULL, NULL, NULL, NULL, NULL);
162 test_connection_shutdown (DBusLoop *loop,
163 DBusConnection *connection)
165 if (!dbus_connection_set_watch_functions (connection,
170 _dbus_assert_not_reached ("setting watch functions to NULL failed");
172 if (!dbus_connection_set_timeout_functions (connection,
177 _dbus_assert_not_reached ("setting timeout functions to NULL failed");
179 dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL);
189 serverdata_free (void *data)
191 ServerData *sd = data;
193 dbus_server_unref (sd->server);
194 _dbus_loop_unref (sd->loop);
200 serverdata_new (DBusLoop *loop,
205 sd = dbus_new0 (ServerData, 1);
212 dbus_server_ref (sd->server);
213 _dbus_loop_ref (sd->loop);
219 server_watch_callback (DBusWatch *watch,
220 unsigned int condition,
223 /* FIXME this can be done in dbus-mainloop.c
224 * if the code in activation.c for the babysitter
225 * watch handler is fixed.
228 return dbus_watch_handle (watch, condition);
232 add_server_watch (DBusWatch *watch,
235 ServerData *context = data;
237 return _dbus_loop_add_watch (context->loop,
238 watch, server_watch_callback, context,
243 remove_server_watch (DBusWatch *watch,
246 ServerData *context = data;
248 _dbus_loop_remove_watch (context->loop,
249 watch, server_watch_callback, context);
253 add_server_timeout (DBusTimeout *timeout,
256 ServerData *context = data;
258 return _dbus_loop_add_timeout (context->loop, timeout);
262 remove_server_timeout (DBusTimeout *timeout,
265 ServerData *context = data;
267 _dbus_loop_remove_timeout (context->loop, timeout);
271 test_server_setup (DBusLoop *loop,
276 sd = serverdata_new (loop, server);
280 if (!dbus_server_set_watch_functions (server,
290 sd = serverdata_new (loop, server);
294 if (!dbus_server_set_timeout_functions (server,
296 remove_server_timeout,
298 sd, serverdata_free))
306 serverdata_free (sd);
308 test_server_shutdown (loop, server);
314 test_server_shutdown (DBusLoop *loop,
317 dbus_server_disconnect (server);
319 if (!dbus_server_set_watch_functions (server,
323 _dbus_assert_not_reached ("setting watch functions to NULL failed");
325 if (!dbus_server_set_timeout_functions (server,
329 _dbus_assert_not_reached ("setting timeout functions to NULL failed");