LoaderManager::GetInst().FindLoaderContextFromPid(caller_pid);
if (loader_context == nullptr) {
_E("Failed to find loader context. pid(%d)", caller_pid);
+ request->SendResult(-ENOENT);
return;
}
loader_context->Dispose();
_W("[PAD_CMD_DISPOSE_LOADER] loader_name: %s, pid: %d",
loader_context->GetLoaderName().c_str(), caller_pid);
+ request->SendResult(0);
}
void Launchpad::OnIOEventReceived(int fd, int condition) {
* The launchpad will dispose the loader process using kill().
* @since_tizen 7.0
*
+ * @return @c on success,
+ * otherwise a negative error value
* @see launchpad_loader_main();
*/
-void launchpad_loader_dispose(void);
+int launchpad_loader_dispose(void);
#ifdef __cplusplus
}
return app_info_.GetBundle();
}
-void LaunchpadLoader::SendDisposalRequest() {
- int fd = aul_sock_create_launchpad_client(kLaunchpadProcessPoolSock,
- getuid());
- if (fd < 0) {
- _E("Failed to create launchpad client socket. error(%d)", fd);
- return;
- }
-
- tizen_base::Bundle b;
- int ret = aul_sock_send_bundle_with_fd(fd,
- static_cast<int>(PadCmd::DisposeLoader), b.GetHandle(), AUL_SOCK_NOREPLY);
- if (ret != AUL_R_OK)
- _E("Failed to send disposal request. error(%d)", ret);
-}
-
void LaunchpadLoader::ResetArgs() {
memset(argv_[LoaderArg::Type], 0, strlen(argv_[LoaderArg::Type]));
memset(argv_[LoaderArg::Id], 0, strlen(argv_[LoaderArg::Id]));
return ThreadControl::GetInst().UnblockThreads();
}
-extern "C" EXPORT_API void launchpad_loader_dispose(void) {
- if (!::context) {
- _E("Invalid context");
- return;
+extern "C" EXPORT_API int launchpad_loader_dispose(void) {
+ int fd =
+ aul_sock_create_launchpad_client(kLaunchpadProcessPoolSock, getuid());
+ if (fd < 0) {
+ _E("Failed to create launchpad client socket. error(%d)", fd);
+ return -ECOMM;
+ }
+
+ tizen_base::Bundle b;
+ int ret =
+ aul_sock_send_bundle_with_fd(fd, static_cast<int>(PadCmd::DisposeLoader),
+ b.GetHandle(), AUL_SOCK_NONE);
+ if (ret != AUL_R_OK) {
+ _E("Failed to send disposal request. error(%d)", ret);
+ return ret;
}
- _W("Dispose");
- ::context->SendDisposalRequest();
+ _W("Success to send disposal request");
+ return 0;
}