Remove message free functions (API Change)

This commit is contained in:
Vinnie Falco
2017-06-07 05:00:18 -07:00
parent 3340666ad3
commit aa752e4dce
7 changed files with 11 additions and 76 deletions

View File

@ -17,6 +17,7 @@ API Changes:
* Refactor prepare * Refactor prepare
* Protect basic_fields special members * Protect basic_fields special members
* Remove message connection settings * Remove message connection settings
* Remove message free functions
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -64,8 +64,7 @@
<member><link linkend="beast.ref.http__async_write">async_write</link></member> <member><link linkend="beast.ref.http__async_write">async_write</link></member>
<member><link linkend="beast.ref.http__async_write_header">async_write_header</link></member> <member><link linkend="beast.ref.http__async_write_header">async_write_header</link></member>
<member><link linkend="beast.ref.http__async_write_some">async_write_some</link></member> <member><link linkend="beast.ref.http__async_write_some">async_write_some</link></member>
<member><link linkend="beast.ref.http__is_keep_alive">is_keep_alive</link></member> <member><link linkend="beast.ref.http__int_to_status">int_to_status</link></member>
<member><link linkend="beast.ref.http__is_upgrade">is_upgrade</link></member>
<member><link linkend="beast.ref.http__make_serializer">make_serializer</link></member> <member><link linkend="beast.ref.http__make_serializer">make_serializer</link></member>
<member><link linkend="beast.ref.http__obsolete_reason">obsolete_reason</link></member> <member><link linkend="beast.ref.http__obsolete_reason">obsolete_reason</link></member>
<member><link linkend="beast.ref.http__operator_ls_">operator&lt;&lt;</link></member> <member><link linkend="beast.ref.http__operator_ls_">operator&lt;&lt;</link></member>
@ -76,6 +75,7 @@
<member><link linkend="beast.ref.http__string_to_verb">string_to_verb</link></member> <member><link linkend="beast.ref.http__string_to_verb">string_to_verb</link></member>
<member><link linkend="beast.ref.http__swap">swap</link></member> <member><link linkend="beast.ref.http__swap">swap</link></member>
<member><link linkend="beast.ref.http__to_string">to_string</link></member> <member><link linkend="beast.ref.http__to_string">to_string</link></member>
<member><link linkend="beast.ref.http__to_status_class">to_status_class</link></member>
<member><link linkend="beast.ref.http__write">write</link></member> <member><link linkend="beast.ref.http__write">write</link></member>
<member><link linkend="beast.ref.http__write_header">write_header</link></member> <member><link linkend="beast.ref.http__write_header">write_header</link></member>
<member><link linkend="beast.ref.http__write_some">write_some</link></member> <member><link linkend="beast.ref.http__write_some">write_some</link></member>
@ -84,7 +84,6 @@
<entry valign="top"> <entry valign="top">
<bridgehead renderas="sect3">Constants</bridgehead> <bridgehead renderas="sect3">Constants</bridgehead>
<simplelist type="vert" columns="1"> <simplelist type="vert" columns="1">
<member><link linkend="beast.ref.http__connection">connection</link></member>
<member><link linkend="beast.ref.http__error">error</link></member> <member><link linkend="beast.ref.http__error">error</link></member>
<member><link linkend="beast.ref.http__field">field</link></member> <member><link linkend="beast.ref.http__field">field</link></member>
<member><link linkend="beast.ref.http__status">status</link></member> <member><link linkend="beast.ref.http__status">status</link></member>

View File

