X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=dbus-job.c;h=f14f92f9aa07bda2cdd244f5b9a40716d5cec508;hp=e0c1153fc7260d74b7cfc8048a895555f10fbf11;hb=40d50879d9339e539a30e5d32234baffb732f0f9;hpb=c1e1601e8c6cace85b19a0eebe50076e5d119688 diff --git a/dbus-job.c b/dbus-job.c index e0c1153fc..f14f92f9a 100644 --- a/dbus-job.c +++ b/dbus-job.c @@ -23,6 +23,7 @@ #include "dbus.h" #include "log.h" +#include "dbus-job.h" static const char introspection[] = DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE @@ -39,45 +40,13 @@ static const char introspection[] = BUS_INTROSPECTABLE_INTERFACE ""; -static int bus_job_append_state(Manager *m, DBusMessageIter *i, const char *property, void *data) { - Job *j = data; - const char *state; - - assert(m); - assert(i); - assert(property); - assert(j); - - state = job_state_to_string(j->state); - - if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &state)) - return -ENOMEM; - - return 0; -} - -static int bus_job_append_type(Manager *m, DBusMessageIter *i, const char *property, void *data) { - Job *j = data; - const char *type; - - assert(m); - assert(i); - assert(property); - assert(j); - - type = job_type_to_string(j->type); - - if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &type)) - return -ENOMEM; - - return 0; -} +static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState); +static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType); static int bus_job_append_unit(Manager *m, DBusMessageIter *i, const char *property, void *data) { Job *j = data; DBusMessageIter sub; char *p; - const char *id; assert(m); assert(i); @@ -90,9 +59,7 @@ static int bus_job_append_unit(Manager *m, DBusMessageIter *i, const char *prope if (!(p = unit_dbus_path(j->unit))) return -ENOMEM; - id = unit_id(j->unit); - - if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) || + if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &j->unit->meta.id) || !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p)) { free(p); return -ENOMEM; @@ -108,10 +75,10 @@ static int bus_job_append_unit(Manager *m, DBusMessageIter *i, const char *prope static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusMessage *message) { const BusProperty properties[] = { - { "org.freedesktop.systemd1.Job", "Id", bus_property_append_uint32, "u", &j->id }, - { "org.freedesktop.systemd1.Job", "State", bus_job_append_state, "s", j }, - { "org.freedesktop.systemd1.Job", "JobType", bus_job_append_type, "s", j }, - { "org.freedesktop.systemd1.Job", "Unit", bus_job_append_unit, "(so)", j }, + { "org.freedesktop.systemd1.Job", "Id", bus_property_append_uint32, "u", &j->id }, + { "org.freedesktop.systemd1.Job", "State", bus_job_append_state, "s", &j->state }, + { "org.freedesktop.systemd1.Job", "JobType", bus_job_append_type, "s", &j->type }, + { "org.freedesktop.systemd1.Job", "Unit", bus_job_append_unit, "(so)", j }, { NULL, NULL, NULL, NULL, NULL } }; @@ -128,7 +95,7 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusMessage *message) return bus_default_message_handler(j->manager, message, introspection, properties); if (reply) { - if (!dbus_connection_send(m->bus, reply, NULL)) + if (!dbus_connection_send(m->api_bus, reply, NULL)) goto oom; dbus_message_unref(reply); @@ -199,7 +166,7 @@ void bus_job_send_change_signal(Job *j) { } else { /* Send a new signal */ - if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1", "JobNew"))) + if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobNew"))) goto oom; if (!dbus_message_append_args(m, @@ -209,7 +176,7 @@ void bus_job_send_change_signal(Job *j) { goto oom; } - if (!dbus_connection_send(j->manager->bus, m, NULL)) + if (!dbus_connection_send(j->manager->api_bus, m, NULL)) goto oom; free(p); @@ -240,7 +207,7 @@ void bus_job_send_removed_signal(Job *j) { if (!(p = job_dbus_path(j))) goto oom; - if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1", "JobRemoved"))) + if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobRemoved"))) goto oom; if (!dbus_message_append_args(m, @@ -249,7 +216,7 @@ void bus_job_send_removed_signal(Job *j) { DBUS_TYPE_INVALID)) goto oom; - if (!dbus_connection_send(j->manager->bus, m, NULL)) + if (!dbus_connection_send(j->manager->api_bus, m, NULL)) goto oom; free(p);