1 #include "test-utils.h"
6 DBusConnection *connection;
11 test_connection_dispatch_one_message (DBusConnection *connection)
13 DBusDispatchStatus status;
15 while ((status = dbus_connection_dispatch (connection)) == DBUS_DISPATCH_NEED_MEMORY)
16 _dbus_wait_for_memory ();
18 return status == DBUS_DISPATCH_DATA_REMAINS;
22 test_connection_dispatch_all_messages (DBusConnection *connection)
24 while (test_connection_dispatch_one_message (connection))
29 connection_watch_callback (DBusWatch *watch,
30 unsigned int condition,
36 dbus_connection_ref (cd->connection);
38 retval = dbus_connection_handle_watch (cd->connection, watch, condition);
40 test_connection_dispatch_all_messages (cd->connection);
42 dbus_connection_unref (cd->connection);
48 add_watch (DBusWatch *watch,
53 return _dbus_loop_add_watch (cd->loop,
55 connection_watch_callback,
60 remove_watch (DBusWatch *watch,
65 _dbus_loop_remove_watch (cd->loop,
66 watch, connection_watch_callback, cd);
70 connection_timeout_callback (DBusTimeout *timeout,
75 dbus_connection_ref (cd->connection);
77 /* Can return FALSE on OOM but we just let it fire again later */
78 dbus_timeout_handle (timeout);
80 test_connection_dispatch_all_messages (cd->connection);
82 dbus_connection_unref (cd->connection);
86 add_timeout (DBusTimeout *timeout,
91 return _dbus_loop_add_timeout (cd->loop,
92 timeout, connection_timeout_callback, cd, NULL);
96 remove_timeout (DBusTimeout *timeout,
101 _dbus_loop_remove_timeout (cd->loop,
102 timeout, connection_timeout_callback, cd);
106 cdata_free (void *data)
110 dbus_connection_unref (cd->connection);
111 _dbus_loop_unref (cd->loop);
117 cdata_new (DBusLoop *loop,
118 DBusConnection *connection)
122 cd = dbus_new0 (CData, 1);
127 cd->connection = connection;
129 dbus_connection_ref (cd->connection);
130 _dbus_loop_ref (cd->loop);
136 test_connection_setup (DBusLoop *loop,
137 DBusConnection *connection)
141 cd = cdata_new (loop, connection);
145 /* Because dbus-mainloop.c checks dbus_timeout_get_enabled(),
146 * dbus_watch_get_enabled() directly, we don't have to provide
147 * "toggled" callbacks.
150 if (!dbus_connection_set_watch_functions (connection,
158 cd = cdata_new (loop, connection);
162 if (!dbus_connection_set_timeout_functions (connection,
168 dbus_connection_set_watch_functions (connection, NULL, NULL, NULL, NULL, NULL);
181 test_connection_shutdown (DBusLoop *loop,
182 DBusConnection *connection)
184 if (!dbus_connection_set_watch_functions (connection,
189 _dbus_assert_not_reached ("setting watch functions to NULL failed");
191 if (!dbus_connection_set_timeout_functions (connection,
196 _dbus_assert_not_reached ("setting timeout functions to NULL failed");