@ -9,10 +9,10 @@
#define BEAST_HTTP_IMPL_MESSAGE_IPP #define BEAST_HTTP_IMPL_MESSAGE_IPP
#include <beast/core/error.hpp> #include <beast/core/error.hpp>
#include <beast/http/rfc7230.hpp>
#include <beast/core/detail/ci_char_traits.hpp> #include <beast/core/detail/ci_char_traits.hpp>
#include <beast/core/detail/type_traits.hpp> #include <beast/core/detail/type_traits.hpp>
#include <boost/assert.hpp> #include <boost/assert.hpp>
#include <boost/throw_exception.hpp>
#include <stdexcept> #include <stdexcept>
namespace beast { namespace beast {
@ -43,7 +43,7 @@ method(verb v)
{ {
if(v == verb::unknown) if(v == verb::unknown)
BOOST_THROW_EXCEPTION( BOOST_THROW_EXCEPTION(
std::invalid_argument{"unknown verb"}); std::invalid_argument{"unknown method"});
method_ = v; method_ = v;
this->set_method_impl({}); this->set_method_impl({});
} }
@ -140,7 +140,7 @@ result(unsigned v)
if(v > 999) if(v > 999)
BOOST_THROW_EXCEPTION( BOOST_THROW_EXCEPTION(
std::invalid_argument{ std::invalid_argument{
"invalid result-code"}); "invalid status-code"});
result_ = static_cast<status>(v); result_ = static_cast<status>(v);
} }
@ -307,8 +307,8 @@ message<isRequest, Body, Fields>::
prepare(std::true_type) prepare(std::true_type)
{ {
auto const n = size(); auto const n = size();
if(this->method_ == verb::trace && if(this->method_ == verb::trace && (
(! n || *n > 0)) ! n || *n > 0))
BOOST_THROW_EXCEPTION(std::invalid_argument{ BOOST_THROW_EXCEPTION(std::invalid_argument{
"invalid request body"}); "invalid request body"});
if(n) if(n)
@ -366,34 +366,6 @@ swap(
swap(m1.body, m2.body); swap(m1.body, m2.body);
} }
template<bool isRequest, class Fields>
bool
is_keep_alive(header<isRequest, Fields> const& msg)
{
BOOST_ASSERT(msg.version == 10 || msg.version == 11);
if(msg.version == 11)
{
if(token_list{msg["Connection"]}.exists("close"))
return false;
return true;
}
if(token_list{msg["Connection"]}.exists("keep-alive"))
return true;
return false;
}
template<bool isRequest, class Fields>
bool
is_upgrade(header<isRequest, Fields> const& msg)
{
BOOST_ASSERT(msg.version == 10 || msg.version == 11);
if(msg.version == 10)
return false;
if(token_list{msg["Connection"]}.exists("upgrade"))
return true;
return false;
}
} // http } // http
} // beast } // beast

View File

@ -595,24 +595,6 @@ swap(
message<isRequest, Body, Fields>& m1, message<isRequest, Body, Fields>& m1,
message<isRequest, Body, Fields>& m2); message<isRequest, Body, Fields>& m2);
//------------------------------------------------------------------------------
/** Returns `true` if the HTTP/1 message indicates a keep alive.
Undefined behavior if version is greater than 11.
*/
template<bool isRequest, class Fields>
bool
is_keep_alive(header<isRequest, Fields> const& msg);
/** Returns `true` if the HTTP/1 message indicates an Upgrade request or response.
Undefined behavior if version is greater than 11.
*/
template<bool isRequest, class Fields>
bool
is_upgrade(header<isRequest, Fields> const& msg);
} // http } // http
} // beast } // beast

View File

@ -21,7 +21,7 @@ is_upgrade(http::header<true, Fields> const& req)
return false; return false;
if(req.method() != http::verb::get) if(req.method() != http::verb::get)
return false; return false;
if(! http::is_upgrade(req)) if(! http::token_list{req["Connection"]}.exists("upgrade"))
return false; return false;
if(! http::token_list{req["Upgrade"]}.exists("websocket")) if(! http::token_list{req["Upgrade"]}.exists("websocket"))
return false; return false;

View File

@ -8,6 +8,7 @@
#ifndef BEAST_WEBSOCKET_IMPL_STREAM_IPP #ifndef BEAST_WEBSOCKET_IMPL_STREAM_IPP
#define BEAST_WEBSOCKET_IMPL_STREAM_IPP #define BEAST_WEBSOCKET_IMPL_STREAM_IPP
#include <beast/websocket/rfc6455.hpp>
#include <beast/websocket/teardown.hpp> #include <beast/websocket/teardown.hpp>
#include <beast/websocket/detail/hybi13.hpp> #include <beast/websocket/detail/hybi13.hpp>
#include <beast/websocket/detail/pmd_extension.hpp> #include <beast/websocket/detail/pmd_extension.hpp>
@ -285,7 +286,7 @@ do_response(http::header<false> const& res,
return false; return false;
if(res.result() != http::status::switching_protocols) if(res.result() != http::status::switching_protocols)
return false; return false;
if(! is_upgrade(res)) if(! http::token_list{res["Connection"]}.exists("upgrade"))
return false; return false;
if(! http::token_list{res["Upgrade"]}.exists("websocket")) if(! http::token_list{res["Upgrade"]}.exists("websocket"))
return false; return false;

View File

@ -194,25 +194,6 @@ public:
} }
} }
void
testFreeFunctions()
{
{
request<string_body> m;
m.method(verb::get);
m.target("/");
m.version = 11;
m.insert("Upgrade", "test");
BEAST_EXPECT(! is_upgrade(m));
m.insert(field::connection, "upgrade");
BEAST_EXPECT(is_upgrade(m));
m.version = 10;
BEAST_EXPECT(! is_upgrade(m));
}
}
void void
testSwap() testSwap()
{ {
@ -312,7 +293,6 @@ public:
{ {
testMessage(); testMessage();
testHeaders(); testHeaders();
testFreeFunctions();
testSwap(); testSwap();
testSpecialMembers(); testSpecialMembers();
testMethod(); testMethod();