diff options
author | Olivier Andrieu <oliv__a@users.sourceforge.net> | 2004-09-24 10:43:36 +0000 |
---|---|---|
committer | Olivier Andrieu <oliv__a@users.sourceforge.net> | 2004-09-24 10:43:36 +0000 |
commit | 85f8f62da6bb26d7033310af9d3260b073efe4bf (patch) | |
tree | 9b4bc616ed867cba0e8b48873c9b9e91cd326bbb /bus/driver.c | |
parent | 64b63e84b7f08695bf194a05aadd074600c8e622 (diff) |
* doc/dbus-specification.xml: document ServiceOwnerChanged signal.
* bus/driver.c, bus/driver.h, bus/services.c: Use ServiceOwnerChanged
signal instead of ServiceCreated and ServiceDeleted.
* bus/dispatch.c: update testcase for the new signal.
Diffstat (limited to 'bus/driver.c')
-rw-r--r-- | bus/driver.c | 72 |
1 files changed, 20 insertions, 52 deletions
diff --git a/bus/driver.c b/bus/driver.c index 39d8b126..b426912f 100644 --- a/bus/driver.c +++ b/bus/driver.c @@ -39,20 +39,25 @@ static dbus_bool_t bus_driver_send_welcome_message (DBusConnection *connection, DBusError *error); dbus_bool_t -bus_driver_send_service_deleted (const char *service_name, - BusTransaction *transaction, - DBusError *error) +bus_driver_send_service_owner_changed (const char *service_name, + const char *old_owner, + const char *new_owner, + BusTransaction *transaction, + DBusError *error) { DBusMessage *message; dbus_bool_t retval; + const char null_service[] = { '\000' }; _DBUS_ASSERT_ERROR_IS_CLEAR (error); - _dbus_verbose ("sending service deleted: %s\n", service_name); + _dbus_verbose ("sending service owner changed: %s [%s -> %s]", service_name, + old_owner ? old_owner : null_service, + new_owner ? new_owner : null_service); message = dbus_message_new_signal (DBUS_PATH_ORG_FREEDESKTOP_DBUS, DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS, - "ServiceDeleted"); + "ServiceOwnerChanged"); if (message == NULL) { @@ -60,62 +65,25 @@ bus_driver_send_service_deleted (const char *service_name, return FALSE; } - if (!dbus_message_set_sender (message, DBUS_SERVICE_ORG_FREEDESKTOP_DBUS) || - !dbus_message_append_args (message, + if (!dbus_message_set_sender (message, DBUS_SERVICE_ORG_FREEDESKTOP_DBUS)) + goto oom; + + if (!dbus_message_append_args (message, DBUS_TYPE_STRING, service_name, + DBUS_TYPE_STRING, old_owner ? old_owner : null_service, + DBUS_TYPE_STRING, new_owner ? new_owner : null_service, DBUS_TYPE_INVALID)) - { - dbus_message_unref (message); - BUS_SET_OOM (error); - return FALSE; - } + goto oom; retval = bus_dispatch_matches (transaction, NULL, NULL, message, error); dbus_message_unref (message); return retval; -} -dbus_bool_t -bus_driver_send_service_created (const char *service_name, - BusTransaction *transaction, - DBusError *error) -{ - DBusMessage *message; - dbus_bool_t retval; - - _DBUS_ASSERT_ERROR_IS_CLEAR (error); - - message = dbus_message_new_signal (DBUS_PATH_ORG_FREEDESKTOP_DBUS, - DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS, - "ServiceCreated"); - - if (message == NULL) - { - BUS_SET_OOM (error); - return FALSE; - } - - if (!dbus_message_set_sender (message, DBUS_SERVICE_ORG_FREEDESKTOP_DBUS)) - { - dbus_message_unref (message); - BUS_SET_OOM (error); - return FALSE; - } - - if (!dbus_message_append_args (message, - DBUS_TYPE_STRING, service_name, - DBUS_TYPE_INVALID)) - { - dbus_message_unref (message); - BUS_SET_OOM (error); - return FALSE; - } - - retval = bus_dispatch_matches (transaction, NULL, NULL, message, error); + oom: dbus_message_unref (message); - - return retval; + BUS_SET_OOM (error); + return FALSE; } dbus_bool_t |