Libsyscommon does not provide neccessary control over dbus calls, e.g.
makes it hard to select a bus to connect to.
Change-Id: I79bab3bcc7d26bd4f68a6ab5ca58225081259581
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
-fPIE \
-rdynamic \
$(GLIB_CFLAGS) \
+ $(GIO_CFLAGS) \
$(VCONF_CFLAGS) \
-D"EPC_MODNAME_T=$(call name_fix,$(modname))"
unit_control_api_config_DATA = org.tizen.Activationd.conf
unit_control_api_configdir = /etc/dbus-1/system.d/
-actd_LDADD = $(LIBSYSTEMD_LIBS) $(GLIB_LIBS) $(JSON_C_LIBS)
+actd_LDADD = $(LIBSYSTEMD_LIBS) $(GLIB_LIBS) $(GIO_LIBS) $(JSON_C_LIBS)
actdevelincludedir = $(includedir)/epc
actdevelinclude_HEADERS = \
lib_LTLIBRARIES = libactd.la
libactd_la_SOURCES = src/libactd/unit_control.c
libactd_la_LDFLAGS = -pie -shared
-libactd_la_LIBADD = $(SYSCOMMON_LIBS)
-libactd_la_CFLAGS = $(AM_CFLAGS) $(SYSCOMMON_CFLAGS)
+libactd_la_LIBADD = $(GLIB_LIBS) $(GIO_LIBS)
+libactd_la_CFLAGS = $(AM_CFLAGS) $(GLIB_CFLAGS) $(GIO_CFLAGS)
libactd_includedir = $(includedir)/actd
libactd_include_HEADERS = include/unit_control.h
AS_IF([test "x$have_libsystemd" = "xno"],
AC_MSG_ERROR([libsystemd version 221 or newer not found]))
-AS_IF([test "x$enable_glib_mainloop" = xyes],
- [PKG_CHECK_MODULES(GLIB,
+PKG_CHECK_MODULES(GLIB,
[glib-2.0],
have_glib=yes,
have_glib=no)
AS_IF([test "x$have_glib" = "xno"],
- AC_MSG_ERROR([glib not found]))])
+ AC_MSG_ERROR([glib not found]))
+
+PKG_CHECK_MODULES(GIO,
+ [gio-2.0],
+ have_gio=yes,
+ have_gio=no)
+ AS_IF([test "x$have_gio" = "xno"],
+ AC_MSG_ERROR([gio not found]))
PKG_CHECK_MODULES(JSON_C,
[json-c],
AS_IF([test "x$have_vconf" = "xno"],
AC_MSG_ERROR([vconf not found]))
-PKG_CHECK_MODULES(SYSCOMMON,
- [libsyscommon],
- have_syscommon=yes,
- have_syscommon=no)
-AS_IF([test "x$have_syscommon" = "xno"],
- AC_MSG_ERROR([syscommon not found]))
-
AC_CHECK_FUNCS([ \
printf\
])
#include <glib.h>
#include <glib/gi18n.h>
+#include <gio/gio.h>
typedef void (*actd_unit_cb)(GVariant *var, void *user_data, GError *err);
-int actd_start_unit(const char *unit);
-int actd_stop_unit(const char *unit);
-int actd_restart_unit(const char *unit);
+int actd_start_unit(GBusType bus_type, const char *unit);
+int actd_stop_unit(GBusType bus_type, const char *unit);
+int actd_restart_unit(GBusType bus_type, const char *unit);
-int actd_start_unit_async(const char *unit, actd_unit_cb cb, void *user_data);
-int actd_stop_unit_async(const char *unit, actd_unit_cb cb, void *user_data);
-int actd_restart_unit_async(const char *unit, actd_unit_cb cb, void *user_data);
+int actd_start_unit_async(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data);
+int actd_stop_unit_async(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data);
+int actd_restart_unit_async(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data);
#endif /* UNIT_CONTROL_H */
%package -n libactd
Summary: Activationd API
Group: Development/Libraries
-BuildRequires: pkgconfig(libsyscommon)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(dlog)
%description -n libactd
* limitations under the License.
*/
-#include <libsyscommon/dbus-system.h>
+#include <glib.h>
+#include <gio/gio.h>
#include <errno.h>
#include "unit_control.h"
#define UNIT_CONTROL_INTERFACE "org.tizen.Activationd"
#define UNIT_CONTROL_OBJ_PATH "/org/tizen/activationd"
-static int call_uc(const char *method, const char *unit)
+static int call_uc(GBusType bus_type, const char *method, const char *unit)
{
int ret;
GVariant *msg = NULL;
+ GDBusConnection *bus;
const char *result;
- msg = dbus_handle_method_sync_with_reply_var(UNIT_CONTROL_NAME,
+ bus = g_bus_get_sync(bus_type, NULL, NULL);
+ if (!bus)
+ return -1;
+
+ msg = g_dbus_connection_call_sync(bus,
+ UNIT_CONTROL_NAME,
UNIT_CONTROL_OBJ_PATH,
UNIT_CONTROL_INTERFACE,
method,
- g_variant_new("(s)", unit));
-
+ g_variant_new("(s)", unit),
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ NULL);
if (!msg)
return -EBADMSG;
return ret;
}
-static int call_uc_async(const char *method, const char *unit, actd_unit_cb cb, void *user_data)
+static int call_uc_async(GBusType bus_type, const char *method, const char *unit, actd_unit_cb cb, void *user_data)
{
- return dbus_handle_method_async_with_reply_var(UNIT_CONTROL_NAME,
+ GDBusConnection *bus;
+
+ bus = g_bus_get_sync(bus_type, NULL, NULL);
+ if (!bus)
+ return -1;
+
+ g_dbus_connection_call(bus,
+ UNIT_CONTROL_NAME,
UNIT_CONTROL_OBJ_PATH,
UNIT_CONTROL_INTERFACE,
method,
g_variant_new("(s)", unit),
- cb,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
-1,
- user_data);
+ NULL,
+ (GAsyncReadyCallback) cb,
+ NULL);
+
+ return 0;
}
-int actd_start_unit(const char *unit)
+int actd_start_unit(GBusType bus_type, const char *unit)
{
- return call_uc("Start", unit);
+ return call_uc(bus_type, "Start", unit);
}
-int actd_stop_unit(const char *unit)
+int actd_stop_unit(GBusType bus_type, const char *unit)
{
- return call_uc("Stop", unit);
+ return call_uc(bus_type, "Stop", unit);
}
-int actd_restart_unit(const char *unit)
+int actd_restart_unit(GBusType bus_type, const char *unit)
{
- return call_uc("Restart", unit);
+ return call_uc(bus_type, "Restart", unit);
}
-int actd_start_unit_async(const char *unit, actd_unit_cb cb, void *user_data)
+int actd_start_unit_async(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data)
{
- return call_uc_async("Start", unit, cb, user_data);
+ return call_uc_async(bus_type, "Start", unit, cb, user_data);
}
-int actd_stop_unit_async(const char *unit, actd_unit_cb cb, void *user_data)
+int actd_stop_unit_async(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data)
{
- return call_uc_async("Stop", unit, cb, user_data);
+ return call_uc_async(bus_type, "Stop", unit, cb, user_data);
}
-int actd_restart_unit_async(const char *unit, actd_unit_cb cb, void *user_data)
+int actd_restart_unit_async(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data)
{
- return call_uc_async("Restart", unit, cb, user_data);
+ return call_uc_async(bus_type, "Restart", unit, cb, user_data);
}
static const char *async_result = NULL;
+#define TEST_SERVICE "activationd-acceptance-test-s-p.service"
+
+
int test_unit_start()
{
- return actd_start_unit("foo.bar");
+ return actd_start_unit(G_BUS_TYPE_SYSTEM, TEST_SERVICE);
}
int test_unit_stop()
{
- return actd_stop_unit("foo.bar");
+ return actd_stop_unit(G_BUS_TYPE_SYSTEM, TEST_SERVICE);
}
int test_unit_restart()
{
- return actd_restart_unit("foo.bar");
+ return actd_restart_unit(G_BUS_TYPE_SYSTEM, TEST_SERVICE);
}
void handler(GVariant *var, void *user_data, GError *err)
g_main_loop_quit(user_data);
}
-int test_async_action(int (*func)(const char *unit, actd_unit_cb cb, void *user_data))
+int test_async_action(int (*func)(GBusType bus_type, const char *unit, actd_unit_cb cb, void *user_data))
{
assert(func);
int ret;
loop = g_main_loop_new(NULL, FALSE);
- ret = func("foo.bar", handler, loop);
+ ret = func(G_BUS_TYPE_SYSTEM, TEST_SERVICE, handler, loop);
if (ret < 0)
return ret;