7#include <spdlog/spdlog.h>
16 asio::any_io_executor executor,
17 std::shared_ptr<spdlog::logger> logger =
nullptr)
18 : logger_(logger ? logger : spdlog::default_logger()),
19 executor_(std::move(executor)),
20 strand_(asio::make_strand(executor_)) {
32 -> asio::awaitable<std::expected<void, error::RpcError>> = 0;
35 -> asio::awaitable<std::expected<void, error::RpcError>> = 0;
40 -> asio::awaitable<std::expected<void, error::RpcError>> = 0;
43 -> asio::awaitable<std::expected<std::string, error::RpcError>> = 0;
45 [[nodiscard]]
auto GetExecutor() const -> asio::any_io_executor {
49 [[nodiscard]]
auto GetStrand() -> asio::strand<asio::any_io_executor> & {
54 auto Logger() -> std::shared_ptr<spdlog::logger> {
59 std::shared_ptr<spdlog::logger> logger_;
60 asio::any_io_executor executor_;
61 asio::strand<asio::any_io_executor> strand_;
virtual auto Start() -> asio::awaitable< std::expected< void, error::RpcError > >=0
virtual ~Transport()=default
auto operator=(const Transport &) -> Transport &=delete
virtual auto ReceiveMessage() -> asio::awaitable< std::expected< std::string, error::RpcError > >=0
Transport(asio::any_io_executor executor, std::shared_ptr< spdlog::logger > logger=nullptr)
auto Logger() -> std::shared_ptr< spdlog::logger >
Transport(const Transport &)=delete
Transport(Transport &&)=delete
virtual auto CloseNow() -> void=0
auto operator=(Transport &&) -> Transport &=delete
auto GetExecutor() const -> asio::any_io_executor
virtual auto SendMessage(std::string message) -> asio::awaitable< std::expected< void, error::RpcError > >=0
virtual auto Close() -> asio::awaitable< std::expected< void, error::RpcError > >=0
auto GetStrand() -> asio::strand< asio::any_io_executor > &