mirror of
https://github.com/boostorg/beast.git
synced 2025-07-31 13:27:33 +02:00
Improve first line serialization
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
* Frame processing routines are member functions
|
* Frame processing routines are member functions
|
||||||
* Fix on_headers called twice from basic_parser_v1
|
* Fix on_headers called twice from basic_parser_v1
|
||||||
* Constrain parser_v1 constructor
|
* Constrain parser_v1 constructor
|
||||||
|
* Improve first line serialization
|
||||||
* Refine Parser concept
|
* Refine Parser concept
|
||||||
|
|
||||||
API Changes:
|
API Changes:
|
||||||
|
@@ -40,11 +40,24 @@ write_firstline(DynamicBuffer& dynabuf,
|
|||||||
write(dynabuf, msg.method);
|
write(dynabuf, msg.method);
|
||||||
write(dynabuf, " ");
|
write(dynabuf, " ");
|
||||||
write(dynabuf, msg.url);
|
write(dynabuf, msg.url);
|
||||||
write(dynabuf, " HTTP/");
|
switch(msg.version)
|
||||||
write(dynabuf, msg.version / 10);
|
{
|
||||||
write(dynabuf, ".");
|
case 10:
|
||||||
write(dynabuf, msg.version % 10);
|
write(dynabuf, " HTTP/1.0\r\n");
|
||||||
write(dynabuf, "\r\n");
|
break;
|
||||||
|
case 11:
|
||||||
|
write(dynabuf, " HTTP/1.1\r\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
std::string s;
|
||||||
|
s = " HTTP/" +
|
||||||
|
std::to_string(msg.version/10) + '.' +
|
||||||
|
std::to_string(msg.version%10) + "\r\n";
|
||||||
|
write(dynabuf, s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class DynamicBuffer, class Body, class Headers>
|
template<class DynamicBuffer, class Body, class Headers>
|
||||||
@@ -52,11 +65,24 @@ void
|
|||||||
write_firstline(DynamicBuffer& dynabuf,
|
write_firstline(DynamicBuffer& dynabuf,
|
||||||
message_v1<false, Body, Headers> const& msg)
|
message_v1<false, Body, Headers> const& msg)
|
||||||
{
|
{
|
||||||
write(dynabuf, "HTTP/");
|
switch(msg.version)
|
||||||
write(dynabuf, msg.version / 10);
|
{
|
||||||
write(dynabuf, ".");
|
case 10:
|
||||||
write(dynabuf, msg.version % 10);
|
write(dynabuf, "HTTP/1.0 ");
|
||||||
write(dynabuf, " ");
|
break;
|
||||||
|
case 11:
|
||||||
|
write(dynabuf, "HTTP/1.1 ");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
std::string s;
|
||||||
|
s = " HTTP/" +
|
||||||
|
std::to_string(msg.version/10) + '.' +
|
||||||
|
std::to_string(msg.version%10) + ' ';
|
||||||
|
write(dynabuf, s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
write(dynabuf, msg.status);
|
write(dynabuf, msg.status);
|
||||||
write(dynabuf, " ");
|
write(dynabuf, " ");
|
||||||
write(dynabuf, msg.reason);
|
write(dynabuf, msg.reason);
|
||||||
|
Reference in New Issue
Block a user