int aul_subapp_terminate_request(const char *instance_id, int pid);
int aul_send_resume_request_for_uid(const char *appid, bundle *b, uid_t uid,
void (*error_cb)(int, void *), void *user_data);
+void aul_set_instance_info(const char *app_id, bundle *kb);
#include <glib.h>
#include <gio/gio.h>
#include <bundle_internal.h>
+#include <uuid.h>
#include "aul.h"
#include "aul_api.h"
#include "aul_error.h"
#include "aul_sock.h"
#include "aul_svc.h"
+#include "aul_svc_priv_key.h"
#include "aul_util.h"
#include "launch.h"
return AUL_R_OK;
}
+void aul_set_instance_info(const char *app_id, bundle *kb)
+{
+ const char *component_id;
+ char buf[1024];
+ char uuid[37];
+ uuid_t u;
+
+ uuid_generate(u);
+ uuid_unparse(u, uuid);
+
+ component_id = bundle_get_val(kb, AUL_K_COMPONENT_ID);
+ if (component_id) {
+ snprintf(buf, sizeof(buf), "%s:%s:%s",
+ uuid, app_id, component_id);
+ } else {
+ snprintf(buf, sizeof(buf), "%s:%s", uuid, app_id);
+ }
+
+ bundle_del(kb, AUL_K_INSTANCE_ID);
+ bundle_add(kb, AUL_K_INSTANCE_ID, buf);
+}
+
API int aul_forward_app(const char* pkgname, bundle *kb)
{
int ret;
bundle *dupb;
bundle *outb;
char tmp_pid[MAX_PID_STR_BUFSZ];
+ const char *launch_mode;
if (pkgname == NULL || kb == NULL)
return AUL_R_EINVAL;
bundle_del(kb, AUL_SVC_K_REROUTE);
bundle_del(kb, AUL_SVC_K_RECYCLE);
+ launch_mode = bundle_get_val(kb, AUL_SVC_K_LAUNCH_MODE);
+ if (launch_mode && !strcmp(launch_mode, "group"))
+ aul_set_instance_info(pkgname, kb);
+
dupb = bundle_dup(kb);
if (dupb == NULL) {
_E("bundle duplicate fail");
__remove_rescb(cb_info);
}
-static void __set_instance_id(bundle *b, const char *appid)
-{
- const char *comp_id;
- char buf[1024];
- char uuid[37];
- uuid_t u;
-
- uuid_generate(u);
- uuid_unparse(u, uuid);
-
- comp_id = bundle_get_val(b, AUL_K_COMPONENT_ID);
- if (comp_id)
- snprintf(buf, sizeof(buf), "%s:%s:%s", uuid, appid, comp_id);
- else
- snprintf(buf, sizeof(buf), "%s:%s", uuid, appid);
-
- bundle_add(b, AUL_K_INSTANCE_ID, buf);
-}
-
static void __verify_request(bundle *b, char **appid)
{
const char *launch_mode;
if (launch_mode && !strcmp(launch_mode, "group")) {
ret = bundle_get_type(b, AUL_K_INSTANCE_ID);
if (ret == BUNDLE_TYPE_NONE)
- __set_instance_id(b, *appid);
+ aul_set_instance_info(*appid, b);
}
}