From: Hwankyu Jhun Date: Wed, 30 Aug 2023 04:39:43 +0000 (+0900) Subject: Handle restart request X-Git-Tag: accepted/tizen/unified/20230831.081036~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2dde3302007ef8fa63c754f8a86339e87884f098;p=platform%2Fcore%2Fappfw%2Flaunchpad.git Handle restart request Some platform developer wants to restart the loader process directly. This patch supports the restart command. Change-Id: I003891a8a9e5160c9b43d5ca11a61f3b79742662 Signed-off-by: Hwankyu Jhun --- diff --git a/src/launchpad-process-pool/launchpad.cc b/src/launchpad-process-pool/launchpad.cc index 4733c99..672bc98 100644 --- a/src/launchpad-process-pool/launchpad.cc +++ b/src/launchpad-process-pool/launchpad.cc @@ -194,6 +194,9 @@ Launchpad::Launchpad(int argc, char** argv) { PadCmd::KillLoader, std::bind(&Launchpad::HandleKillLoaderRequest, this, std::placeholders::_1) }, + { PadCmd::RestartLoader, + std::bind(&Launchpad::HandleRestartLoaderRequest, this, + std::placeholders::_1) }, }; CPUBoostController::Level level; @@ -588,6 +591,26 @@ void Launchpad::HandleKillLoaderRequest(std::shared_ptr request) { _D("[PAD_CMD_KILL_LOADER] loader_name: %s", loader_name.c_str()); } +void Launchpad::HandleRestartLoaderRequest(std::shared_ptr 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) { diff --git a/src/launchpad-process-pool/launchpad.hh b/src/launchpad-process-pool/launchpad.hh index b287375..acf7670 100644 --- a/src/launchpad-process-pool/launchpad.hh +++ b/src/launchpad-process-pool/launchpad.hh @@ -77,6 +77,7 @@ class Launchpad : public IOChannel::IEvent, void HandleConnectRequest(std::shared_ptr request); void HandleLaunchRequest(std::shared_ptr request); void HandleKillLoaderRequest(std::shared_ptr request); + void HandleRestartLoaderRequest(std::shared_ptr request); bool CanUseLoaderContext(const std::shared_ptr& context); LaunchResult ForkProcessing(std::shared_ptr request); diff --git a/src/lib/launchpad-common/types.hh b/src/lib/launchpad-common/types.hh index dca55f4..7483b36 100644 --- a/src/lib/launchpad-common/types.hh +++ b/src/lib/launchpad-common/types.hh @@ -58,6 +58,7 @@ enum PadCmd { PrepareAppDefinedLoader = 17, Connect = 18, KillLoader = 19, + RestartLoader = 20, }; enum PadLoaderId {