diff options
Diffstat (limited to 'bus/dispatch.c')
-rw-r--r-- | bus/dispatch.c | 85 |
1 files changed, 80 insertions, 5 deletions
diff --git a/bus/dispatch.c b/bus/dispatch.c index 59705912..04d68ecc 100644 --- a/bus/dispatch.c +++ b/bus/dispatch.c @@ -27,6 +27,7 @@ #include "services.h" #include "utils.h" #include "bus.h" +#include "test.h" #include <dbus/dbus-internals.h> #include <string.h> @@ -142,11 +143,9 @@ send_service_nonexistent_error (BusTransaction *transaction, return TRUE; } -static DBusHandlerResult -bus_dispatch_message_handler (DBusMessageHandler *handler, - DBusConnection *connection, - DBusMessage *message, - void *user_data) +static void +bus_dispatch (DBusConnection *connection, + DBusMessage *message) { const char *sender, *service_name, *message_name; DBusError error; @@ -313,6 +312,15 @@ bus_dispatch_message_handler (DBusMessageHandler *handler, } dbus_connection_unref (connection); +} + +static DBusHandlerResult +bus_dispatch_message_handler (DBusMessageHandler *handler, + DBusConnection *connection, + DBusMessage *message, + void *user_data) +{ + bus_dispatch (connection, message); return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS; } @@ -361,3 +369,70 @@ bus_dispatch_remove_connection (DBusConnection *connection) NULL, NULL); } + + +#ifdef DBUS_BUILD_TESTS + +static void +run_test_bus (BusContext *context) +{ + + +} + +static dbus_bool_t +check_hello_message (BusContext *context, + DBusConnection *connection) +{ + DBusMessage *message; + dbus_int32_t serial; + + message = dbus_message_new (DBUS_SERVICE_DBUS, + DBUS_MESSAGE_HELLO); + + if (message == NULL) + _dbus_assert_not_reached ("no memory"); + + if (!dbus_connection_send (connection, message, &serial)) + _dbus_assert_not_reached ("no memory"); + + return TRUE; +} + +dbus_bool_t +bus_dispatch_test (const DBusString *test_data_dir) +{ + BusContext *context; + DBusError error; + const char *activation_dirs[] = { NULL, NULL }; + DBusConnection *foo; + DBusConnection *bar; + DBusConnection *baz; + DBusResultCode result; + + return TRUE; /* FIXME */ + + dbus_error_init (&error); + context = bus_context_new ("debug:name=test-server", + activation_dirs, + &error); + if (context == NULL) + _dbus_assert_not_reached ("could not alloc context"); + + foo = dbus_connection_open ("debug:name=test-server", &result); + if (foo == NULL) + _dbus_assert_not_reached ("could not alloc connection"); + + bar = dbus_connection_open ("debug:name=test-server", &result); + if (bar == NULL) + _dbus_assert_not_reached ("could not alloc connection"); + + baz = dbus_connection_open ("debug:name=test-server", &result); + if (baz == NULL) + _dbus_assert_not_reached ("could not alloc connection"); + + + + return TRUE; +} +#endif /* DBUS_BUILD_TESTS */ |