Use the executor type in basic_stream timer

fix #1589
This commit is contained in:
Vinnie Falco
2019-10-15 15:48:42 -07:00
parent bafce23853
commit 087bcc4ef5
2 changed files with 48 additions and 1 deletions
+39
View File
@@ -1259,6 +1259,44 @@ public:
//--------------------------------------------------------------------------
void
testIssue1589()
{
net::io_context ioc;
// the timer needlessly used polymorphic executor
basic_stream<
net::ip::tcp,
net::io_context::executor_type>{ioc};
// make sure strands work
basic_stream<
net::ip::tcp,
net::strand<
net::io_context::executor_type>>{
net::make_strand(ioc)};
// address the problem in the issue
{
net::basic_stream_socket<
net::ip::tcp,
net::strand<
net::io_context::executor_type>
> sock(net::make_strand(ioc));
basic_stream<
net::ip::tcp,
net::strand<
net::io_context::executor_type>,
unlimited_rate_policy> stream(std::move(sock));
BOOST_STATIC_ASSERT(
std::is_convertible<
decltype(sock)::executor_type,
decltype(stream)::executor_type>::value);
}
}
//--------------------------------------------------------------------------
void
run()
{
@@ -1268,6 +1306,7 @@ public:
testConnect();
testMembers();
testJavadocs();
testIssue1589();
}
};