/* * Copyright (c) 2026, Aliaksandr Kalenik * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #if defined(AK_OS_MACOS) # include #endif namespace IPC { class TransportHandle { AK_MAKE_NONCOPYABLE(TransportHandle); public: TransportHandle() = default; TransportHandle(TransportHandle&&) = default; TransportHandle& operator=(TransportHandle&&) = default; #if defined(AK_OS_MACOS) TransportHandle(Core::MachPort receive_right, Core::MachPort send_right); #else explicit TransportHandle(File); #endif ErrorOr> create_transport() const; private: #if defined(AK_OS_MACOS) mutable Core::MachPort m_receive_right; mutable Core::MachPort m_send_right; #else mutable File m_file; #endif template friend ErrorOr encode(Encoder&, U const&); template friend ErrorOr decode(Decoder&); }; }