#ifndef HTTP_SERVER3_CONNECTION_HPP
#define HTTP_SERVER3_CONNECTION_HPP
#include <boost/asio.hpp>
#include <array>
#include <memory>
#include "reply.hpp"
#include "request.hpp"
#include "request_handler.hpp"
#include "request_parser.hpp"
namespace http {
namespace server3 {
class connection
: public std::enable_shared_from_this<connection>
{
public:
connection(const connection&) = delete;
connection& operator=(const connection&) = delete;
explicit connection(boost::asio::ip::tcp::socket socket,
request_handler& handler);
void start();
private:
void do_read();
void do_write();
boost::asio::ip::tcp::socket socket_;
request_handler& request_handler_;
std::array<char, 8192> buffer_;
request request_;
request_parser request_parser_;
reply reply_;
};
typedef std::shared_ptr<connection> connection_ptr;
} }
#endif