From: taemin.yeom Date: Thu, 4 Mar 2021 06:20:57 +0000 (+0900) Subject: Change dbus handle method functions X-Git-Tag: submit/tizen/20210309.090957~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=99c433e6de1cc3d093fe2eebc16b706b5b2c3544;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git Change dbus handle method functions change "dbus_handle_method_sync_var" and "dbus_handle_method_with_unix_fd_list_sync_with_reply_var" to add a return value indicating error results Change-Id: Ib9063dc6811bb28e885f71e85b0253dfd6d303bc Signed-off-by: taemin.yeom --- diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index 8c7197c..fdf1859 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -1863,35 +1863,36 @@ gint* dbus_handle_get_unix_fd_list(GDBusMethodInvocation *invocation, int *size) return g_unix_fd_list_steal_fds(fd_list, NULL); } -GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, +int dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param, + GVariant **reply, int *in_fdlist, int in_size, int **out_fdlist, int *out_size) { + int ret = 0; GError *err = NULL; - GVariant * ret = NULL; dbus_handle_s *dh = NULL; GUnixFDList *g_infdlist = NULL; GUnixFDList *g_outfdlist = NULL; if (!dest || !path || !iface || !method) { _E("wrong parameters dest(%s) path(%s) iface(%s) method(%s)", dest, path, iface, method); - return NULL; + return -EINVAL; } if (in_fdlist && in_size == 0) { _E("wrong in_fdlist is not null but in_size is 0"); - return NULL; + return -EINVAL; } dh = _dbus_handle_get_default_connection(); if (!dh) { _E("failed to get default connection, bustype:%d", (int)dbus_handle_get_default_bus_type()); - return NULL; + return -EAGAIN; } /* append fd */ @@ -1899,6 +1900,7 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *d g_infdlist = g_unix_fd_list_new_from_array(in_fdlist, in_size); if (!g_infdlist) { _E("failed to g_unix_fd_list_new_from_array\n"); + ret = -EAGAIN; goto out; } //g_infdlist = g_unix_fd_list_new(); @@ -1906,14 +1908,14 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *d } /* send message */ - ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn, + *reply = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn, dest, path, iface, method, param, NULL, G_DBUS_CALL_FLAGS_NONE, -1, g_infdlist, &g_outfdlist, NULL, &err); - if (!ret || err) { + if (!(*reply) || err) { if (err) { _E("failed to g_dbus_connection_call_with_unix_fd_list_sync:%s", err->message); g_error_free(err); @@ -1924,6 +1926,7 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *d if (g_infdlist) g_object_unref(g_infdlist); } + ret = -EAGAIN; goto out; } @@ -1944,16 +1947,16 @@ int dbus_handle_method_sync_var(const char *dest, const char *path, const char *iface, const char *method, - GVariant *param) + GVariant *param, + int *output) { - int result; int ret = 0; gboolean result_bool; GVariant *reply = NULL; if (!dest || !path || !iface || !method) { _E("wrong parameters dest(%s) path(%s) iface(%s) method(%s)", dest, path, iface, method); - return -1; + return -EINVAL; } ret = dbus_handle_method_sync_with_reply_var(dest, path, iface, method, param, &reply); @@ -1964,17 +1967,17 @@ int dbus_handle_method_sync_var(const char *dest, return -ECOMM; if (g_strcmp0("(i)", g_variant_get_type_string(reply)) == 0) { - g_variant_get(reply, "(i)", &result); + g_variant_get(reply, "(i)", output); } else if (g_strcmp0("(b)", g_variant_get_type_string(reply)) == 0) { g_variant_get(reply, "(b)", &result_bool); - result = (int)result_bool; + *output = (int)result_bool; } else { - result = -ENOMSG; + ret = -ENOMSG; } g_variant_unref(reply); - return result; + return ret; } int dbus_handle_method_async_var(const char *dest, diff --git a/src/libgdbus/dbus-system.h b/src/libgdbus/dbus-system.h index c367510..0b831da 100644 --- a/src/libgdbus/dbus-system.h +++ b/src/libgdbus/dbus-system.h @@ -104,7 +104,8 @@ int dbus_handle_method_sync_var (const char *dest, const char *path, const char *iface, const char *method, - GVariant *param); + GVariant *param, + int *output); int dbus_handle_method_async_var (const char *dest, const char *path, @@ -139,11 +140,12 @@ int dbus_handle_method_sync_with_reply_var_timeout (const char *dest, gint* dbus_handle_get_unix_fd_list (GDBusMethodInvocation *invocation, int *size); -GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, +int dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param, + GVariant **reply, int *in_fdlist, int in_size, int **out_fdlist,