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 _dbus_verbose (" Handling watch\n");
40 retval = dbus_connection_handle_watch (cd->connection, watch, condition);
42 _dbus_verbose (" Watch handled\n");
44 test_connection_dispatch_all_messages (cd->connection);
46 _dbus_verbose (" Dispatched all\n");
48 dbus_connection_unref (cd->connection);
54 add_watch (DBusWatch *watch,
59 return _dbus_loop_add_watch (cd->loop,
61 connection_watch_callback,
66 remove_watch (DBusWatch *watch,
71 _dbus_loop_remove_watch (cd->loop,
72 watch, connection_watch_callback, cd);
76 connection_timeout_callback (DBusTimeout *timeout,
81 dbus_connection_ref (cd->connection);
83 /* Can return FALSE on OOM but we just let it fire again later */
84 dbus_timeout_handle (timeout);
86 test_connection_dispatch_all_messages (cd->connection);
88 dbus_connection_unref (cd->connection);
92 add_timeout (DBusTimeout *timeout,
97 return _dbus_loop_add_timeout (cd->loop,
98 timeout, connection_timeout_callback, cd, NULL);
102 remove_timeout (DBusTimeout *timeout,
107 _dbus_loop_remove_timeout (cd->loop,
108 timeout, connection_timeout_callback, cd);
112 cdata_free (void *data)
116 dbus_connection_unref (cd->connection);
117 _dbus_loop_unref (cd->loop);
123 cdata_new (DBusLoop *loop,
124 DBusConnection *connection)
128 cd = dbus_new0 (CData, 1);
133 cd->connection = connection;
135 dbus_connection_ref (cd->connection);
136 _dbus_loop_ref (cd->loop);
142 test_connection_setup (DBusLoop *loop,
143 DBusConnection *connection)
147 cd = cdata_new (loop, connection);
151 /* Because dbus-mainloop.c checks dbus_timeout_get_enabled(),
152 * dbus_watch_get_enabled() directly, we don't have to provide
153 * "toggled" callbacks.
156 if (!dbus_connection_set_watch_functions (connection,
164 cd = cdata_new (loop, connection);
168 if (!dbus_connection_set_timeout_functions (connection,
174 dbus_connection_set_watch_functions (connection, NULL, NULL, NULL, NULL, NULL);
187 test_connection_shutdown (DBusLoop *loop,
188 DBusConnection *connection)
190 if (!dbus_connection_set_watch_functions (connection,
195 _dbus_assert_not_reached ("setting watch functions to NULL failed");
197 if (!dbus_connection_set_timeout_functions (connection,
202 _dbus_assert_not_reached ("setting timeout functions to NULL failed");