/* * Copyright (c) 2024, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace WebView { ProcessType process_type_from_name(StringView); StringView process_name_from_type(ProcessType type); class ProcessManager { AK_MAKE_NONCOPYABLE(ProcessManager); public: ProcessManager(); ~ProcessManager(); void add_process(Process&&); Optional remove_process(pid_t); Optional find_process(pid_t); #if defined(AK_OS_MACH) void set_process_mach_port(pid_t, Core::MachPort&&); #endif void update_all_process_statistics(); String serialize_json(); Function on_process_exited; private: Core::Platform::ProcessStatistics m_statistics; HashMap m_processes; int m_signal_handle { -1 }; Threading::Mutex m_lock; }; }