//// connection.hpp// ~~~~~~~~~~~~~~//// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//#ifndef HTTP_SERVER2_CONNECTION_HPP#define HTTP_SERVER2_CONNECTION_HPP#include<boost/asio.hpp>#include<boost/array.hpp>#include<boost/noncopyable.hpp>#include<boost/shared_ptr.hpp>#include<boost/enable_shared_from_this.hpp>#include"reply.hpp"#include"request.hpp"#include"request_handler.hpp"#include"request_parser.hpp"namespace http {namespace server2 {/// Represents a single connection from a client.classconnection:public boost::enable_shared_from_this<connection>,private boost::noncopyable
{public:/// Construct a connection with the given io_service.explicitconnection(boost::asio::io_service& io_service,
request_handler& handler);/// Get the socket associated with the connection.
boost::asio::ip::tcp::socket&socket();/// Start the first asynchronous operation for the connection.voidstart();private:/// Handle completion of a read operation.voidhandle_read(const boost::system::error_code& e,
std::size_t bytes_transferred);/// Handle completion of a write operation.voidhandle_write(const boost::system::error_code& e);/// Socket for the connection.
boost::asio::ip::tcp::socket socket_;/// The handler used to process the incoming request.
request_handler& request_handler_;/// Buffer for incoming data.
boost::array<char,8192> buffer_;/// The incoming request.
request request_;/// The parser for the incoming request.
request_parser request_parser_;/// The reply to be sent back to the client.
reply reply_;};typedef boost::shared_ptr<connection> connection_ptr;}// namespace server2}// namespace http#endif// HTTP_SERVER2_CONNECTION_HPP
//// connection.hpp// ~~~~~~~~~~~~~~//// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompany...