summaryrefslogtreecommitdiff
path: root/test/test-service.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-04-03 21:56:22 +0000
committerHavoc Pennington <hp@redhat.com>2003-04-03 21:56:22 +0000
commitf216e81432ddf04889202c33a6e68113f94d7611 (patch)
treebb8386366d183e43dc3471219ec627a21c65a639 /test/test-service.c
parentfe9f3b45cc7e2e84d180c433f1ab5f8fd0a0c619 (diff)
2003-04-03 Havoc Pennington <hp@redhat.com>
* bus/activation.c (load_directory): fix up memleaks (bus_activation_entry_free): free the entry * dbus/dbus-bus.c (dbus_bus_acquire_service): return an error if we get one from the message bus; fix memleaks. * dbus/dbus-message.c (dbus_set_error_from_message): new function
Diffstat (limited to 'test/test-service.c')
-rw-r--r--test/test-service.c84
1 files changed, 82 insertions, 2 deletions
diff --git a/test/test-service.c b/test/test-service.c
index a4dff0b3..49048f66 100644
--- a/test/test-service.c
+++ b/test/test-service.c
@@ -1,15 +1,74 @@
#include <dbus/dbus.h>
#include <stdio.h>
+#include <stdlib.h>
#include "watch.h"
+static void
+die (const char *message)
+{
+ fprintf (stderr, "%s", message);
+ exit (1);
+}
+
+static DBusHandlerResult
+echo_handler (DBusMessageHandler *handler,
+ DBusConnection *connection,
+ DBusMessage *message,
+ void *user_data)
+{
+ DBusError error;
+ DBusMessage *reply;
+ char *s;
+
+ dbus_error_init (&error);
+
+ if (!dbus_message_get_args (message,
+ &error,
+ DBUS_TYPE_STRING, &s,
+ DBUS_TYPE_INVALID))
+ {
+ reply = dbus_message_new_error_reply (message,
+ error.name,
+ error.message);
+
+ if (reply == NULL)
+ die ("No memory\n");
+
+ if (!dbus_connection_send (connection, reply, NULL))
+ die ("No memory\n");
+
+ dbus_message_unref (reply);
+
+ return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ }
+
+ reply = dbus_message_new_reply (message);
+ if (reply == NULL)
+ die ("No memory\n");
+
+ if (!dbus_message_append_string (reply, s))
+ die ("No memory");
+
+ if (!dbus_connection_send (connection, reply, NULL))
+ die ("No memory\n");
+
+ dbus_free (s);
+
+ dbus_message_unref (reply);
+
+ return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+}
+
int
main (int argc,
char **argv)
{
DBusConnection *connection;
DBusError error;
- DBusMessage *message;
-
+ DBusMessageHandler *handler;
+ const char *to_handle[] = { "org.freedesktop.DBus.TestSuiteEcho" };
+ int result;
+
dbus_error_init (&error);
connection = dbus_bus_get (DBUS_BUS_ACTIVATION, &error);
if (connection == NULL)
@@ -21,10 +80,31 @@ main (int argc,
}
setup_connection (connection);
+
+ handler = dbus_message_handler_new (echo_handler, NULL, NULL);
+ if (handler == NULL)
+ die ("No memory");
+
+ if (!dbus_connection_register_handler (connection, handler, to_handle, 1))
+ die ("No memory");
+
+ result = dbus_bus_acquire_service (connection, "org.freedesktop.DBus.TestSuiteEchoService",
+ 0, &error);
+ if (dbus_error_is_set (&error))
+ {
+ fprintf (stderr, "Failed to acquire service: %s\n",
+ error.message);
+ dbus_error_free (&error);
+ return 1;
+ }
do_mainloop ();
dbus_connection_unref (connection);
+
+ dbus_message_handler_unref (handler);
+
+ dbus_shutdown ();
return 0;
}