return NULL;
}
-static int __send_signal_for_app_event(pkgmgr_installer *pi, const char *pkg_type,
- const char *pkgid, const char *appid, const char *key, const char *val)
-{
- char *sid;
- const char *name;
- GError *err = NULL;
-
- if (!pi || pi->conn == NULL || appid == NULL)
- return -1;
-
- sid = pi->session_id;
- if (!sid)
- sid = "";
-
- name = __get_signal_name(pi, key);
- if (name == NULL) {
- ERR("unknown signal type");
- return -1;
- }
-
- if (g_dbus_connection_emit_signal(pi->conn, NULL,
- PKGMGR_INSTALLER_DBUS_OBJECT_PATH,
- PKGMGR_INSTALLER_DBUS_INTERFACE, name,
- g_variant_new("(ussssss)", pi->target_uid, sid,
- pkg_type, pkgid, appid, key, val), &err)
- != TRUE) {
- ERR("failed to send dbus signal: %s", err->message);
- g_error_free(err);
- return -1;
- }
-
- return 0;
-}
-
static int __send_signal_for_event(pkgmgr_installer *pi, const char *pkg_type,
- const char *pkgid, const char *key, const char *val)
+ const char *pkgid, const char *appid, const char *key,
+ const char *val)
{
char *sid;
const char *name;
PKGMGR_INSTALLER_DBUS_OBJECT_PATH,
PKGMGR_INSTALLER_DBUS_INTERFACE, name,
g_variant_new("(ussssss)", pi->target_uid, sid,
- pkg_type, pkgid, "", key, val), &err)
+ pkg_type, pkgid, appid ? appid : "",
+ key, val), &err)
!= TRUE) {
ERR("failed to send dbus signal: %s", err->message);
g_error_free(err);
return 0;
}
-/* TODO: it should be refactored */
-static int __send_app_signal_for_event_for_uid(pkgmgr_installer *pi, uid_t uid,
+static int __send_signal_for_event_for_uid(pkgmgr_installer *pi, uid_t uid,
const char *pkg_type, const char *pkgid, const char *appid,
const char *key, const char *val)
{
data_len += name_size;
gv = g_variant_new("(ussssss)", pi->target_uid, sid,
- pkg_type, pkgid, appid, key, val);
- gv_len = g_variant_get_size(gv);
- gv_data = g_malloc(gv_len);
- g_variant_store(gv, gv_data);
- g_variant_unref(gv);
- data_len += gv_len;
-
- data = malloc(data_len);
- ptr = data;
- memcpy(ptr, &name_size, sizeof(size_t));
- ptr += sizeof(size_t);
- memcpy(ptr, &gv_len, sizeof(gsize));
- ptr += sizeof(gsize);
- memcpy(ptr, name, name_size);
- ptr += name_size;
- memcpy(ptr, gv_data, gv_len);
-
- if (__send_signal_to_agent(uid, data, data_len)) {
- ERR("failed to send signal to agent");
- g_free(data);
- return -1;
- }
-
- g_free(gv_data);
- free(data);
-
- return 0;
-}
-
-/* TODO: it should be refactored */
-static int __send_signal_for_event_for_uid(pkgmgr_installer *pi, uid_t uid,
- const char *pkg_type, const char *pkgid,
- const char *key, const char *val)
-{
- char *sid;
- const char *name;
- size_t name_size;
- GVariant *gv;
- gsize gv_len;
- gpointer gv_data;
- void *data;
- void *ptr;
- size_t data_len;
-
- if (!pi || pi->conn == NULL)
- return -1;
-
- sid = pi->session_id;
- if (!sid)
- sid = "";
-
- data_len = sizeof(size_t) + sizeof(gsize);
-
- name = __get_signal_name(pi, key);
- if (name == NULL) {
- ERR("unknown signal type");
+ pkg_type, pkgid, appid ? appid : "", key, val);
+ if (gv == NULL) {
+ ERR("failed to create GVariant instance");
return -1;
}
- /* including null byte */
- name_size = strlen(name) + 1;
- data_len += name_size;
-
- gv = g_variant_new("(ussssss)", pi->target_uid, sid,
- pkg_type, pkgid, "", key, val);
gv_len = g_variant_get_size(gv);
gv_data = g_malloc(gv_len);
g_variant_store(gv, gv_data);
const char *val)
{
int ret = 0;
- ret = __send_signal_for_event(pi, pkg_type, pkgid,
+ ret = __send_signal_for_event(pi, pkg_type, pkgid, NULL,
PKGMGR_INSTALLER_APPID_KEY_STR, val);
return ret;
}
return -1;
}
- r = __send_signal_for_app_event(pi, pkg_type, pkgid, appid, key, val);
+ r = __send_signal_for_event(pi, pkg_type, pkgid, appid, key, val);
return r;
}
strcmp(val, PKGMGR_INSTALLER_UPGRADE_EVENT_STR) == 0)
pi->request_type = PKGMGR_REQ_UPGRADE;
- r = __send_signal_for_event(pi, pkg_type, pkgid, key, val);
+ r = __send_signal_for_event(pi, pkg_type, pkgid, NULL, key, val);
return r;
}
return -1;
}
- r = __send_app_signal_for_event_for_uid(pi, uid, pkg_type, pkgid, appid, key, val);
+ r = __send_signal_for_event_for_uid(pi, uid, pkg_type, pkgid, appid,
+ key, val);
return r;
}
strcmp(val, PKGMGR_INSTALLER_UPGRADE_EVENT_STR) == 0)
pi->request_type = PKGMGR_REQ_UPGRADE;
- r = __send_signal_for_event_for_uid(pi, uid, pkg_type, pkgid, key, val);
+ r = __send_signal_for_event_for_uid(pi, uid, pkg_type, pkgid, NULL,
+ key, val);
return r;
}