9
9
#define BOOST_NETWORK_HTTP_SERVER_SYNC_CONNECTION_HPP_
10
10
11
11
#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
13
13
#endif
14
14
15
15
#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>
17
17
#include < boost/network/protocol/http/request.hpp>
18
18
#include < boost/network/protocol/http/response.hpp>
19
19
#include < boost/asio/ip/tcp.hpp>
29
29
30
30
namespace boost { namespace network { namespace http {
31
31
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> {
34
33
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)
36
35
: service_(service)
37
36
, handler_(handler)
38
37
, socket_(service_)
@@ -58,8 +57,8 @@ namespace boost { namespace network { namespace http {
58
57
boost::asio::buffer (buffer_),
59
58
wrapper_.wrap (
60
59
boost::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 (),
63
62
boost::asio::placeholders::error,
64
63
boost::asio::placeholders::bytes_transferred
65
64
)
@@ -92,14 +91,14 @@ namespace boost { namespace network { namespace http {
92
91
is_content_length ()
93
92
);
94
93
if (it == request_.headers .end ()) {
95
- response_= basic_response<Tag>:: stock_reply (basic_response<Tag>:: bad_request);
94
+ response_= stock_reply (bad_request);
96
95
boost::asio::async_write (
97
96
socket_,
98
97
response_.to_buffers (),
99
98
wrapper_.wrap (
100
99
boost::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 (),
103
102
boost::asio::placeholders::error
104
103
)
105
104
)
@@ -112,14 +111,14 @@ namespace boost { namespace network { namespace http {
112
111
try {
113
112
content_length = boost::lexical_cast<size_t >(it->value );
114
113
} catch (...) {
115
- response_= basic_response<Tag>:: stock_reply (basic_response<Tag>:: bad_request);
114
+ response_= stock_reply (bad_request);
116
115
boost::asio::async_write (
117
116
socket_,
118
117
response_.to_buffers (),
119
118
wrapper_.wrap (
120
119
boost::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 (),
123
122
boost::asio::placeholders::error
124
123
)
125
124
)
@@ -137,8 +136,8 @@ namespace boost { namespace network { namespace http {
137
136
boost::asio::buffer (buffer_),
138
137
wrapper_.wrap (
139
138
boost::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 (),
142
141
boost::asio::placeholders::error,
143
142
content_length,
144
143
boost::asio::placeholders::bytes_transferred
@@ -155,8 +154,8 @@ namespace boost { namespace network { namespace http {
155
154
response_.to_buffers (),
156
155
wrapper_.wrap (
157
156
boost::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 (),
160
159
boost::asio::placeholders::error
161
160
)
162
161
)
@@ -168,22 +167,22 @@ namespace boost { namespace network { namespace http {
168
167
response_.to_buffers (),
169
168
wrapper_.wrap (
170
169
boost::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 (),
173
172
boost::asio::placeholders::error
174
173
)
175
174
)
176
175
);
177
176
}
178
177
} else if (!done) {
179
- response_= basic_response<Tag>:: stock_reply (basic_response<Tag>:: bad_request);
178
+ response_= stock_reply (bad_request);
180
179
boost::asio::async_write (
181
180
socket_,
182
181
response_.to_buffers (),
183
182
wrapper_.wrap (
184
183
boost::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 (),
187
186
boost::asio::placeholders::error
188
187
)
189
188
)
@@ -193,8 +192,8 @@ namespace boost { namespace network { namespace http {
193
192
boost::asio::buffer (buffer_),
194
193
wrapper_.wrap (
195
194
boost::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 (),
198
197
boost::asio::placeholders::error,
199
198
boost::asio::placeholders::bytes_transferred
200
199
)
@@ -219,8 +218,8 @@ namespace boost { namespace network { namespace http {
219
218
response_.to_buffers (),
220
219
wrapper_.wrap (
221
220
boost::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 (),
224
223
boost::asio::placeholders::error
225
224
)
226
225
)
@@ -230,8 +229,8 @@ namespace boost { namespace network { namespace http {
230
229
boost::asio::buffer (buffer_),
231
230
wrapper_.wrap (
232
231
boost::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 (),
235
234
boost::asio::placeholders::error,
236
235
difference,
237
236
boost::asio::placeholders::bytes_transferred
@@ -252,16 +251,16 @@ namespace boost { namespace network { namespace http {
252
251
}
253
252
254
253
boost::asio::io_service & service_;
255
- Handler & handler_;
254
+ function< void (request const &, response &)> handler_;
256
255
boost::asio::ip::tcp::socket socket_;
257
256
boost::asio::io_service::strand wrapper_;
258
257
259
258
typedef boost::array<char ,BOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE> buffer_type;
260
259
buffer_type buffer_;
261
- typedef basic_request_parser<Tag> request_parser;
260
+ request_parser request_parser;
262
261
request_parser parser_;
263
- basic_request<Tag> request_;
264
- basic_response<Tag> response_;
262
+ request request_;
263
+ response response_;
265
264
};
266
265
267
266
0 commit comments