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();          } | 
