99#define BOOST_NETWORK_HTTP_SERVER_SYNC_CONNECTION_HPP_
1010
1111#ifndef BOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE
12- #define BOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE 1024uL
12+ #define BOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE 4096uL
1313#endif
1414
1515#include < boost/enable_shared_from_this.hpp>
16- #include < boost/network/protocol/http/request_parser.hpp>
16+ #include < boost/network/protocol/http/server/ request_parser.hpp>
1717#include < boost/network/protocol/http/request.hpp>
1818#include < boost/network/protocol/http/response.hpp>
1919#include < boost/asio/ip/tcp.hpp>
2929
3030namespace boost {namespace network {namespace http {
3131
32- template <class Tag ,class Handler >
33- struct sync_connection : boost::enable_shared_from_this<sync_connection<Tag,Handler> > {
32+ class sync_server_connection :public boost ::enable_shared_from_this<sync_server_connection> {
3433
35- sync_connection (boost::asio::io_service & service,Handler & handler)
34+ sync_server_connection (boost::asio::io_service & service,function< void (request const &, response &)> handler)
3635 : service_(service)
3736 , handler_(handler)
3837 , socket_(service_)
@@ -58,8 +57,8 @@ namespace boost { namespace network { namespace http {
5857boost::asio::buffer (buffer_),
5958 wrapper_.wrap (
6059boost::bind (
61- &sync_connection<Tag,Handler> ::handle_read_headers,
62- sync_connection<Tag,Handler> ::shared_from_this (),
60+ &sync_server_connection ::handle_read_headers,
61+ sync_server_connection ::shared_from_this (),
6362 boost::asio::placeholders::error,
6463 boost::asio::placeholders::bytes_transferred
6564 )
@@ -92,14 +91,14 @@ namespace boost { namespace network { namespace http {
9291is_content_length ()
9392 );
9493if (it == request_.headers .end ()) {
95- response_=basic_response<Tag>:: stock_reply (basic_response<Tag>:: bad_request);
94+ response_=stock_reply (bad_request);
9695boost::asio::async_write (
9796 socket_,
9897 response_.to_buffers (),
9998 wrapper_.wrap (
10099boost::bind (
101- &sync_connection<Tag,Handler> ::handle_write,
102- sync_connection<Tag,Handler> ::shared_from_this (),
100+ &sync_server_connection ::handle_write,
101+ sync_server_connection ::shared_from_this (),
103102 boost::asio::placeholders::error
104103 )
105104 )
@@ -112,14 +111,14 @@ namespace boost { namespace network { namespace http {
112111try {
113112 content_length = boost::lexical_cast<size_t >(it->value );
114113 }catch (...) {
115- response_=basic_response<Tag>:: stock_reply (basic_response<Tag>:: bad_request);
114+ response_=stock_reply (bad_request);
116115boost::asio::async_write (
117116 socket_,
118117 response_.to_buffers (),
119118 wrapper_.wrap (
120119boost::bind (
121- &sync_connection<Tag,Handler> ::handle_write,
122- sync_connection<Tag,Handler> ::shared_from_this (),
120+ &sync_server_connection ::handle_write,
121+ sync_server_connection ::shared_from_this (),
123122 boost::asio::placeholders::error
124123 )
125124 )
@@ -137,8 +136,8 @@ namespace boost { namespace network { namespace http {
137136boost::asio::buffer (buffer_),
138137 wrapper_.wrap (
139138boost::bind (
140- &sync_connection<Tag,Handler> ::handle_read_body_contents,
141- sync_connection<Tag,Handler> ::shared_from_this (),
139+ &sync_server_connection ::handle_read_body_contents,
140+ sync_server_connection ::shared_from_this (),
142141 boost::asio::placeholders::error,
143142 content_length,
144143 boost::asio::placeholders::bytes_transferred
@@ -155,8 +154,8 @@ namespace boost { namespace network { namespace http {
155154 response_.to_buffers (),
156155 wrapper_.wrap (
157156boost::bind (
158- &sync_connection<Tag,Handler> ::handle_write,
159- sync_connection<Tag,Handler> ::shared_from_this (),
157+ &sync_server_connection ::handle_write,
158+ sync_server_connection ::shared_from_this (),
160159 boost::asio::placeholders::error
161160 )
162161 )
@@ -168,22 +167,22 @@ namespace boost { namespace network { namespace http {
168167 response_.to_buffers (),
169168 wrapper_.wrap (
170169boost::bind (
171- &sync_connection<Tag,Handler> ::handle_write,
172- sync_connection<Tag,Handler> ::shared_from_this (),
170+ &sync_server_connection ::handle_write,
171+ sync_server_connection ::shared_from_this (),
173172 boost::asio::placeholders::error
174173 )
175174 )
176175 );
177176 }
178177 }else if (!done) {
179- response_=basic_response<Tag>:: stock_reply (basic_response<Tag>:: bad_request);
178+ response_=stock_reply (bad_request);
180179boost::asio::async_write (
181180 socket_,
182181 response_.to_buffers (),
183182 wrapper_.wrap (
184183boost::bind (
185- &sync_connection<Tag,Handler> ::handle_write,
186- sync_connection<Tag,Handler> ::shared_from_this (),
184+ &sync_server_connection ::handle_write,
185+ sync_server_connection ::shared_from_this (),
187186 boost::asio::placeholders::error
188187 )
189188 )
@@ -193,8 +192,8 @@ namespace boost { namespace network { namespace http {
193192boost::asio::buffer (buffer_),
194193 wrapper_.wrap (
195194boost::bind (
196- &sync_connection<Tag,Handler> ::handle_read_headers,
197- sync_connection<Tag,Handler> ::shared_from_this (),
195+ &sync_server_connection ::handle_read_headers,
196+ sync_server_connection ::shared_from_this (),
198197 boost::asio::placeholders::error,
199198 boost::asio::placeholders::bytes_transferred
200199 )
@@ -219,8 +218,8 @@ namespace boost { namespace network { namespace http {
219218 response_.to_buffers (),
220219 wrapper_.wrap (
221220boost::bind (
222- &sync_connection<Tag,Handler> ::handle_write,
223- sync_connection<Tag,Handler> ::shared_from_this (),
221+ &sync_server_connection ::handle_write,
222+ sync_server_connection ::shared_from_this (),
224223 boost::asio::placeholders::error
225224 )
226225 )
@@ -230,8 +229,8 @@ namespace boost { namespace network { namespace http {
230229boost::asio::buffer (buffer_),
231230 wrapper_.wrap (
232231boost::bind (
233- &sync_connection<Tag,Handler> ::handle_read_body_contents,
234- sync_connection<Tag,Handler> ::shared_from_this (),
232+ &sync_server_connection ::handle_read_body_contents,
233+ sync_server_connection ::shared_from_this (),
235234 boost::asio::placeholders::error,
236235 difference,
237236 boost::asio::placeholders::bytes_transferred
@@ -252,16 +251,16 @@ namespace boost { namespace network { namespace http {
252251 }
253252
254253 boost::asio::io_service & service_;
255- Handler & handler_;
254+ function< void (request const &, response &)> handler_;
256255 boost::asio::ip::tcp::socket socket_;
257256 boost::asio::io_service::strand wrapper_;
258257
259258typedef boost::array<char ,BOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE> buffer_type;
260259 buffer_type buffer_;
261- typedef basic_request_parser<Tag> request_parser;
260+ request_parser request_parser;
262261 request_parser parser_;
263- basic_request<Tag> request_;
264- basic_response<Tag> response_;
262+ request request_;
263+ response response_;
265264 };
266265
267266