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

Commitddc8bdf

Browse files
committed
SFINAE for choosing 'write' overload
Aside from adding an additional clarification in the documentation forthe macro defining the size of a page, this change makes the user-facing'write' implementation use SFINAE to choose whether to deal with thebuffer provided as a buffer that doesn't need to be copied (derives fromBoost.Asio's const_buffer type) or whether it's something that needs tobe copied (in the case of any other range).In the future there should be other overloads which deal with explicitBoost.Range iterator ranges, and maybe specific types.
1 parent37efecc commitddc8bdf

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include<boost/utility/typed_in_place_factory.hpp>
2525
#include<boost/thread/locks.hpp>
2626
#include<boost/thread/recursive_mutex.hpp>
27+
#include<boost/utility/enable_if.hpp>
2728
#include<list>
2829
#include<vector>
2930
#include<iterator>
@@ -35,6 +36,10 @@
3536
* This is the maximum size though and Boost.Asio's internal representation
3637
* of a streambuf would make appropriate decisions on how big a buffer
3738
* is to begin with.
39+
*
40+
* This kinda assumes that a page is by default 4096. Since we're using
41+
* the default allocator with the static buffers, it's not guaranteed that
42+
* the static buffers will be page-aligned when they are allocated.
3843
*/
3944
#defineBOOST_NETWORK_HTTP_SERVER_CONNECTION_HEADER_BUFFER_MAX_SIZE4096
4045
#endif/* BOOST_NETWORK_HTTP_SERVER_CONNECTION_HEADER_BUFFER_MAX_SIZE*/
@@ -211,14 +216,16 @@ namespace boost { namespace network { namespace http {
211216
}
212217

213218
template<classRange,classCallback>
214-
voidwrite(Rangeconst & range, Callbackconst & callback) {
219+
typename disable_if<is_base_of<asio::const_buffer, Range>,void>::type
220+
write(Rangeconst & range, Callbackconst & callback) {
215221
lock_guardlock(headers_mutex);
216222
if (error_encountered)boost::throw_exception(boost::system::system_error(*error_encountered));
217223
write_impl(boost::make_iterator_range(range), callback);
218224
}
219225

220226
template<classConstBufferSeq,classCallback>
221-
voidwrite_vec(ConstBufferSeqconst & seq, Callbackconst & callback)
227+
typename enable_if<is_base_of<asio::const_buffer, ConstBufferSeq>,void>::type
228+
write(ConstBufferSeqconst & seq, Callbackconst & callback)
222229
{
223230
write_vec_impl(seq, callback,shared_array_list(),shared_buffers());
224231
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp