From d582c03233b5c2600ceb05048e7b5b6c0fb16b82 Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Tue, 26 May 2020 15:41:03 +0430 Subject: [PATCH] Shell: Provide some information to inspectors --- Shell/Shell.cpp | 24 ++++++++++++++++++++++++ Shell/Shell.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/Shell/Shell.cpp b/Shell/Shell.cpp index 960e698340..e41f440856 100644 --- a/Shell/Shell.cpp +++ b/Shell/Shell.cpp @@ -1835,3 +1835,27 @@ void Shell::stop_all_jobs() } } } + +void Shell::save_to(JsonObject& object) +{ + Core::Object::save_to(object); + object.set("working_directory", cwd); + object.set("username", username); + object.set("user_home_path", home); + object.set("user_id", uid); + object.set("directory_stack_size", directory_stack.size()); + object.set("cd_history_size", cd_history.size()); + + // Jobs. + JsonArray job_objects; + for (auto& job_entry : jobs) { + JsonObject job_object; + job_object.set("pid", job_entry.value->pid()); + job_object.set("pgid", job_entry.value->pgid()); + job_object.set("running_time", job_entry.value->timer().elapsed()); + job_object.set("command", job_entry.value->cmd()); + job_object.set("is_running_in_background", job_entry.value->is_running_in_background()); + job_objects.append(move(job_object)); + } + object.set("jobs", move(job_objects)); +} diff --git a/Shell/Shell.h b/Shell/Shell.h index b397757ff8..b3e471b07c 100644 --- a/Shell/Shell.h +++ b/Shell/Shell.h @@ -158,6 +158,9 @@ private: Shell(); virtual ~Shell() override; + // ^Core::Object + virtual void save_to(JsonObject&) override; + struct SpawnedProcess { String name; pid_t pid;