Skip to content

Commit fc780ae

Browse files
committed
Request/Reponse changes to follow message_base changes.
1 parent 4ef1f27 commit fc780ae

File tree

3 files changed

+146
-153
lines changed

3 files changed

+146
-153
lines changed

include/network/protocol/http/request/request.hpp

Lines changed: 69 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -15,83 +15,80 @@
1515

1616
namespace network { namespace http {
1717

18-
struct request_pimpl;
19-
20-
struct request : request_base {
21-
// We support full value semantics.
22-
request();
23-
explicit request(std::string const & url);
24-
explicit request(::network::uri const & url);
25-
request(request const &);
26-
request& operator=(request);
27-
void swap(request & other);
28-
bool equals(request const &other) const;
29-
30-
// From message_base...
31-
// Mutators
32-
virtual void set_destination(std::string const & destination);
33-
virtual void set_source(std::string const & source);
34-
virtual void append_header(std::string const & name,
35-
std::string const & value);
36-
virtual void remove_headers(std::string const & name);
37-
virtual void remove_headers();
38-
virtual void set_body(std::string const & body);
39-
virtual void append_body(std::string const & data);
40-
41-
// Retrievers
42-
virtual void get_destination(std::string & destination) const;
43-
virtual void get_source(std::string & source) const;
44-
virtual void get_headers(boost::function<void(std::string const &, std::string const &)> inserter) const;
45-
virtual void get_headers(std::string const & name, boost::function<void(std::string const &, std::string const &)> inserter) const;
46-
virtual void get_headers(boost::function<bool(std::string const &, std::string const &)> predicate, boost::function<void(std::string const &, std::string const &)> inserter) const;
47-
virtual void get_body(std::string & body) const;
48-
virtual void get_body(boost::function<void(boost::iterator_range<char const *>)> chunk_reader, size_t size) const;
49-
50-
// From request_base...
51-
// Setters
52-
virtual void set_method(std::string const & method);
53-
virtual void set_status(std::string const & status);
54-
virtual void set_status_message(std::string const & status_message);
55-
virtual void set_body_writer(boost::function<void(char*, size_t)> writer);
56-
virtual void set_uri(std::string const &uri);
57-
virtual void set_uri(::network::uri const &uri);
58-
virtual void set_version_major(unsigned short major_version);
59-
virtual void set_version_minor(unsigned short minor_version);
60-
61-
// Getters
62-
virtual void get_uri(::network::uri &uri) const;
63-
virtual void get_uri(std::string &uri) const;
64-
virtual void get_method(std::string & method) const;
65-
virtual void get_status(std::string & status) const;
66-
virtual void get_status_message(std::string & status_message) const;
67-
virtual void get_body(boost::function<void(char*, size_t)> chunk_reader) const;
68-
virtual void get_body(std::string const & body) const;
69-
virtual void get_version_major(unsigned short &major_version);
70-
virtual void get_version_minor(unsigned short &minor_version);
71-
72-
virtual ~request();
73-
private:
74-
request_pimpl* pimpl_;
75-
};
76-
77-
template <class Directive>
78-
request_base & operator<< (request_base & request,
79-
Directive const & directive) {
18+
struct request_pimpl;
19+
20+
struct request : request_base {
21+
// We support full value semantics.
22+
request();
23+
explicit request(std::string const & url);
24+
explicit request(::network::uri const & url);
25+
request(request const &);
26+
request& operator=(request);
27+
28+
// From message_base...
29+
// Mutators
30+
virtual void set_destination(std::string const & destination);
31+
virtual void set_source(std::string const & source);
32+
virtual void append_header(std::string const & name,
33+
std::string const & value);
34+
virtual void remove_headers(std::string const & name);
35+
virtual void remove_headers();
36+
virtual void set_body(std::string const & body);
37+
virtual void append_body(std::string const & data);
38+
39+
// Retrievers
40+
virtual void get_destination(std::string & destination) const;
41+
virtual void get_source(std::string & source) const;
42+
virtual void get_headers(boost::function<void(std::string const &, std::string const &)> inserter) const;
43+
virtual void get_headers(std::string const & name, boost::function<void(std::string const &, std::string const &)> inserter) const;
44+
virtual void get_headers(boost::function<bool(std::string const &, std::string const &)> predicate, boost::function<void(std::string const &, std::string const &)> inserter) const;
45+
virtual void get_body(std::string & body) const;
46+
virtual void get_body(boost::function<void(std::string::const_iterator, size_t)> chunk_reader, size_t size) const;
47+
48+
// From request_base...
49+
// Setters
50+
virtual void set_method(std::string const & method);
51+
virtual void set_status(std::string const & status);
52+
virtual void set_status_message(std::string const & status_message);
53+
virtual void set_body_writer(boost::function<void(char*, size_t)> writer);
54+
virtual void set_uri(std::string const &uri);
55+
virtual void set_uri(::network::uri const &uri);
56+
virtual void set_version_major(unsigned short major_version);
57+
virtual void set_version_minor(unsigned short minor_version);
58+
59+
// Getters
60+
virtual void get_uri(::network::uri &uri) const;
61+
virtual void get_uri(std::string &uri) const;
62+
virtual void get_method(std::string & method) const;
63+
virtual void get_status(std::string & status) const;
64+
virtual void get_status_message(std::string & status_message) const;
65+
virtual void get_body(boost::function<void(std::string::const_iterator, size_t)> chunk_reader) const;
66+
virtual void get_version_major(unsigned short &major_version);
67+
virtual void get_version_minor(unsigned short &minor_version);
68+
69+
virtual ~request();
70+
private:
71+
request_pimpl* pimpl_;
72+
};
73+
74+
template <class Directive>
75+
request_base & operator<< (request_base & request,
76+
Directive const & directive) {
8077
directive(request);
8178
return request;
82-
}
79+
}
8380

84-
inline void swap(request &l, request &r) {
85-
l.swap(r);
86-
}
81+
inline void swap(request &l, request &r) {
82+
l.swap(r);
83+
}
8784

88-
inline bool operator==(request const &l, request const &r) {
89-
return l.equals(r);
90-
}
85+
inline bool operator==(request const &l, request const &r) {
86+
return l.equals(r);
87+
}
9188

92-
inline bool operator!=(request const &l, request const &r) {
93-
return !l.equals(r);
94-
}
89+
inline bool operator!=(request const &l, request const &r) {
90+
return !l.equals(r);
91+
}
9592

9693
} // namespace http
9794
} // namespace network

