Skip to content

Commit 2af5fb0

Browse files
committed
Cleaning up tag dispatch of HTTP-specific modifiers.
1 parent 3133d24 commit 2af5fb0

File tree

3 files changed

+33
-39
lines changed

3 files changed

+33
-39
lines changed

boost/network/protocol/http/message/modifiers/body.hpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,6 @@ namespace boost { namespace network { namespace http {
3333
response.body(future);
3434
}
3535

36-
template <class Tag, class T>
37-
void body(basic_request<Tag> & request, T const & value, tags::server const &) {
38-
request.body = value;
39-
}
40-
41-
template <class Tag, class T>
42-
void body(basic_request<Tag> & request, T const & value, tags::client const &) {
43-
request << ::boost::network::body(value);
44-
}
45-
4636
}
4737

4838
template <class Tag, class T>
@@ -54,16 +44,13 @@ namespace boost { namespace network { namespace http {
5444
template <class Tag, class T>
5545
inline void
5646
body_impl(basic_request<Tag> & request, T const & value, tags::server) {
57-
impl::body(request, value, Tag());
47+
request.body = value;
5848
}
5949

60-
template <class R>
61-
struct ClientRequest;
62-
6350
template <class Tag, class T>
6451
inline void
6552
body_impl(basic_request<Tag> & request, T const & value, tags::client) {
66-
impl::body(request, value, Tag());
53+
request << ::boost::network::body(value);
6754
}
6855

6956
template <class Tag, class T>

boost/network/protocol/http/message/modifiers/clear_headers.hpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,32 @@
11
#ifndef BOOST_NETWORK_PROTOCOL_HTTP_MESSAGE_MODIFIERS_CLEAR_HEADER_HPP_20101128
22
#define BOOST_NETWORK_PROTOCOL_HTTP_MESSAGE_MODIFIERS_CLEAR_HEADER_HPP_20101128
33

4+
// Copyright 2010 Dean Michael Berris.
5+
// Distributed under the Boost Software License, Version 1.0.
6+
// (See accompanying file LICENSE_1_0.txt or copy at
7+
// http://www.boost.org/LICENSE_1_0.txt)
8+
49
#include <boost/network/protocol/http/support/client_or_server.hpp>
10+
#include <boost/network/support/pod_or_normal.hpp>
511
#include <boost/network/support/is_async.hpp>
612
#include <boost/thread/future.hpp>
713

814
namespace boost { namespace network { namespace http {
915

10-
namespace impl {
11-
12-
template <class Tag>
13-
inline typename enable_if<
14-
is_client<Tag>
15-
, void
16-
>::type
17-
clear_headers(basic_request<Tag> & request) {
18-
request.headers(typename basic_request<Tag>::headers_container_type());
19-
}
16+
template <class Tag>
17+
inline void clear_headers_impl(basic_request<Tag> & request, tags::pod) {
18+
typedef typename basic_request<Tag>::headers_container_type headers_container;
19+
headers_container().swap(request.headers);
20+
}
2021

21-
} /* impl */
22+
template <class Tag>
23+
inline void clear_headers_impl(basic_request<Tag> & request, tags::normal) {
24+
request.headers(typename basic_request<Tag>::headers_container_type());
25+
}
2226

2327
template <class Tag>
2428
inline void clear_headers_impl(basic_request<Tag> & request, tags::client) {
25-
impl::clear_headers(request);
29+
clear_headers_impl(request, typename pod_or_normal<Tag>::type());
2630
}
2731

2832
template <class Tag>

boost/network/protocol/http/message/modifiers/destination.hpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
// http://www.boost.org/LICENSE_1_0.txt)
88

99
#include <boost/network/protocol/http/support/client_or_server.hpp>
10+
#include <boost/network/support/pod_or_normal.hpp>
1011
#include <boost/network/support/is_async.hpp>
1112
#include <boost/thread/future.hpp>
1213
#include <boost/concept/requires.hpp>
@@ -31,16 +32,6 @@ namespace boost { namespace network { namespace http {
3132
response.destination(future);
3233
}
3334

34-
template <class Tag, class T>
35-
void destination(basic_request<Tag> & request, T const & value, tags::server const &) {
36-
request.destination = value;
37-
}
38-
39-
template <class Tag, class T>
40-
void destination(basic_request<Tag> & request, T const & value, tags::client const &) {
41-
request << ::boost::network::destination(value);
42-
}
43-
4435
}
4536

4637
template <class Tag, class T>
@@ -55,13 +46,25 @@ namespace boost { namespace network { namespace http {
5546
template <class Tag, class T>
5647
inline void
5748
destination_impl(basic_request<Tag> & request, T const & value, tags::server) {
58-
impl::destination(request, value, Tag());
49+
request.destination = value;
50+
}
51+
52+
template <class Tag, class T>
53+
inline void
54+
destination_impl(basic_request<Tag> & request, T const & value, tags::pod) {
55+
request.destination = value;
56+
}
57+
58+
template <class Tag, class T>
59+
inline void
60+
destination_impl(basic_request<Tag> & request, T const & value, tags::normal) {
61+
request.destination(value);
5962
}
6063

6164
template <class Tag, class T>
6265
inline void
6366
destination_impl(basic_request<Tag> & request, T const & value, tags::client) {
64-
impl::destination(request, value, Tag());
67+
destination_impl(request, value, typename pod_or_normal<Tag>::type());
6568
}
6669

6770
template <class Tag, class T>

0 commit comments

Comments
 (0)