/* * Copyright (c) 2021, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #if defined(AK_OS_MACOS) # include #else # include #endif namespace IPC { template ErrorOr> take_over_accepted_client_from_system_server([[maybe_unused]] StringView mach_server_name, Args&&... args) { #if defined(AK_OS_MACOS) auto ports = TRY(bootstrap_transport_from_mach_server(mach_server_name)); return IPC::new_client_connection( make(move(ports.receive_right), move(ports.send_right)), forward(args)...); #else auto socket = TRY(Core::take_over_socket_from_system_server()); return IPC::new_client_connection(make(move(socket)), forward(args)...); #endif } }