Malloy
Loading...
Searching...
No Matches
listener.hpp
1#pragma once
2
3#include <boost/asio/ip/tcp.hpp>
4#include <boost/beast/core/error.hpp>
5
6#include <filesystem>
7#include <memory>
8#include <string>
9
10namespace boost::asio
11{
12 class io_context;
13}
14
15namespace boost::asio::ssl
16{
17 class context;
18}
19
20namespace spdlog
21{
22 class logger;
23}
24
25namespace malloy::server
26{
27 class router;
28
32 class listener :
33 public std::enable_shared_from_this<listener>
34 {
35 public:
49 std::shared_ptr<spdlog::logger> logger,
50 std::shared_ptr<spdlog::logger> connection_logger,
51 boost::asio::io_context& ioc,
52 std::shared_ptr<boost::asio::ssl::context> tls_ctx,
53 const boost::asio::ip::tcp::endpoint& endpoint,
54 std::shared_ptr<malloy::server::router> router,
55 std::shared_ptr<const std::filesystem::path> http_doc_root,
56 std::string agent_string
57 );
58
62 listener(const listener& other) = delete;
63
67 listener(listener&& other) noexcept = delete;
68
72 virtual
73 ~listener() = default;
74
82 operator=(const listener& rhs) = delete;
83
91 operator=(listener&& rhs) noexcept = delete;
92
96 void
97 run();
98
104 [[nodiscard]]
105 std::shared_ptr<malloy::server::router>
106 router() const noexcept
107 {
108 return m_router;
109 }
110
111 private:
112 std::shared_ptr<spdlog::logger> m_logger;
113 std::shared_ptr<spdlog::logger> m_connection_logger;
114 boost::asio::io_context& m_io_ctx;
115 std::shared_ptr<boost::asio::ssl::context> m_tls_ctx;
116 boost::asio::ip::tcp::acceptor m_acceptor;
117 std::shared_ptr<malloy::server::router> m_router;
118 std::shared_ptr<const std::filesystem::path> m_doc_root;
119 std::string m_agent_string;
120
124 void
125 do_accept();
126
133 void
134 on_accept(boost::beast::error_code ec, boost::asio::ip::tcp::socket socket);
135 };
136
137}
Accepts incoming connections.
Definition: listener.hpp:34
listener(const listener &other)=delete
listener(std::shared_ptr< spdlog::logger > logger, std::shared_ptr< spdlog::logger > connection_logger, boost::asio::io_context &ioc, std::shared_ptr< boost::asio::ssl::context > tls_ctx, const boost::asio::ip::tcp::endpoint &endpoint, std::shared_ptr< malloy::server::router > router, std::shared_ptr< const std::filesystem::path > http_doc_root, std::string agent_string)
std::shared_ptr< malloy::server::router > router() const noexcept
Definition: listener.hpp:106
listener & operator=(const listener &rhs)=delete
virtual ~listener()=default
void run()
Definition: listener.cpp:68
listener(listener &&other) noexcept=delete
listener & operator=(listener &&rhs) noexcept=delete
Definition: router.hpp:103
Definition: endpoint.hpp:10