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 connection_timeout_callback (DBusTimeout *timeout,
45 /* Can return FALSE on OOM but we just let it fire again later */
46 dbus_timeout_handle (timeout);
50 add_timeout (DBusTimeout *timeout,
55 return _dbus_loop_add_timeout (cd->loop,
56 timeout, connection_timeout_callback, cd, NULL);
60 remove_timeout (DBusTimeout *timeout,
65 _dbus_loop_remove_timeout (cd->loop,
66 timeout, connection_timeout_callback, cd);
70 dispatch_status_function (DBusConnection *connection,
71 DBusDispatchStatus new_status,
74 DBusLoop *loop = data;
76 if (new_status != DBUS_DISPATCH_COMPLETE)
78 while (!_dbus_loop_queue_dispatch (loop, connection))
79 _dbus_wait_for_memory ();
84 cdata_free (void *data)
88 dbus_connection_unref (cd->connection);
89 _dbus_loop_unref (cd->loop);
95 cdata_new (DBusLoop *loop,
96 DBusConnection *connection)
100 cd = dbus_new0 (CData, 1);
105 cd->connection = connection;
107 dbus_connection_ref (cd->connection);
108 _dbus_loop_ref (cd->loop);
114 test_connection_setup (DBusLoop *loop,
115 DBusConnection *connection)
121 dbus_connection_set_dispatch_status_function (connection, dispatch_status_function,
124 cd = cdata_new (loop, connection);
128 /* Because dbus-mainloop.c checks dbus_timeout_get_enabled(),
129 * dbus_watch_get_enabled() directly, we don't have to provide
130 * "toggled" callbacks.
133 if (!dbus_connection_set_watch_functions (connection,
141 cd = cdata_new (loop, connection);
145 if (!dbus_connection_set_timeout_functions (connection,
152 if (dbus_connection_get_dispatch_status (connection) != DBUS_DISPATCH_COMPLETE)
154 if (!_dbus_loop_queue_dispatch (loop, connection))
164 dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL);
165 dbus_connection_set_watch_functions (connection, NULL, NULL, NULL, NULL, NULL);
166 dbus_connection_set_timeout_functions (connection, NULL, NULL, NULL, NULL, NULL);
172 test_connection_shutdown (DBusLoop *loop,
173 DBusConnection *connection)
175 if (!dbus_connection_set_watch_functions (connection,
180 _dbus_assert_not_reached ("setting watch functions to NULL failed");
182 if (!dbus_connection_set_timeout_functions (connection,
187 _dbus_assert_not_reached ("setting timeout functions to NULL failed");
189 dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL);
199 serverdata_free (void *data)
201 ServerData *sd = data;
203 dbus_server_unref (sd->server);
204 _dbus_loop_unref (sd->loop);
210 serverdata_new (DBusLoop *loop,
215 sd = dbus_new0 (ServerData, 1);
222 dbus_server_ref (sd->server);
223 _dbus_loop_ref (sd->loop);
229 server_watch_callback (DBusWatch *watch,
230 unsigned int condition,
233 /* FIXME this can be done in dbus-mainloop.c
234 * if the code in activation.c for the babysitter
235 * watch handler is fixed.
238 return dbus_watch_handle (watch, condition);
242 add_server_watch (DBusWatch *watch,
245 ServerData *context = data;
247 return _dbus_loop_add_watch (context->loop,
248 watch, server_watch_callback, context,
253 remove_server_watch (DBusWatch *watch,
256 ServerData *context = data;
258 _dbus_loop_remove_watch (context->loop,
259 watch, server_watch_callback, context);
263 server_timeout_callback (DBusTimeout *timeout,
266 /* can return FALSE on OOM but we just let it fire again later */
267 dbus_timeout_handle (timeout);
271 add_server_timeout (DBusTimeout *timeout,
274 ServerData *context = data;
276 return _dbus_loop_add_timeout (context->loop,
277 timeout, server_timeout_callback, context, NULL);
281 remove_server_timeout (DBusTimeout *timeout,
284 ServerData *context = data;
286 _dbus_loop_remove_timeout (context->loop,
287 timeout, server_timeout_callback, context);
291 test_server_setup (DBusLoop *loop,
296 sd = serverdata_new (loop, server);
300 if (!dbus_server_set_watch_functions (server,
310 sd = serverdata_new (loop, server);
314 if (!dbus_server_set_timeout_functions (server,
316 remove_server_timeout,
318 sd, serverdata_free))
326 serverdata_free (sd);
328 test_server_shutdown (loop, server);
334 test_server_shutdown (DBusLoop *loop,
337 dbus_server_disconnect (server);
339 if (!dbus_server_set_watch_functions (server,
343 _dbus_assert_not_reached ("setting watch functions to NULL failed");
345 if (!dbus_server_set_timeout_functions (server,
349 _dbus_assert_not_reached ("setting timeout functions to NULL failed");