Change dbus handle method functions 21/254521/5
authortaemin.yeom <taemin.yeom@samsung.com>
Thu, 4 Mar 2021 06:20:57 +0000 (15:20 +0900)
committertaemin.yeom <taemin.yeom@samsung.com>
Thu, 4 Mar 2021 08:35:27 +0000 (17:35 +0900)
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 <taemin.yeom@samsung.com>
src/libgdbus/dbus-system.c
src/libgdbus/dbus-system.h

index 8c7197caa878a9a7ae1cb0ab7eae7e208f6b9290..fdf1859fb4444bdc8b335024b2752053b8574b21 100644 (file)
@@ -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,
index c36751034546cde1a1cc9b55f453a54f08eed754..0b831da7f48d420ef07f380c1fa22d9c63ced3ac 100644 (file)
@@ -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,