#pragma once #include namespace saw { namespace rmt { struct FileSystem {}; } template<> class remote_address { private: std::filesystem::path path_; public: remote_address(const std::filesystem::path& path__): path_{path__} {} }; template class rpc_client { private: ptr> addr_; public: rpc_client(ptr> addr__): addr_{addr__} {} }; template class rpc_server { private: ptr> addr_; public: rpc_server(ptr> addr__): addr_{addr__} {} }; template<> class remote { private: SAW_FORBID_COPY(remote); SAW_FORBID_MOVE(remote); public: error_or>> parse_address(const std::string_view& path_v){ return heap>(path_v); } template rpc_server listen(const remote_address& addr, typename rpc_server::InterfaceT iface){ return {addr, std::move(iface)}; } }; }