#pragma once #include #include class FileDescriptor; class LocalSocket final : public Socket { public: static RetainPtr create(int type); virtual ~LocalSocket() override; virtual bool bind(const sockaddr*, socklen_t, int& error) override; virtual RetainPtr connect(const sockaddr*, socklen_t, int& error) override; virtual bool get_address(sockaddr*, socklen_t*) override; private: explicit LocalSocket(int type); virtual bool is_local() const override { return true; } RetainPtr m_file; RetainPtr m_peer; bool m_bound { false }; bool m_connected { false }; sockaddr_un m_address; DoubleBuffer m_for_client; DoubleBuffer m_for_server; };