summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Stelmach <l.stelmach@samsung.com>2018-04-26 10:03:50 +0200
committerŁukasz Stelmach <l.stelmach@samsung.com>2018-05-09 12:13:36 +0200
commitb55d6debed3c3f149ac15603b0a6eff0a833cbf9 (patch)
tree6130b00c90ff112f9497cb286919ec9f1f5ded8e
parentfa770a1520134c0271bf3839c87b9719ffba026a (diff)
downloadaul-1-sandbox/lstelmach/proc-exclude-sync.tar.gz
aul-1-sandbox/lstelmach/proc-exclude-sync.tar.bz2
aul-1-sandbox/lstelmach/proc-exclude-sync.zip
wip: ProcExclude signal/methodsandbox/lstelmach/proc-exclude-sync
Change-Id: I0cf01288b25498cf8aa5ee0b3f882b192ac55cc0
-rw-r--r--include/app_signal.h1
-rw-r--r--src/app_signal.c79
2 files changed, 67 insertions, 13 deletions
diff --git a/include/app_signal.h b/include/app_signal.h
index 9df5b23b..aab4cb54 100644
--- a/include/app_signal.h
+++ b/include/app_signal.h
@@ -46,6 +46,7 @@
#define TEP_UNMOUNT_METHOD "Unmount"
#define TEP_IS_MOUNTED_METHOD "IsMounted"
+#define RESOURCED_DBUS_BUS_NAME "org.tizen.resourced"
#define RESOURCED_PROC_PATH "/Org/Tizen/ResourceD/Process"
#define RESOURCED_PROC_INTERFACE "org.tizen.resourced.process"
#define RESOURCED_PROC_STATUS_SIGNAL "ProcStatus"
diff --git a/src/app_signal.c b/src/app_signal.c
index d9b29c36..18cbd34d 100644
--- a/src/app_signal.c
+++ b/src/app_signal.c
@@ -298,10 +298,12 @@ API int aul_listen_app_status_signal(int (*func)(int, int, void *),
return AUL_R_OK;
}
-static int __system_dbus_send_signal(const char *object_path,
+static int __system_dbus_send_message(const char *destination,
+ const char *object_path,
const char *interface_name,
- const char *signal_name,
- GVariant *parameters)
+ const char *message_name,
+ GVariant *parameters,
+ gboolean sync)
{
GError *err = NULL;
GDBusConnection *conn;
@@ -314,16 +316,40 @@ static int __system_dbus_send_signal(const char *object_path,
return AUL_R_ERROR;
}
- if (g_dbus_connection_emit_signal(conn,
- NULL,
- object_path,
- interface_name,
- signal_name,
- parameters,
- &err) == FALSE) {
- _E("g_dbus_connection_emit_signal() is failed. %s",
- err->message);
- ret = AUL_R_ERROR;
+ if (sync) {
+ GVariant *result;
+ result = g_dbus_connection_call_sync(conn,
+ destination,
+ object_path,
+ interface_name,
+ message_name,
+ parameters,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &err);
+ if (result) {
+ g_variant_unref(result);
+ ret = AUL_R_OK;
+ } else {
+ ret = AUL_R_ERROR;
+ }
+ } else {
+ ret = (g_dbus_connection_emit_signal(conn,
+ NULL,
+ object_path,
+ interface_name,
+ message_name,
+ parameters,
+ &err) == FALSE) ? AUL_R_ERROR : AUL_R_OK;
+
+ }
+
+ if (ret == AUL_R_ERROR) {
+ _E("%s is failed. %s",
+ sync ? "g_dbus_connection_call_sync()" : "g_dbus_connection_emit_signal()",
+ err->message);
goto end;
}
@@ -342,6 +368,33 @@ end:
return ret;
}
+static inline int __system_dbus_send_call(const char *destination,
+ const char *object_path,
+ const char *interface_name,
+ const char *signal_name,
+ GVariant *parameters)
+{
+ return __system_dbus_send_message(destination,
+ object_path,
+ interface_name,
+ signal_name,
+ parameters,
+ TRUE);
+}
+
+static inline int __system_dbus_send_signal(const char *object_path,
+ const char *interface_name,
+ const char *signal_name,
+ GVariant *parameters)
+{
+ return __system_dbus_send_message(NULL,
+ object_path,
+ interface_name,
+ signal_name,
+ parameters,
+ FALSE);
+}
+
API int aul_update_freezer_status(int pid, const char *type)
{
int ret;