Refine message class hierarchy:

Two new objects, request_headers and response_headers,
represent the portion of HTTP messages excluding the body.
This commit is contained in:
Vinnie Falco
2016-10-20 17:22:36 -04:00
parent cf43f516d2
commit ada1f60e3e
31 changed files with 569 additions and 487 deletions
+13 -13
View File
@@ -34,7 +34,7 @@ namespace detail {
template<class DynamicBuffer, class Body, class Headers>
void
write_firstline(DynamicBuffer& dynabuf,
message_v1<true, Body, Headers> const& msg)
message<true, Body, Headers> const& msg)
{
write(dynabuf, msg.method);
write(dynabuf, " ");
@@ -62,7 +62,7 @@ write_firstline(DynamicBuffer& dynabuf,
template<class DynamicBuffer, class Body, class Headers>
void
write_firstline(DynamicBuffer& dynabuf,
message_v1<false, Body, Headers> const& msg)
message<false, Body, Headers> const& msg)
{
switch(msg.version)
{
@@ -108,7 +108,7 @@ write_fields(DynamicBuffer& dynabuf, FieldSequence const& fields)
template<bool isRequest, class Body, class Headers>
struct write_preparation
{
message_v1<isRequest, Body, Headers> const& msg;
message<isRequest, Body, Headers> const& msg;
typename Body::writer w;
streambuf sb;
bool chunked;
@@ -116,7 +116,7 @@ struct write_preparation
explicit
write_preparation(
message_v1<isRequest, Body, Headers> const& msg_)
message<isRequest, Body, Headers> const& msg_)
: msg(msg_)
, w(msg)
, chunked(token_list{
@@ -161,7 +161,7 @@ class write_op
template<class DeducedHandler>
data(DeducedHandler&& h_, Stream& s_,
message_v1<isRequest, Body, Headers> const& m_)
message<isRequest, Body, Headers> const& m_)
: s(s_)
, wp(m_)
, h(std::forward<DeducedHandler>(h_))
@@ -467,7 +467,7 @@ template<class SyncWriteStream,
bool isRequest, class Body, class Headers>
void
write(SyncWriteStream& stream,
message_v1<isRequest, Body, Headers> const& msg)
message<isRequest, Body, Headers> const& msg)
{
static_assert(is_SyncWriteStream<SyncWriteStream>::value,
"SyncWriteStream requirements not met");
@@ -476,7 +476,7 @@ write(SyncWriteStream& stream,
static_assert(has_writer<Body>::value,
"Body has no writer");
static_assert(is_Writer<typename Body::writer,
message_v1<isRequest, Body, Headers>>::value,
message<isRequest, Body, Headers>>::value,
"Writer requirements not met");
error_code ec;
write(stream, msg, ec);
@@ -488,7 +488,7 @@ template<class SyncWriteStream,
bool isRequest, class Body, class Headers>
void
write(SyncWriteStream& stream,
message_v1<isRequest, Body, Headers> const& msg,
message<isRequest, Body, Headers> const& msg,
error_code& ec)
{
static_assert(is_SyncWriteStream<SyncWriteStream>::value,
@@ -498,7 +498,7 @@ write(SyncWriteStream& stream,
static_assert(has_writer<Body>::value,
"Body has no writer");
static_assert(is_Writer<typename Body::writer,
message_v1<isRequest, Body, Headers>>::value,
message<isRequest, Body, Headers>>::value,
"Writer requirements not met");
detail::write_preparation<isRequest, Body, Headers> wp(msg);
wp.init(ec);
@@ -584,7 +584,7 @@ template<class AsyncWriteStream,
typename async_completion<
WriteHandler, void(error_code)>::result_type
async_write(AsyncWriteStream& stream,
message_v1<isRequest, Body, Headers> const& msg,
message<isRequest, Body, Headers> const& msg,
WriteHandler&& handler)
{
static_assert(is_AsyncWriteStream<AsyncWriteStream>::value,
@@ -594,7 +594,7 @@ async_write(AsyncWriteStream& stream,
static_assert(has_writer<Body>::value,
"Body has no writer");
static_assert(is_Writer<typename Body::writer,
message_v1<isRequest, Body, Headers>>::value,
message<isRequest, Body, Headers>>::value,
"Writer requirements not met");
beast::async_completion<WriteHandler,
void(error_code)> completion(handler);
@@ -655,14 +655,14 @@ public:
template<bool isRequest, class Body, class Headers>
std::ostream&
operator<<(std::ostream& os,
message_v1<isRequest, Body, Headers> const& msg)
message<isRequest, Body, Headers> const& msg)
{
static_assert(is_Body<Body>::value,
"Body requirements not met");
static_assert(has_writer<Body>::value,
"Body has no writer");
static_assert(is_Writer<typename Body::writer,
message_v1<isRequest, Body, Headers>>::value,
message<isRequest, Body, Headers>>::value,
"Writer requirements not met");
detail::ostream_SyncStream oss(os);
error_code ec;