Add status to AUL_DBUS_APPDEAD_SIGNAL 10/294310/6
authorChanggyu Choi <changyu.choi@samsung.com>
Fri, 16 Jun 2023 03:38:39 +0000 (12:38 +0900)
committerChanggyu Choi <changyu.choi@samsung.com>
Mon, 19 Jun 2023 06:22:07 +0000 (15:22 +0900)
When an app terminates, launchpad sends app_dead signals including
exit status.

Change-Id: I0ab5a0ccdbe8a0266c257dc40a0f96b03c184b11
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
src/launchpad-process-pool/dbus.cc
src/launchpad-process-pool/dbus.hh
src/launchpad-process-pool/signal_manager.cc
src/launchpad-process-pool/signal_manager.hh

index 3bf7bffd212181bd764fbf4cda44467b0e5ef5ea..36b02b998352b11b3f4f40251dd3a26a3f842c18 100644 (file)
@@ -207,11 +207,12 @@ void DBus::SendAppLaunchSignal(pid_t pid, const std::string_view appid) {
           "App Launch. " + std::to_string(pid) + ":" + std::string(appid)));
 }
 
-void DBus::SendAppDeadSignal(pid_t pid) {
-  DBusManager::GetInst().Send(
-      std::make_shared<DBusMessage>(
-          AUL_DBUS_PATH, AUL_DBUS_SIGNAL_INTERFACE, AUL_DBUS_APPDEAD_SIGNAL,
-          g_variant_new("(u)", pid), "App Dead. " + std::to_string(pid)));
+void DBus::SendAppDeadSignal(pid_t pid, int status) {
+  DBusManager::GetInst().Send(std::make_shared<DBusMessage>(
+      AUL_DBUS_PATH, AUL_DBUS_SIGNAL_INTERFACE, AUL_DBUS_APPDEAD_SIGNAL,
+      g_variant_new("(ii)", pid, status),
+      "App Dead. pid: " + std::to_string(pid) +
+          ", status: " + std::to_string(status)));
 }
 
 void DBus::Init() {
index 032165b8dae69c6de382df7af39f4b64d744bacc..a5f17c780eaaf32181b1587a1a39e110a1a41c59 100644 (file)
@@ -29,7 +29,7 @@ class DBus {
   static void Init();
   static void Finish();
   static void SendAppLaunchSignal(pid_t pid, const std::string_view appid);
-  static void SendAppDeadSignal(pid_t pid);
+  static void SendAppDeadSignal(pid_t pid, int status);
 };
 
 }  // namespace launchpad
index ade60ef883e4c93d67ba290ee0ad1be33bc4af0f..81ea1b0f228d20913829e7fc2c66852ae4943094 100644 (file)
@@ -193,19 +193,19 @@ int SignalManager::GetSigchldFd() {
   return sfd;
 }
 
-void SignalManager::HandleSigchld(pid_t pid) {
-  DBus::SendAppDeadSignal(pid);
+void SignalManager::HandleSigchld(pid_t pid, int status) {
+  DBus::SendAppDeadSignal(pid, status);
   recycle_bin_->Add(std::make_shared<GarbageCollector>(pid));
 }
 
 void SignalManager::OnSigchld(pid_t pid, int status) {
   _D("pid: %d, status: %d", pid, status);
-  HandleSigchld(pid);
+  HandleSigchld(pid, status);
 }
 
 void SignalManager::OnHydraSigchld(pid_t pid, int status) {
   _D("pid: %d, status: %d", pid, status);
-  HandleSigchld(pid);
+  HandleSigchld(pid, status);
 }
 
 }  // namespace launchpad
index 0af613dc48207e60a32c679d570033deeff873a3..8cd8ffce4c94f4f8726cdbb0eabcfe1d095d3500 100644 (file)
@@ -58,7 +58,7 @@ class SignalManager : public SigchldEvent::IEvent,
   ~SignalManager();
 
   void Init();
-  void HandleSigchld(pid_t pid);
+  void HandleSigchld(pid_t pid, int status);
   int GetSigchldFd();
   int BlockSigchld();