From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2679639693731752361==" MIME-Version: 1.0 From: Szymon Janc Subject: [PATCH 5/6] dbus: Add convenient API for calling method on proxy interface Date: Fri, 01 Dec 2017 16:06:09 +0100 Message-ID: <20171201150610.9696-6-szymon.janc@codecoup.pl> In-Reply-To: <20171201150610.9696-1-szymon.janc@codecoup.pl> List-Id: To: ell@lists.01.org --===============2679639693731752361== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is wrapper around l_dbus_method_call that allows to cancel call both by removed proxy and caller. --- ell/dbus-client.c | 31 +++++++++++++++++++++++++++++++ ell/dbus-client.h | 8 ++++++++ 2 files changed, 39 insertions(+) diff --git a/ell/dbus-client.c b/ell/dbus-client.c index 0d69e4b..5a48e52 100644 --- a/ell/dbus-client.c +++ b/ell/dbus-client.c @@ -280,6 +280,37 @@ LIB_EXPORT bool l_dbus_proxy_set_property(struct l_dbu= s_proxy *proxy, return true; } = +LIB_EXPORT uint32_t l_dbus_proxy_method_call(struct l_dbus_proxy *proxy, + const char *method, + l_dbus_message_func_t setup, + l_dbus_client_proxy_result_func_t reply, + void *user_data, + l_dbus_destroy_func_t destroy) +{ + struct method_call_request *req; + + req =3D l_new(struct method_call_request, 1); + req->proxy =3D proxy; + req->result =3D reply; + req->user_data =3D user_data; + req->destroy =3D destroy; + + req->call_id =3D l_dbus_method_call(proxy->client->dbus, + proxy->client->service, + proxy->path, proxy->interface, + method, setup, + method_call_reply, req, + method_call_request_free); + if (!req->call_id) { + l_free(req); + return 0; + } + + l_queue_push_tail(proxy->pending_calls, L_UINT_TO_PTR(req->call_id)); + + return req->call_id; +} + static void proxy_update_property(struct l_dbus_proxy *proxy, const char *name, struct l_dbus_message_iter *property) diff --git a/ell/dbus-client.h b/ell/dbus-client.h index 928dcec..699d824 100644 --- a/ell/dbus-client.h +++ b/ell/dbus-client.h @@ -83,6 +83,14 @@ bool l_dbus_proxy_set_property(struct l_dbus_proxy *prox= y, l_dbus_client_proxy_result_func_t result, void *user_data, l_dbus_destroy_func_t destroy, const char *name, const char *signature, ...); + +uint32_t l_dbus_proxy_method_call(struct l_dbus_proxy *proxy, + const char *method, + l_dbus_message_func_t setup, + l_dbus_client_proxy_result_func_t reply, + void *user_data, + l_dbus_destroy_func_t destroy); + #ifdef __cplusplus } #endif -- = 2.14.3 --===============2679639693731752361==--