include/network/protocol/http/request/request_base.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ struct request_base : message_base, request_storage_base {
5454
virtual void get_method(std::string & method) const = 0;
5555
virtual void get_status(std::string & status) const = 0;
5656
virtual void get_status_message(std::string & status_message) const = 0;
57-
virtual void get_body(boost::function<void(char*, size_t)> chunk_reader) const = 0;
57+
virtual void get_body(boost::function<void(std::string::const_iterator, size_t)> chunk_reader, size_t size) const = 0;
5858
virtual void get_body(std::string & body) const = 0;
5959
virtual ~request_base() = 0;
6060
};

include/network/protocol/http/response/response.hpp

Lines changed: 76 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -12,88 +12,84 @@
1212

1313
namespace network { namespace http {
1414

15-
struct response_pimpl;
16-
17-
struct response : response_base {
18-
response();
19-
response(response const &);
20-
response& operator=(response);
21-
void swap(response &);
22-
bool equals(response const &) const;
23-
24-
// From message_base...
25-
// Mutators
26-
virtual void set_destination(std::string const & destination);
27-
virtual void set_source(std::string const & source);
28-
virtual void append_header(std::string const & name,
29-
std::string const & value);
30-
virtual void remove_headers(std::string const & name);
31-
virtual void remove_headers();
32-
virtual void set_body(std::string const & body);
33-
virtual void append_body(std::string const & data);
34-
35-
// Retrievers
36-
virtual void get_destination(std::string & destination) const;
37-
virtual void get_source(std::string & source) const;
38-
virtual void get_headers(
39-
boost::function<void(std::string const &, std::string const &)> inserter) const;
40-
virtual void get_headers(
41-
std::string const & name,
42-
boost::function<void(std::string const &, std::string const &)> inserter) const;
43-
virtual void get_headers(
44-
boost::function<bool(std::string const &, std::string const &)> predicate,
45-
boost::function<void(std::string const &, std::string const &)> inserter) const;
46-
virtual void get_body(std::string & body) const;
47-
virtual void get_body(
48-
boost::function<void(boost::iterator_range<char const *>)> chunk_reader,
49-
size_t size) const;
50-
51-
// From response_base...
52-
virtual void set_status(boost::uint16_t new_status);
53-
virtual void set_status_message(std::string const & new_status_message);
54-
virtual void set_version(std::string const & new_version);
55-
virtual void get_status(boost::uint16_t &status) const;
56-
virtual void get_status_message(std::string &status_message) const;
57-
virtual void get_version(std::string &version) const;
58-
virtual ~response();
59-
60-
private:
61-
friend struct impl::setter_access; // Hide access through accessor class.
62-
// These methods are unique to the response type which will allow for creating
63-
// promises that can be set appropriately.
64-
void set_version_promise(boost::promise<std::string>&);
65-
void set_status_promise(boost::promise<boost::uint16_t>&);
66-
void set_status_message_promise(boost::promise<std::string>&);
67-
void set_headers_promise(boost::promise<std::multimap<std::string, std::string> >&);
68-
void set_source_promise(boost::promise<std::string>&);
69-
void set_destination_promise(boost::promise<std::string>&);
70-
void set_body_promise(boost::promise<std::string>&);
71-
72-
response_pimpl *pimpl_;
73-
};
74-
75-
inline void swap(response &l, response &r) {
76-
l.swap(r);
77-
}
78-
79-
inline bool operator==(response const &l, response const &r) {
80-
return l.equals(r);
81-
}
82-
83-
inline bool operator!=(response const &l, response const &r) {
84-
return !l.equals(r);
85-
}
86-
87-
template <class Directive>
88-
response & operator<<(
89-
response & message,
90-
Directive const & directive
91-
)
92-
{
15+
struct response_pimpl;
16+
17+
struct response : response_base {
18+
response();
19+
response(response const &);
20+
response& operator=(response);
21+
void swap(response &);
22+
bool equals(response const &) const;
23+
24+
// From message_base...
25+
// Mutators
26+
virtual void set_destination(std::string const & destination);
27+
virtual void set_source(std::string const & source);
28+
virtual void append_header(std::string const & name,
29+
std::string const & value);
30+
virtual void remove_headers(std::string const & name);
31+
virtual void remove_headers();
32+
virtual void set_body(std::string const & body);
33+
virtual void append_body(std::string const & data);
34+
35+
// Retrievers
36+
virtual void get_destination(std::string & destination) const;
37+
virtual void get_source(std::string & source) const;
38+
virtual void get_headers(boost::function<void(std::string const &, std::string const &)> inserter) const;
39+
virtual void get_headers(std::string const & name,
40+
boost::function<void(std::string const &, std::string const &)> inserter) const;
41+
virtual void get_headers(boost::function<bool(std::string const &, std::string const &)> predicate,
42+
boost::function<void(std::string const &, std::string const &)> inserter) const;
43+
virtual void get_body(std::string & body) const;
44+
virtual void get_body(boost::function<void(std::string::const_iterator, size_t)> chunk_reader,
45+
size_t size) const;
46+
47+
// From response_base...
48+
virtual void set_status(boost::uint16_t new_status);
49+
virtual void set_status_message(std::string const & new_status_message);
50+
virtual void set_version(std::string const & new_version);
51+
virtual void get_status(boost::uint16_t &status) const;
52+
virtual void get_status_message(std::string &status_message) const;
53+
virtual void get_version(std::string &version) const;
54+
virtual ~response();
55+
56+
private:
57+
friend struct impl::setter_access; // Hide access through accessor class.
58+
// These methods are unique to the response type which will allow for creating
59+
// promises that can be set appropriately.
60+
void set_version_promise(boost::promise<std::string>&);
61+
void set_status_promise(boost::promise<boost::uint16_t>&);
62+
void set_status_message_promise(boost::promise<std::string>&);
63+
void set_headers_promise(boost::promise<std::multimap<std::string, std::string> >&);
64+
void set_source_promise(boost::promise<std::string>&);
65+
void set_destination_promise(boost::promise<std::string>&);
66+
void set_body_promise(boost::promise<std::string>&);
67+
68+
response_pimpl *pimpl_;
69+
};
70+
71+
inline void swap(response &l, response &r) {
72+
l.swap(r);
73+
}
74+
75+
inline bool operator==(response const &l, response const &r) {
76+
return l.equals(r);
77+
}
78+
79+
inline bool operator!=(response const &l, response const &r) {
80+
return !l.equals(r);
81+
}
82+
83+
template <class Directive>
84+
response & operator<<(
85+
response & message,
86+
Directive const & directive
87+
)
88+
{
9389
directive(message);
9490
return message;
95-
}
96-
91+
}
92+
9793
} // namespace http
9894
} // namespace network
9995

0 commit comments

Comments
 (0)