1 /*!
2  * @file
3  * @brief A list of factories for creation of connection_handlers.
4  */
5 
6 #pragma once
7 
8 #include <arataga/acl_handler/connection_handler_ifaces.hpp>
9 #include <arataga/acl_handler/first_chunk.hpp>
10 
11 namespace arataga::acl_handler
12 {
13 
14 [[nodiscard]]
15 connection_handler_shptr_t
16 make_protocol_detection_handler(
17 	handler_context_holder_t ctx,
18 	handler_context_t::connection_id_t id,
19 	asio::ip::tcp::socket connection );
20 
21 [[nodiscard]]
22 connection_handler_shptr_t
23 make_socks5_auth_method_detection_handler(
24 	handler_context_holder_t ctx,
25 	handler_context_t::connection_id_t id,
26 	asio::ip::tcp::socket connection,
27 	first_chunk_for_next_handler_t first_chunk,
28 	std::chrono::steady_clock::time_point created_at );
29 
30 [[nodiscard]]
31 connection_handler_shptr_t
32 make_http_handler(
33 	handler_context_holder_t ctx,
34 	handler_context_t::connection_id_t id,
35 	asio::ip::tcp::socket connection,
36 	first_chunk_for_next_handler_t first_chunk,
37 	std::chrono::steady_clock::time_point created_at );
38 
39 [[nodiscard]]
40 connection_handler_shptr_t
41 make_data_transfer_handler(
42 	handler_context_holder_t ctx,
43 	handler_context_t::connection_id_t id,
44 	asio::ip::tcp::socket in_connection,
45 	first_chunk_for_next_handler_t first_chunk,
46 	asio::ip::tcp::socket out_connection,
47 	traffic_limiter_unique_ptr_t traffic_limiter );
48 
49 } /* arataga::acl_handler */
50 
51