30#include <asio/error_code.hpp>
31#include <asio/ip/basic_endpoint.hpp>
32#include <asio/ip/basic_resolver_entry.hpp>
33#include <asio/ip/basic_resolver_iterator.hpp>
34#include <asio/ip/tcp.hpp>
35#include <fmt/format.h>
36#include <fmt/ostream.h>
77 std::shared_ptr<logging::Logger> logger)
86 std::vector<std::shared_ptr<IAcceptor>>
create(
88 const auto resolved_endpoints =
resolve(uri);
90 std::vector<std::shared_ptr<IAcceptor>> acceptors;
91 acceptors.reserve(resolved_endpoints.size());
92 for (
const auto& entry : resolved_endpoints) {
94 std::shared_ptr<IAcceptor> acceptor =
95 std::make_shared<AcceptorType>(
97 acceptors.push_back(std::move(acceptor));
110 [[nodiscard]] AsioResolver::results_type
resolve(
114 fmt::format(
"Scheme is different with the resolver: "
115 "expected={}, actual={}",
121 const std::string service = fmt::format(
122 "{}", uri.
port_number().value_or(
static_cast<std::uint16_t
>(0)));
123 asio::error_code error;
127 fmt::format(
"Failed to resolve {}: {}", uri, error.message());
133 for (
const auto& result : results) {
135 log_name_, uri, fmt::streamed(result.endpoint()));
Definition of Acceptor class.
Class of addresses of TCP.
Class of URIs (Uniform Resource Identifiers) to specify endpoints in this library.
std::string_view scheme() const noexcept
Get the scheme.
std::optional< std::uint16_t > port_number() const noexcept
Get the port number.
std::string_view host_or_path() const noexcept
Get the host name or file path.
Class of exceptions in cpp-msgpack-rpc library.
Class of configuration of parsers of messages.
tcp::TCPAcceptor AcceptorType
Type of acceptors.
std::shared_ptr< executors::IExecutor > executor_
Executor.
AsioResolver resolver_
Resolver.
AsioResolver::results_type resolve(const addresses::URI &uri)
Resolve a URI.
std::shared_ptr< logging::Logger > logger_
Logger.
addresses::TCPAddress ConcreteAddress
Type of concrete addresses.
std::string log_name_
Name of the connection for logs.
config::MessageParserConfig message_parser_config_
Configuration of parsers of messages.
asio::ip::tcp::resolver AsioResolver
Type of resolvers in asio library.
std::vector< std::shared_ptr< IAcceptor > > create(const addresses::URI &uri) override
Create acceptors for a URI.
std::string scheme_
Scheme.
TCPAcceptorFactory(std::shared_ptr< executors::IExecutor > executor, const config::MessageParserConfig &message_parser_config, std::shared_ptr< logging::Logger > logger)
Constructor.
Definition of IAcceptor class.
Definition of IAcceptorFactory class.
Definition of IExecutor class.
Definition of LogLevel enumeration.
Definition of Logger class.
#define MSGPACK_RPC_TRACE(LOGGER_PTR,...)
Write a trace log.
#define MSGPACK_RPC_ERROR(LOGGER_PTR,...)
Write a error log.
Definition of MessageParserConfig class.
Definition of MsgpackRPCException class.
Namespace of fmt library.
Namespace of executors to process asynchronous tasks.
@ TRACE
Trace. (Internal operations to send and receive messages.)
Namespace of transport of messages via TCP.
Acceptor< asio::ip::tcp::acceptor, asio::ip::tcp::socket, addresses::TCPAddress > TCPAcceptor
Type of acceptors of TCP.
Definition of OperationType enumeration.
Definition of StatusCode enumeration.
Definition of TCPAcceptor type.
Definition of TCPAddress.