Refactor http::header contents (API Change):

fix #124

The http::header data members "method", "url", and "reason"
are changed from data members, to pairs of get and set
functions which forward the call to the Fields type used
to instantiate the template.

Previously, these data members were implemented using
std::string. With this change, the implementation of the
Fields type used to instantiate the template is now in
control of the representation of those values. This permits
custom memory allocation strategies including uniform use of
the Allocator type already provided to beast::http::basic_fields.
This commit is contained in:
Vinnie Falco
2017-05-07 13:40:04 -07:00
parent dd02097d26
commit ff5e659545
30 changed files with 319 additions and 213 deletions
+2 -2
View File
@@ -35,8 +35,8 @@ int main()
// Send HTTP request using beast
beast::http::request<beast::http::string_body> req;
req.method = "GET";
req.url = "/";
req.method("GET");
req.target("/");
req.version = 11;
req.fields.replace("Host", host + ":" +
boost::lexical_cast<std::string>(sock.remote_endpoint().port()));
+6 -6
View File
@@ -113,7 +113,7 @@ that type.
This illustration shows the declarations and members of the __header__ and
__message__ class templates, as well as the inheritance relationship:
[$images/message.png [width 650px] [height 390px]]
[$images/message.png [width 711px] [height 424px]]
For notational convenience, these template type aliases are provided which
supply typical choices for the [*`Fields`] type:
@@ -137,8 +137,8 @@ object:
```
request<string_body> req;
req.version = 11; // HTTP/1.1
req.method = "GET";
req.url = "/index.htm"
req.method("GET");
req.target("/index.htm");
req.fields.insert("Accept", "text/html");
req.fields.insert("Connection", "keep-alive");
req.fields.insert("User-Agent", "Beast");
@@ -148,7 +148,7 @@ object:
response<string_body> res;
res.version = 11; // HTTP/1.1
res.status = 200;
res.reason = "OK";
res.reason("OK");
res.fields.insert("Server", "Beast");
res.fields.insert("Content-Length", 4);
res.body = "****";
@@ -295,8 +295,8 @@ operations performed). To send messages synchronously, use one of the
{
request<string_body> req;
req.version = 11;
req.method = "GET";
req.url = "/index.html";
req.method("GET");
req.target("/index.html");
...
write(sock, req); // Throws exception on error
...
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.