1 #include "test-utils.h"
6 DBusConnection *connection;
11 connection_watch_callback (DBusWatch *watch,
12 unsigned int condition,
15 return dbus_watch_handle (watch, condition);
19 add_watch (DBusWatch *watch,
24 return _dbus_loop_add_watch (cd->loop,
26 connection_watch_callback,
31 remove_watch (DBusWatch *watch,
36 _dbus_loop_remove_watch (cd->loop,
37 watch, connection_watch_callback, cd);
41 connection_timeout_callback (DBusTimeout *timeout,
44 /* Can return FALSE on OOM but we just let it fire again later */
45 dbus_timeout_handle (timeout);
49 add_timeout (DBusTimeout *timeout,
54 return _dbus_loop_add_timeout (cd->loop,
55 timeout, connection_timeout_callback, cd, NULL);
59 remove_timeout (DBusTimeout *timeout,
64 _dbus_loop_remove_timeout (cd->loop,
65 timeout, connection_timeout_callback, cd);
69 dispatch_status_function (DBusConnection *connection,
70 DBusDispatchStatus new_status,
73 DBusLoop *loop = data;
75 if (new_status != DBUS_DISPATCH_COMPLETE)
77 while (!_dbus_loop_queue_dispatch (loop, connection))
78 _dbus_wait_for_memory ();
83 cdata_free (void *data)
87 dbus_connection_unref (cd->connection);
88 _dbus_loop_unref (cd->loop);
94 cdata_new (DBusLoop *loop,
95 DBusConnection *connection)
99 cd = dbus_new0 (CData, 1);
104 cd->connection = connection;
106 dbus_connection_ref (cd->connection);
107 _dbus_loop_ref (cd->loop);
113 test_connection_setup (DBusLoop *loop,
114 DBusConnection *connection)
120 dbus_connection_set_dispatch_status_function (connection, dispatch_status_function,
123 cd = cdata_new (loop, connection);
127 /* Because dbus-mainloop.c checks dbus_timeout_get_enabled(),
128 * dbus_watch_get_enabled() directly, we don't have to provide
129 * "toggled" callbacks.
132 if (!dbus_connection_set_watch_functions (connection,
140 cd = cdata_new (loop, connection);
144 if (!dbus_connection_set_timeout_functions (connection,
151 if (dbus_connection_get_dispatch_status (connection) != DBUS_DISPATCH_COMPLETE)
153 if (!_dbus_loop_queue_dispatch (loop, connection))
163 dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL);
164 dbus_connection_set_watch_functions (connection, NULL, NULL, NULL, NULL, NULL);
165 dbus_connection_set_timeout_functions (connection, NULL, NULL, NULL, NULL, NULL);
171 test_connection_shutdown (DBusLoop *loop,
172 DBusConnection *connection)
174 if (!dbus_connection_set_watch_functions (connection,
179 _dbus_assert_not_reached ("setting watch functions to NULL failed");
181 if (!dbus_connection_set_timeout_functions (connection,
186 _dbus_assert_not_reached ("setting timeout functions to NULL failed");
188 dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL);
198 serverdata_free (void *data)
200 ServerData *sd = data;
202 dbus_server_unref (sd->server);
203 _dbus_loop_unref (sd->loop);
209 serverdata_new (DBusLoop *loop,
214 sd = dbus_new0 (ServerData, 1);
221 dbus_server_ref (sd->server);
222 _dbus_loop_ref (sd->loop);
228 server_watch_callback (DBusWatch *watch,
229 unsigned int condition,
232 /* FIXME this can be done in dbus-mainloop.c
233 * if the code in activation.c for the babysitter
234 * watch handler is fixed.
237 return dbus_watch_handle (watch, condition);
241 add_server_watch (DBusWatch *watch,
244 ServerData *context = data;
246 return _dbus_loop_add_watch (context->loop,
247 watch, server_watch_callback, context,
252 remove_server_watch (DBusWatch *watch,
255 ServerData *context = data;
257 _dbus_loop_remove_watch (context->loop,
258 watch, server_watch_callback, context);
262 server_timeout_callback (DBusTimeout *timeout,
265 /* can return FALSE on OOM but we just let it fire again later */
266 dbus_timeout_handle (timeout);
270 add_server_timeout (DBusTimeout *timeout,
273 ServerData *context = data;
275 return _dbus_loop_add_timeout (context->loop,
276 timeout, server_timeout_callback, context, NULL);
280 remove_server_timeout (DBusTimeout *timeout,
283 ServerData *context = data;
285 _dbus_loop_remove_timeout (context->loop,
286 timeout, server_timeout_callback, context);
290 test_server_setup (DBusLoop *loop,
295 sd = serverdata_new (loop, server);
299 if (!dbus_server_set_watch_functions (server,
309 if (!dbus_server_set_timeout_functions (server,
311 remove_server_timeout,
313 sd, serverdata_free))
321 serverdata_free (sd);
323 test_server_shutdown (loop, server);
329 test_server_shutdown (DBusLoop *loop,
332 if (!dbus_server_set_watch_functions (server,
336 _dbus_assert_not_reached ("setting watch functions to NULL failed");
338 if (!dbus_server_set_timeout_functions (server,
342 _dbus_assert_not_reached ("setting timeout functions to NULL failed");