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);
}
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)
return r;
}
+#endif