dbus: remove inappropriate usage of gdbus proxy 48/186748/5 accepted/tizen/unified/20180814.175032 submit/tizen/20180814.071409
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Tue, 14 Aug 2018 05:03:22 +0000 (14:03 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Tue, 14 Aug 2018 07:11:21 +0000 (07:11 +0000)
Change-Id: Ief812a5cf282fb2113e18fea7e5dde19c52b8ba1
Signed-off-by: sanghyeok.oh <sanghyeok.oh@samsung.com>
src/power/boot.c
src/shared/deviced-systemd.c
src/shared/deviced-systemd.h

index e6e95b5..a7e6638 100644 (file)
 
 int booting_finished(void)
 {
-       char *state;
-       int ret;
+       char *state = NULL;
+       int ret = 0;
        size_t len;
+       GVariant *reply = NULL;
 
-       ret = deviced_systemd_get_manager_property_as_string(
-                       SYSTEMD_DBUS_IFACE_MANAGER,
-                       SYSTEMD_DBUS_METHOD_SYSTEM_STATE,
-                       &state);
-       if (ret < 0) {
-               _E("Failed to get System State (%d)", ret);
-               return ret;
+       reply = deviced_systemd_get_manager_property(SYSTEMD_DBUS_METHOD_SYSTEM_STATE);
+       if (!reply) {
+               _E("Failed to get System State: no reply");
+               goto err;
+       }
+       if (!dh_get_param_from_var(reply, "s", &state)) {
+               _E("Failed to get System State %s", g_variant_get_type_string(reply));
+               goto err;
        }
 
        _I("System State: (%s)", state);
@@ -60,6 +62,9 @@ int booting_finished(void)
        else
                ret = 0;
 
+err:
+       if (reply)
+               g_variant_unref(reply);
        free(state);
 
        return ret;
index d4a85b1..67da906 100644 (file)
@@ -110,46 +110,48 @@ static int deviced_systemd_proxy_call_sync(const char *name,
 
 static int deviced_systemd_start_or_stop_unit(char *method, char *name)
 {
-       int ret;
        GVariant *reply = NULL;
+       gchar *objpath = NULL;
+       int ret = 0;
 
        _I("Starting: %s %s", method, name);
-       ret = deviced_systemd_proxy_call_sync(SYSTEMD_DBUS_DEST,
-                                             SYSTEMD_DBUS_PATH,
-                                             SYSTEMD_DBUS_IFACE_MANAGER,
-                                             method,
-                                             g_variant_new("(ss)",
-                                                           name,
-                                                           "replace"),
-                                             &reply);
-       if (ret < 0)
-               goto finish;
-
-       if (!g_variant_is_of_type(reply, G_VARIANT_TYPE("(o)"))) {
+       reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST,
+                                       SYSTEMD_DBUS_PATH,
+                                       SYSTEMD_DBUS_IFACE_MANAGER,
+                                       method,
+                                       g_variant_new("(ss)", name, "replace"));
+
+       if (!reply || !dh_get_param_from_var(reply, "(o)", &objpath)) {
+               _E("fail (%s): no message", method);
                ret = -EBADMSG;
                goto finish;
        }
 
-       ret = 0;
+       _I("Finished: %s %s", method, name);
 finish:
-       _I("Finished(%d): %s %s", ret, method, name);
-
        if (reply)
                g_variant_unref(reply);
+       g_free(objpath);
 
        return ret;
 }
 
 int deviced_systemd_start_unit(char *name)
 {
-       assert(name);
+       if (name == NULL) {
+               _E("Wrong name : %s", name);
+               return -1;
+       }
 
        return deviced_systemd_start_or_stop_unit("StartUnit", name);
 }
 
 int deviced_systemd_stop_unit(char *name)
 {
-       assert(name);
+       if (name == NULL) {
+               _E("Wrong name : %s", name);
+               return -1;
+       }
 
        return deviced_systemd_start_or_stop_unit("StopUnit", name);
 }
@@ -200,129 +202,136 @@ static char *deviced_systemd_get_unit_dbus_path(const char *unit)
        return path;
 }
 
-static int deviced_systemd_get_property(const char *name,
+static GVariant * deviced_systemd_get_property(const char *name,
                                        const char *path,
                                        const char *iface,
                                        const char *method,
                                        const char *interface,
-                                       const char *property,
-                                       GVariant **reply)
+                                       const char *property)
 {
+       GVariant *reply;
        int ret;
-       GVariant *variant;
 
-       variant = g_variant_new("(ss)",
-                               interface,
-                               property);
+       reply = dbus_handle_method_sync_with_reply_var(name,
+                                       path,
+                                       iface,
+                                       method,
+                                       g_variant_new("(ss)", interface, property));
 
-       ret = deviced_systemd_proxy_call_sync(name,
-                                             path,
-                                             iface,
-                                             method,
-                                             variant,
-                                             reply);
-
-       return ret;
+       return reply;
 }
 
-int deviced_systemd_get_manager_property(const char *iface,
-                                        const char *property,
-                                        GVariant **variant)
+GVariant * deviced_systemd_get_manager_property(const char *property)
 {
-       assert(iface);
+       GVariant *reply = NULL;
+       GVariant *val = NULL;
+
        assert(property);
 
-       return deviced_systemd_get_property(SYSTEMD_DBUS_DEST,
-                                           SYSTEMD_DBUS_PATH,
-                                           DBUS_IFACE_DBUS_PROPERTIES,
-                                           "Get",
-                                           iface,
-                                           property,
-                                           variant);
+       reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST,
+                                       SYSTEMD_DBUS_PATH,
+                                       DBUS_IFACE_DBUS_PROPERTIES,
+                                       "Get",
+                                       g_variant_new("(ss)", SYSTEMD_DBUS_IFACE_MANAGER, property));
+       if (!reply || !dh_get_param_from_var(reply, "(v)", &val))
+               _E("Failed to get variant");
+       if (reply)
+               g_variant_unref(reply);
+
+       return val;
 }
 
-int deviced_systemd_get_unit_property(const char *unit,
-                                     const char *property,
-                                     GVariant **variant)
+GVariant * deviced_systemd_get_unit_property(const char *unit,
+                                     const char *property)
 {
-       int r;
        char *escaped;
+       GVariant * reply = NULL;
+       GVariant *val = NULL;
 
        assert(unit);
        assert(property);
 
        escaped = deviced_systemd_get_unit_dbus_path(unit);
 
-       r = deviced_systemd_get_property(SYSTEMD_DBUS_DEST,
-                                        escaped,
-                                        DBUS_IFACE_DBUS_PROPERTIES,
-                                        "Get",
-                                        SYSTEMD_DBUS_IFACE_UNIT,
-                                        property,
-                                        variant);
+       reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST,
+                                       escaped,
+                                       DBUS_IFACE_DBUS_PROPERTIES,
+                                       "Get",
+                                       g_variant_new("(ss)", SYSTEMD_DBUS_IFACE_UNIT, property));
+
+       if (!reply || !dh_get_param_from_var(reply, "(v)", &val))
+               _E("Failed to get variant");
+       if (reply)
+               g_variant_unref(reply);
        free(escaped);
-       return r;
+
+       return val;
 }
 
-int deviced_systemd_get_service_property(const char *unit,
-                                        const char *property,
-                                        GVariant **variant)
+GVariant * deviced_systemd_get_service_property(const char *unit,
+                                        const char *property)
 {
        int ret;
        char *escaped;
+       GVariant * reply = NULL;
+       GVariant *val = NULL;
 
        assert(unit);
        assert(property);
 
        escaped = deviced_systemd_get_unit_dbus_path(unit);
 
-       ret = deviced_systemd_get_property(SYSTEMD_DBUS_DEST,
-                                          escaped,
-                                          DBUS_IFACE_DBUS_PROPERTIES,
-                                          "Get",
-                                          SYSTEMD_DBUS_IFACE_SERVICE,
-                                          property,
-                                          variant);
+       reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST,
+                                       escaped,
+                                       DBUS_IFACE_DBUS_PROPERTIES,
+                                       "Get",
+                                       g_variant_new("(ss)", SYSTEMD_DBUS_IFACE_SERVICE, property));
+       if (!reply || !dh_get_param_from_var(reply, "(v)", &val))
+               _E("Failed to get variant");
+       if (reply)
+               g_variant_unref(reply);
        free(escaped);
-       return ret;
+       return val;
 }
 
