diff options
author | Roland Reichwein <mail@reichwein.it> | 2023-01-09 13:15:18 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2023-01-09 13:15:18 +0100 |
commit | dc2e2b3e293a8374a2627982b521cc6865129c49 (patch) | |
tree | bd34d6c13e330be5937aec29503cbe6649d0fa74 /http.cpp | |
parent | d747193e76baf689211d9f1e42335360288d43c0 (diff) |
Separated out websocket
Diffstat (limited to 'http.cpp')
-rw-r--r-- | http.cpp | 105 |
1 files changed, 0 insertions, 105 deletions
@@ -2,11 +2,6 @@ #include <boost/beast/version.hpp> -// Support both boost in Debian unstable (BOOST_LATEST) and in stable (boost 1.67) -#if BOOST_VERSION >= 107100 -#define BOOST_LATEST -#endif - #include "server.h" #include "response.h" @@ -14,10 +9,8 @@ #include <boost/beast/core.hpp> #include <boost/beast/http.hpp> #include <boost/asio/dispatch.hpp> -#ifndef BOOST_LATEST #include <boost/asio/bind_executor.hpp> #include <boost/asio/ip/tcp.hpp> -#endif #include <boost/asio/strand.hpp> #include <boost/config.hpp> #include <algorithm> @@ -48,12 +41,7 @@ void fail(beast::error_code ec, char const* what) // Handles an HTTP server connection class session : public std::enable_shared_from_this<session> { -#ifdef BOOST_LATEST beast::tcp_stream stream_; -#else - tcp::socket socket_; - boost::asio::strand<boost::asio::io_context::executor_type> strand_; -#endif beast::flat_buffer buffer_; Server& m_server; std::optional<http::request_parser<http::string_body>> parser_; @@ -62,17 +50,12 @@ class session : public std::enable_shared_from_this<session> void handle_request(::Server& server, request_type&& req) { -#ifdef BOOST_LATEST stream_.expires_after(std::chrono::seconds(300)); // timeout on write by server much longer than read timeout from client -#else - // socket_.expires_after(std::chrono::seconds(300)); // not supported by old boost -#endif auto sp = std::make_shared<response_type>(generate_response(req, server)); res_ = sp; // Write the response -#ifdef BOOST_LATEST http::async_write( stream_, *sp, @@ -80,36 +63,14 @@ class session : public std::enable_shared_from_this<session> &session::on_write, shared_from_this(), sp->need_eof())); -#else - http::async_write( - socket_, - *sp, - boost::asio::bind_executor( - strand_, - std::bind( - &session::on_write, - shared_from_this(), - std::placeholders::_1, - std::placeholders::_2, - sp->need_eof()))); -#endif } public: // Take ownership of the stream session( -#ifdef BOOST_LATEST tcp::socket&& socket, -#else - tcp::socket socket, -#endif Server& server) -#ifdef BOOST_LATEST : stream_(std::move(socket)) -#else - : socket_(std::move(socket)) - , strand_(socket_.get_executor()) -#endif , m_server(server) { } @@ -119,14 +80,10 @@ public: { // We need to be executing within a strand to perform async operations // on the I/O objects in this session. -#ifdef BOOST_LATEST net::dispatch(stream_.get_executor(), beast::bind_front_handler( &session::do_read, shared_from_this())); -#else - do_read(); -#endif } void do_read() @@ -140,7 +97,6 @@ public: parser_.emplace(); parser_->body_limit(1000000000); // 1GB limit -#ifdef BOOST_LATEST // Set the timeout. stream_.expires_after(std::chrono::seconds(30)); @@ -149,28 +105,12 @@ public: beast::bind_front_handler( &session::on_read, shared_from_this())); -#else - - http::async_read(socket_, buffer_, *parser_, - boost::asio::bind_executor( - strand_, - std::bind( - &session::on_read, - shared_from_this(), - std::placeholders::_1, - std::placeholders::_2))); -#endif } void on_read( -#ifdef BOOST_LATEST beast::error_code ec, std::size_t bytes_transferred -#else - boost::system::error_code ec, - std::size_t bytes_transferred -#endif ) { boost::ignore_unused(bytes_transferred); @@ -193,15 +133,9 @@ public: void on_write( -#ifdef BOOST_LATEST bool close, beast::error_code ec, std::size_t bytes_transferred -#else - boost::system::error_code ec, - std::size_t bytes_transferred, - bool close -#endif ) { boost::ignore_unused(bytes_transferred); @@ -228,11 +162,7 @@ public: { // Send a TCP shutdown beast::error_code ec; -#ifdef BOOST_LATEST stream_.socket().shutdown(tcp::socket::shutdown_send, ec); -#else - socket_.shutdown(tcp::socket::shutdown_send, ec); -#endif // At this point the connection is closed gracefully } }; @@ -242,13 +172,8 @@ public: // Accepts incoming connections and launches the sessions class listener : public std::enable_shared_from_this<listener> { -#ifdef BOOST_LATEST net::io_context& ioc_; -#endif tcp::acceptor acceptor_; -#ifndef BOOST_LATEST - tcp::socket socket_; -#endif Server& m_server; public: @@ -256,20 +181,11 @@ public: net::io_context& ioc, tcp::endpoint endpoint, Server& server) -#ifdef BOOST_LATEST : ioc_(ioc) , acceptor_(net::make_strand(ioc)) -#else - : acceptor_(ioc) - , socket_(ioc) -#endif , m_server(server) { -#ifdef BOOST_VERSION beast::error_code ec; -#else - boost::system::error_code ec; -#endif // Open the acceptor acceptor_.open(endpoint.protocol(), ec); @@ -309,10 +225,6 @@ public: void run() { -#ifndef BOOST_LATEST - if (!acceptor_.is_open()) - return; -#endif do_accept(); } @@ -321,28 +233,15 @@ private: do_accept() { // The new connection gets its own strand -#ifdef BOOST_LATEST acceptor_.async_accept( net::make_strand(ioc_), beast::bind_front_handler( &listener::on_accept, shared_from_this())); -#else - acceptor_.async_accept( - socket_, - std::bind( - &listener::on_accept, - shared_from_this(), - std::placeholders::_1)); -#endif } void -#ifdef BOOST_LATEST on_accept(beast::error_code ec, tcp::socket socket) -#else - on_accept(boost::system::error_code ec) -#endif { if(ec) { @@ -352,11 +251,7 @@ private: { // Create the session and run it std::make_shared<session>( -#ifdef BOOST_LATEST std::move(socket), -#else - std::move(socket_), -#endif m_server)->run(); } |