#pragma once #include "NetworkError.hpp" #include #include #include #include #include namespace tw::net { template class Write { public: virtual ~Write() = default; virtual tl::expected write(std::span data) = 0; tl::expected write(const std::string& data) { return write(std::span((std::byte*)(data.c_str()), data.size())); } template::value || std::is_enum::value, bool> = true> tl::expected write(TNum data) { return write(std::as_writable_bytes(std::span{&data, 1})); } virtual size_t flush() = 0; }; }