2 #include "test-utils.h"
5 static dbus_bool_t already_quit;
12 _dbus_loop_quit (loop);
18 die (const char *message)
20 fprintf (stderr, "%s", message);
24 static DBusHandlerResult
25 handle_echo (DBusConnection *connection,
32 dbus_error_init (&error);
34 if (!dbus_message_get_args (message,
39 reply = dbus_message_new_error_reply (message,
46 if (!dbus_connection_send (connection, reply, NULL))
49 dbus_message_unref (reply);
51 return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
54 reply = dbus_message_new_reply (message);
58 if (!dbus_message_append_string (reply, s))
61 if (!dbus_connection_send (connection, reply, NULL))
66 dbus_message_unref (reply);
68 return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
71 static DBusHandlerResult
72 filter_func (DBusMessageHandler *handler,
73 DBusConnection *connection,
77 if (dbus_message_name_is (message, "org.freedesktop.DBus.TestSuiteEcho"))
78 return handle_echo (connection, message);
79 else if (dbus_message_name_is (message, "org.freedesktop.DBus.TestSuiteExit") ||
80 dbus_message_name_is (message, DBUS_MESSAGE_LOCAL_DISCONNECT))
82 dbus_connection_disconnect (connection);
84 return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
88 return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
96 DBusConnection *connection;
98 DBusMessageHandler *handler;
99 const char *to_handle[] = {
100 "org.freedesktop.DBus.TestSuiteEcho",
101 "org.freedesktop.DBus.TestSuiteExit",
102 DBUS_MESSAGE_LOCAL_DISCONNECT,
106 dbus_error_init (&error);
107 connection = dbus_bus_get (DBUS_BUS_ACTIVATION, &error);
108 if (connection == NULL)
110 fprintf (stderr, "Failed to open connection to activating message bus: %s\n",
112 dbus_error_free (&error);
116 loop = _dbus_loop_new ();
120 if (!test_connection_setup (loop, connection))
123 handler = dbus_message_handler_new (filter_func, NULL, NULL);
127 if (!dbus_connection_register_handler (connection, handler, to_handle,
128 _DBUS_N_ELEMENTS (to_handle)))
131 result = dbus_bus_acquire_service (connection, "org.freedesktop.DBus.TestSuiteEchoService",
133 if (dbus_error_is_set (&error))
135 fprintf (stderr, "Failed to acquire service: %s\n",
137 dbus_error_free (&error);
141 _dbus_loop_run (loop);
143 test_connection_shutdown (loop, connection);
145 dbus_connection_unref (connection);
147 dbus_message_handler_unref (handler);
149 _dbus_loop_unref (loop);
154 printf ("*** Test service exiting\n");