+#if 0
 #define DEFINE_SYSTEMD_GET_PROPERTY(iface, type, value)                        \
        int deviced_systemd_get_##iface##_property_as_##type(           \
-                       const char *target,                             \
-                       const char *property,                           \
-                       value*result)                                   \
-       {                                                               \
-                                                                       \
-               GVariant *var;                                          \
-               GVariant *inner;                                        \
-               int r;                                                  \
-                                                                       \
-               r = deviced_systemd_get_##iface##_property(target,      \
-                                                          property,    \
-                                                          &var);       \
-               if (r < 0) {                                            \
-                       _E("Failed to get property:\n"                  \
-                          "  target: %s\n"                             \
-                          "  property: %s",                            \
-                          target, property);                           \
-                       return r;                                       \
-               }                                                       \
-                                                                       \
-               if (!g_variant_is_of_type(var,                          \
-                                         G_VARIANT_TYPE("(v)")))       \
-                       return -EBADMSG;                                \
-                                                                       \
-               g_variant_get(var, "(v)", &inner);                      \
-               if (!g_variant_is_of_type(inner,                        \
-                                         g_variant_type_##type))       \
-                       return -EBADMSG;                                \
-                                                                       \
-               *result = g_variant_get_function_##type(inner);         \
-               g_variant_unref(var);                                   \
-                                                                       \
-               return 0;                                               \
-       }
+       const char *target,                             \
+       const char *property,                           \
+       value*result)                                   \
+{                                                              \
+       \
+       GVariant *var;                                          \
+       GVariant *inner;                                        \
+       int r;                                                  \
+       \
+       r = deviced_systemd_get_##iface##_property(target,      \
+       property,       \
+       &var);  \
+       if (r < 0) {                                            \
+       _E("Failed to get property:\n"                  \
+       "  target: %s\n"                                \
+       "  property: %s",                               \
+       target, property);                              \
+       return r;                                       \
+       }                                                       \
+       \
+       if (!g_variant_is_of_type(var,                          \
+       G_VARIANT_TYPE("(v)"))) \
+       return -EBADMSG;                                \
+       \
+       g_variant_get(var, "(v)", &inner);                      \
+       if (!g_variant_is_of_type(inner,                        \
+       g_variant_type_##type)) \
+       return -EBADMSG;                                \
+       \
+       *result = g_variant_get_function_##type(inner);         \
+       g_variant_unref(var);                                   \
+       \
+       return 0;                                               \
+}
+
 
 /* int deviced_systemd_get_manager_property_as_int32(const char *iface, const char *property, int *result); */
 DEFINE_SYSTEMD_GET_PROPERTY(manager, int32, int)
@@ -404,3 +413,4 @@ finish:
 
        return r;
 }
+#endif
index 7fc46af..715bb46 100644 (file)
 int deviced_systemd_start_unit(char *name);
 int deviced_systemd_stop_unit(char *name);
 
-int deviced_systemd_get_manager_property(const char *iface, const char *property, GVariant **variant);
-int deviced_systemd_get_unit_property(const char *unit, const char *property, GVariant **variant);
-int deviced_systemd_get_service_property(const char* unit, const char* property, GVariant **variant);
+GVariant * deviced_systemd_get_manager_property(const char *property);
+GVariant * deviced_systemd_get_unit_property(const char *unit, const char *property);
+GVariant * deviced_systemd_get_service_property(const char* unit, const char* property);
+#if 0
 
 int deviced_systemd_get_manager_property_as_int32(const char *iface, const char *property, int *result);
 int deviced_systemd_get_manager_property_as_uint32(const char *iface, const char *property, unsigned int *result);
@@ -57,5 +58,6 @@ int deviced_systemd_get_service_property_as_uint64(const char *unit, const char
 int deviced_systemd_get_service_property_as_string(const char *unit, const char *property, char **result);
 
 int deviced_systemd_instance_new_from_template(const char *template, const char *instance, const char **name);
+#endif
 
 #endif