24#if MSGPACK_RPC_HAS_UNIX_SOCKETS
32#include <asio/local/basic_endpoint.hpp>
33#include <fmt/format.h>
45namespace msgpack_rpc::transport::unix_socket {
50class UnixSocketAcceptorFactory final :
public IAcceptorFactory {
55 using AcceptorType = unix_socket::UnixSocketAcceptor;
58 using ConcreteAddress = addresses::UnixSocketAddress;
68 UnixSocketAcceptorFactory(std::shared_ptr<executors::IExecutor> executor,
69 const config::MessageParserConfig& message_parser_config,
70 std::shared_ptr<logging::Logger> logger, std::string_view scheme)
71 : executor_(std::move(executor)),
72 message_parser_config_(message_parser_config),
74 log_name_(fmt::format(
"AcceptorFactory({})", scheme_)),
75 logger_(std::move(logger)) {}
78 std::vector<std::shared_ptr<IAcceptor>> create(
79 const addresses::URI& uri)
override {
80 const ConcreteAddress local_address(uri.host_or_path());
81 return std::vector<std::shared_ptr<IAcceptor>>{
82 std::make_shared<AcceptorType>(
83 local_address, executor_, message_parser_config_, logger_)};
88 std::shared_ptr<executors::IExecutor> executor_;
91 config::MessageParserConfig message_parser_config_;
97 std::string log_name_;
100 std::shared_ptr<logging::Logger> logger_;
Definition of Acceptor class.
Definitions of platform-specific macros.
Definition of IAcceptor class.
Definition of IAcceptorFactory class.
Definition of IExecutor class.
Definition of Logger class.
Definition of MessageParserConfig class.
Definition of UnixSocketAcceptor type.
Definition of UnixSocketAddress class.