/* * Copyright (c) 2024, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #if !defined(AK_OS_MACH) # error "This file is only for Mach kernel-based OS's" #endif #include #include #include #include namespace Ladybird { class MachPortServer { public: MachPortServer(); ~MachPortServer(); void start(); void stop(); bool is_initialized(); Function on_receive_child_mach_port; ByteString const& server_port_name() const { return m_server_port_name; } private: void thread_loop(); ErrorOr allocate_server_port(); NonnullRefPtr m_thread; ByteString const m_server_port_name; Core::MachPort m_server_port_recv_right; Core::MachPort m_server_port_send_right; Atomic m_should_stop { false }; }; }