diff options
author | Stef Walter <stefw@gnome.org> | 2014-01-17 12:54:42 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-03-14 13:42:17 +0100 |
commit | d9577dbd92555b0755881e37724019ef9c578404 (patch) | |
tree | 243d1ee45c7f8d0a7f30750bbb7cfd93983e6182 /src/monitor/monitor_sbus.c | |
parent | 5bad17538eab85ce69e0355cd25b52b4a473cc36 (diff) | |
download | sssd-d9577dbd92555b0755881e37724019ef9c578404.tar.gz sssd-d9577dbd92555b0755881e37724019ef9c578404.tar.xz sssd-d9577dbd92555b0755881e37724019ef9c578404.zip |
sbus: Add struct sbus_request to represent a DBus invocation
struct sbus_request represents a request from a dbus client
being handled by a dbus server implementation. The struct
contains the message, connection and method (and in the
future teh property) which is being requested.
In the future it will contain caller information as well.
sbus_request is a talloc memory context, and is a good place to
attach any allocations and memory specific to the request.
Each handler accepts an sbus_request. If a handler returns
EOK, it is assumed that the handler will finish the request.
Any of the sbus_request_*finish() methods can be used to
complete the request and send back a reply.
sbus_request_return_and_finish() uses the same argument
varargs syntax as dbus_message_append_args(), which isn't
a great syntax. Document it a bit, but don't try to redesign:
The marshalling work (will follow this patch set) will remove
the need to use varargs for most DBus implementation code.
This patch migrates the monitor and data provider dbus code
to use sbus_request, but does not try to rework the talloc
context's to use it.
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/monitor/monitor_sbus.c')
-rw-r--r-- | src/monitor/monitor_sbus.c | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/src/monitor/monitor_sbus.c b/src/monitor/monitor_sbus.c index b1550bcdd..92d483233 100644 --- a/src/monitor/monitor_sbus.c +++ b/src/monitor/monitor_sbus.c @@ -144,30 +144,12 @@ int monitor_common_send_id(struct sbus_connection *conn, return retval; } -int monitor_common_pong(DBusMessage *message, - struct sbus_connection *conn) +int monitor_common_pong(struct sbus_request *dbus_req) { - DBusMessage *reply; - dbus_bool_t ret; - - reply = dbus_message_new_method_return(message); - if (!reply) return ENOMEM; - - ret = dbus_message_append_args(reply, DBUS_TYPE_INVALID); - if (!ret) { - dbus_message_unref(reply); - return EIO; - } - - /* send reply back */ - sbus_conn_send_reply(conn, reply); - dbus_message_unref(reply); - - return EOK; + return sbus_request_return_and_finish(dbus_req, DBUS_TYPE_INVALID); } -int monitor_common_res_init(DBusMessage *message, - struct sbus_connection *conn) +int monitor_common_res_init(struct sbus_request *dbus_req) { int ret; @@ -177,7 +159,7 @@ int monitor_common_res_init(DBusMessage *message, } /* Send an empty reply to acknowledge receipt */ - return monitor_common_pong(message, conn); + return sbus_request_return_and_finish(dbus_req, DBUS_TYPE_INVALID); } errno_t monitor_common_rotate_logs(struct confdb_ctx *confdb, |