/* * Copyright (c) 2026, Aliaksandr Kalenik * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include #include namespace IPC { TransportHandle::TransportHandle(File file) : m_file(move(file)) { } ErrorOr> TransportHandle::create_transport() const { auto socket = TRY(Core::LocalSocket::adopt_fd(m_file.take_fd())); TRY(socket->set_blocking(false)); return make(move(socket)); } template<> ErrorOr encode(Encoder& encoder, TransportHandle const& handle) { return encoder.encode(handle.m_file); } template<> ErrorOr decode(Decoder& decoder) { auto file = TRY(decoder.decode()); return TransportHandle { move(file) }; } }