Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit034098c

Browse files
committed
WIP: More Changes
Here's some more changes that are really part of the previous commit. Ishould really be using the command-line utility more than this Githubapp...
1 parent007fef7 commit034098c

File tree

11 files changed

+256
-82
lines changed

11 files changed

+256
-82
lines changed

‎boost/network/protocol/http/request_parser.hpp‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
// request_parser.hpp
33
// ~~~~~~~~~~~~~~~~~~
44
//
5-
// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6-
// Copyright (c) 2009 Dean Michael Berris (mikhailberis at gmail dot com)
7-
// Copyright (c) 2009 Tarro, Inc.
5+
// Copyright 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6+
// Copyright 2009-2012 Dean Michael Berris <dberris@google.com>.
7+
// Copyright 2012 Google, Inc.
8+
// Copyright 2009 Tarroo, Inc.
89
//
910
// Distributed under the Boost Software License, Version 1.0. (See accompanying
1011
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -26,12 +27,11 @@ namespace tag {
2627
}
2728

2829
/// Parser for incoming requests.
29-
template<classTag>
30-
classbasic_request_parser
30+
classrequest_parser
3131
{
3232
public:
3333
/// Construct ready to parse the request method.
34-
basic_request_parser() : state_(method_start) {}
34+
request_parser() : state_(method_start) {}
3535

3636
/// Reset to initial parser state.
3737
voidreset() { state_ = method_start; }
@@ -41,7 +41,7 @@ class basic_request_parser
4141
/// data is required. The InputIterator return value indicates how much of the
4242
/// input has been consumed.
4343
template<typename InputIterator>
44-
boost::tuple<boost::tribool, InputIterator>parse_headers(basic_request<Tag> & req,
44+
boost::tuple<boost::tribool, InputIterator>parse_headers(request & req,
4545
InputIterator begin, InputIterator end)
4646
{
4747
while (begin != end)
@@ -56,7 +56,7 @@ class basic_request_parser
5656

5757
private:
5858
/// Handle the next character of input.
59-
boost::triboolconsume(basic_request<Tag> & req,char input);
59+
boost::triboolconsume(request & req,char input);
6060

6161
/// Check if a byte is an HTTP character.
6262
staticboolis_char(int c);

‎boost/network/protocol/http/server/async_impl.hpp‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include<boost/asio/ip/tcp.hpp>
1313
#include<boost/thread/mutex.hpp>
1414
#include<boost/network/protocol/http/server/options.hpp>
15+
#include<boost/network/protocol/http/server/impl/socket_options_setter.hpp>
1516

1617
namespaceboost {namespacenetwork {namespaceutils {
1718

@@ -29,7 +30,7 @@ struct request;
2930

3031
classasync_server_connection;
3132

32-
classasync_server_impl {
33+
classasync_server_impl:protectedsocket_options_setter{
3334
public:
3435
typedef shared_ptr<async_server_connection> connection_ptr;
3536
async_server_impl(server_optionsconst &options,
@@ -54,9 +55,6 @@ class async_server_impl {
5455
voidhandle_stop();
5556
voidstart_listening();
5657
voidhandle_accept(system::error_codeconst &ec);
57-
58-
voidset_socket_options(asio::ip::tcp::socket &socket);
59-
voidset_acceptor_options(asio::ip::tcp::acceptor &acceptor);
6058
};
6159

6260
}// namespace http

‎boost/network/protocol/http/server/async_impl.ipp‎

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void async_server_impl::handle_accept(boost::system::error_code const & ec) {
9090
if (stopping_)return;
9191
}
9292
if (!ec) {
93-
set_socket_options(new_connection_->socket());
93+
set_socket_options(options_,new_connection_->socket());
9494
new_connection_->start();
9595
new_connection_.reset(
9696
newasync_server_connection(*service_, handler_, pool_));
@@ -122,7 +122,7 @@ void async_server_impl::start_listening() {
122122
BOOST_NETWORK_MESSAGE("error opening socket:" << address_ <<":" << port_);
123123
BOOST_THROW_EXCEPTION(std::runtime_error("Error opening socket."));
124124
}
125-
set_acceptor_options(*acceptor_);
125+
set_acceptor_options(options_,*acceptor_);
126126
acceptor_->bind(endpoint, error);
127127
if (error) {
128128
BOOST_NETWORK_MESSAGE("error binding socket:" << address_ <<":" << port_);
@@ -146,41 +146,6 @@ void async_server_impl::start_listening() {
146146
BOOST_NETWORK_MESSAGE("now listening on '" << address_ <<":" << port_ <<"'");
147147
}
148148

149-
voidasync_server_impl::set_socket_options(asio::ip::tcp::socket &socket) {
150-
system::error_code ignored;
151-
socket.non_blocking(options_.non_blocking_io(), ignored);
152-
if (options_.linger()) {
153-
asio::ip::tcp::socket::lingerlinger(true, options_.linger_timeout());
154-
socket.set_option(linger, ignored);
155-
}
156-
if (int buf_size = options_.receive_buffer_size() >=0) {
157-
asio::ip::tcp::socket::receive_buffer_sizereceive_buffer_size(buf_size);
158-
socket.set_option(receive_buffer_size, ignored);
159-
}
160-
if (int buf_size = options_.send_buffer_size() >=0) {
161-
asio::ip::tcp::socket::send_buffer_sizesend_buffer_size(buf_size);
162-
socket.set_option(send_buffer_size, ignored);
163-
}
164-
if (int buf_size = options_.receive_low_watermark() >=0) {
165-
asio::ip::tcp::socket::receive_low_watermarkreceive_low_watermark(buf_size);
166-
socket.set_option(receive_low_watermark, ignored);
167-
}
168-
if (int buf_size = options_.send_low_watermark() >=0) {
169-
asio::ip::tcp::socket::send_low_watermarksend_low_watermark(buf_size);
170-
socket.set_option(send_low_watermark, ignored);
171-
}
172-
}
173-
174-
voidasync_server_impl::set_acceptor_options(asio::ip::tcp::acceptor &acceptor) {
175-
system::error_code ignored;
176-
acceptor.set_option(
177-
asio::ip::tcp::acceptor::reuse_address(options_.reuse_address()),
178-
ignored);
179-
acceptor.set_option(
180-
asio::ip::tcp::acceptor::enable_connection_aborted(options_.report_aborted()),
181-
ignored);
182-
}
183-
184149
}// namespace http
185150

186151
}// namespace network

‎boost/network/protocol/http/server/connection/sync.hpp‎

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
#defineBOOST_NETWORK_HTTP_SERVER_SYNC_CONNECTION_HPP_
1010

1111
#ifndef BOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE
12-
#defineBOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE1024uL
12+
#defineBOOST_NETWORK_HTTP_SERVER_CONNECTION_BUFFER_SIZE4096uL
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>
@@ -29,10 +29,9 @@
2929

3030
namespaceboost {namespacenetwork {namespacehttp {
3131

32-
template<classTag,classHandler>
33-
structsync_connection : boost::enable_shared_from_this<sync_connection<Tag,Handler> > {
32+
classsync_server_connection :publicboost::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(requestconst &, response &)> handler)
3635
: service_(service)
3736
, handler_(handler)
3837
, socket_(service_)
@@ -58,8 +57,8 @@ namespace boost { namespace network { namespace http {
5857
boost::asio::buffer(buffer_),
5958
wrapper_.wrap(
6059
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(),
6362
boost::asio::placeholders::error,
6463
boost::asio::placeholders::bytes_transferred
6564
)
@@ -92,14 +91,14 @@ namespace boost { namespace network { namespace http {
9291
is_content_length()
9392
);
9493
if (it == request_.headers.end()) {
95-
response_=basic_response<Tag>::stock_reply(basic_response<Tag>::bad_request);
94+
response_=stock_reply(bad_request);
9695
boost::asio::async_write(
9796
socket_,
9897
response_.to_buffers(),
9998
wrapper_.wrap(
10099
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(),
103102
boost::asio::placeholders::error
104103
)
105104
)
@@ -112,14 +111,14 @@ namespace boost { namespace network { namespace http {
112111
try {
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);
116115
boost::asio::async_write(
117116
socket_,
118117
response_.to_buffers(),
119118
wrapper_.wrap(
120119
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(),
123122
boost::asio::placeholders::error
124123
)
125124
)
@@ -137,8 +136,8 @@ namespace boost { namespace network { namespace http {
137136
boost::asio::buffer(buffer_),
138137
wrapper_.wrap(
139138
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(),
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(
157156
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(),
160159
boost::asio::placeholders::error
161160
)
162161
)
@@ -168,22 +167,22 @@ namespace boost { namespace network { namespace http {
168167
response_.to_buffers(),
169168
wrapper_.wrap(
170169
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(),
173172
boost::asio::placeholders::error
174173
)
175174
)
176175
);
177176
}
178177
}elseif (!done) {
179-
response_=basic_response<Tag>::stock_reply(basic_response<Tag>::bad_request);
178+
response_=stock_reply(bad_request);
180179
boost::asio::async_write(
181180
socket_,
182181
response_.to_buffers(),
183182
wrapper_.wrap(
184183
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(),
187186
boost::asio::placeholders::error
188187
)
189188
)
@@ -193,8 +192,8 @@ namespace boost { namespace network { namespace http {
193192
boost::asio::buffer(buffer_),
194193
wrapper_.wrap(
195194
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(),
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(
221220
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(),
224223
boost::asio::placeholders::error
225224
)
226225
)
@@ -230,8 +229,8 @@ namespace boost { namespace network { namespace http {
230229
boost::asio::buffer(buffer_),
231230
wrapper_.wrap(
232231
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(),
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(requestconst &, response &)> handler_;
256255
boost::asio::ip::tcp::socket socket_;
257256
boost::asio::io_service::strand wrapper_;
258257

259258
typedef 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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef BOOST_NETWORK_PROTOCOL_HTTP_SERVER_IMPL_SOCKET_OPIONS_SETTER_20120319
2+
#defineBOOST_NETWORK_PROTOCOL_HTTP_SERVER_IMPL_SOCKET_OPIONS_SETTER_20120319
3+
4+
// Copyright 2012 Dean Michael Berris <dberris@google.com>.
5+
// Copyright 2012 Google, Inc.
6+
// Distributed under the Boost Software License, Version 1.0.
7+
// (See accompanying file LICENSE_1_0.txt or copy at
8+
// http://www.boost.org/LICENSE_1_0.txt)
9+
10+
#include<boost/asio/ip/tcp.hpp>
11+
12+
namespaceboost {namespacenetwork {namespacehttp {
13+
14+
classserver_options;
15+
16+
classsocket_options_setter {
17+
protected:
18+
voidset_socket_options(server_optionsconst &options, asio::ip::tcp::socket &socket);
19+
voidset_acceptor_options(server_optionsconst &options, asio::ip::tcp::acceptor &acceptor);
20+
};
21+
22+
}// namespace http
23+
24+
}// namespace network
25+
26+
}// namespace boost
27+
28+
#endif// BOOST_NETWORK_PROTOCOL_HTTP_SERVER_IMPL_SOCKET_OPIONS_SETTER_20120319
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#ifndef BOOST_NETWORK_PROTOCOL_HTTP_SERVER_IMPL_SOCKET_OPTIONS_SETTER_IPP_20120319
2+
#defineBOOST_NETWORK_PROTOCOL_HTTP_SERVER_IMPL_SOCKET_OPTIONS_SETTER_IPP_20120319
3+
4+
// Copyright 2012 Dean Michael Berris <dberris@google.com>.
5+
// Copyright 2012 Google, Inc.
6+
// Distributed under the Boost Software License, Version 1.0.
7+
// (See accompanying file LICENSE_1_0.txt or copy at
8+
// http://www.boost.org/LICENSE_1_0.txt)
9+
10+
#include<boost/network/protocol/http/server/impl/socket_options_setter.hpp>
11+
#include<boost/network/protocol/http/server/options.hpp>
12+
13+
namespaceboost {namespacenetwork {namespacehttp {
14+
15+
voidsocket_options_setter::set_socket_options(server_optionsconst & options, asio::ip::tcp::socket &socket) {
16+
system::error_code ignored;
17+
socket.non_blocking(options.non_blocking_io(), ignored);
18+
if (options.linger()) {
19+
asio::ip::tcp::socket::lingerlinger(true, options.linger_timeout());
20+
socket.set_option(linger, ignored);
21+
}
22+
if (int buf_size = options.receive_buffer_size() >=0) {
23+
asio::ip::tcp::socket::receive_buffer_sizereceive_buffer_size(buf_size);
24+
socket.set_option(receive_buffer_size, ignored);
25+
}
26+
if (int buf_size = options.send_buffer_size() >=0) {
27+
asio::ip::tcp::socket::send_buffer_sizesend_buffer_size(buf_size);
28+
socket.set_option(send_buffer_size, ignored);
29+
}
30+
if (int buf_size = options.receive_low_watermark() >=0) {
31+
asio::ip::tcp::socket::receive_low_watermarkreceive_low_watermark(buf_size);
32+
socket.set_option(receive_low_watermark, ignored);
33+
}
34+
if (int buf_size = options.send_low_watermark() >=0) {
35+
asio::ip::tcp::socket::send_low_watermarksend_low_watermark(buf_size);
36+
socket.set_option(send_low_watermark, ignored);
37+
}
38+
}
39+
40+
voidsocket_options_setter::set_acceptor_options(server_optionsconst &options, asio::ip::tcp::acceptor &acceptor) {
41+
system::error_code ignored;
42+
acceptor.set_option(
43+
asio::ip::tcp::acceptor::reuse_address(options.reuse_address()),
44+
ignored);
45+
acceptor.set_option(
46+
asio::ip::tcp::acceptor::enable_connection_aborted(options.report_aborted()),
47+
ignored);
48+
}
49+
50+
}// namespace http
51+
52+
}// namespace network
53+
54+
}// namespace boost
55+
56+
#endif// BOOST_NETWORK_PROTOCOL_HTTP_SERVER_IMPL_SOCKET_OPTIONS_SETTER_IPP_20120319

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp