{ PadCmd::KillLoader,
std::bind(&Launchpad::HandleKillLoaderRequest, this,
std::placeholders::_1) },
+ { PadCmd::RestartLoader,
+ std::bind(&Launchpad::HandleRestartLoaderRequest, this,
+ std::placeholders::_1) },
};
CPUBoostController::Level level;
_D("[PAD_CMD_KILL_LOADER] loader_name: %s", loader_name.c_str());
}
+void Launchpad::HandleRestartLoaderRequest(std::shared_ptr<Request> request) {
+ auto& b = request->GetBundle();
+ auto loader_name = b.GetString(kAulLoaderName);
+ auto loader_context =
+ LoaderManager::GetInst().FindLoaderContextFromName(loader_name);
+ if (loader_context == nullptr) {
+ _E("Failed to find loader context. loader_name(%s)", loader_name.c_str());
+ return;
+ }
+
+ if (loader_context->RefCount() == 0)
+ loader_context->Dispose();
+
+ if (loader_context->GetPid() < 1)
+ loader_context->Prepare();
+
+ _D("[PAD_CMD_RESTART_LOADER] loader_name: %s, pid: %d",
+ loader_name.c_str(), loader_context->GetPid());
+}
+
void Launchpad::OnIOEventReceived(int fd, int condition) {
auto client_socket = socket_->Accept();
if (!client_socket) {
void HandleConnectRequest(std::shared_ptr<Request> request);
void HandleLaunchRequest(std::shared_ptr<Request> request);
void HandleKillLoaderRequest(std::shared_ptr<Request> request);
+ void HandleRestartLoaderRequest(std::shared_ptr<Request> request);
bool CanUseLoaderContext(const std::shared_ptr<LoaderContext>& context);
LaunchResult ForkProcessing(std::shared_ptr<Request> request);