#include <boost/beast/test/yield_to.hpp>
#include <boost/beast/unit_test/suite.hpp>
#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/strand.hpp>
#include <sstream>
#include <string>
template<bool isRequest, class Fields>
explicit
- writer(message<isRequest,
- unsized_body, Fields> const& msg)
- : body_(msg.body())
+ writer(header<isRequest, Fields> const&, value_type const& b)
+ : body_(b)
{
}
template<bool isRequest, class Fields>
explicit
- writer(message<isRequest,
- test_body, Fields> const& msg)
- : body_(msg.body())
+ writer(header<isRequest, Fields> const&, value_type const& b)
+ : body_(b)
{
}
template<bool isRequest, class Fields>
explicit
- writer(message<isRequest,
- fail_body, Fields> const& msg)
- : body_(msg.body())
+ writer(header<isRequest, Fields> const&, value_type const& b)
+ : body_(b)
{
}
ioc.run();
}
+ struct copyable_handler
+ {
+ template<class... Args>
+ void
+ operator()(Args&&...) const
+ {
+ }
+ };
+
+ void
+ testAsioHandlerInvoke()
+ {
+ // make sure things compile, also can set a
+ // breakpoint in asio_handler_invoke to make sure
+ // it is instantiated.
+ {
+ boost::asio::io_context ioc;
+ boost::asio::io_service::strand s{ioc};
+ test::stream ts{ioc};
+ flat_buffer b;
+ request<empty_body> m;
+ request_serializer<empty_body, fields> sr{m};
+ async_write_some(ts, sr, s.wrap(copyable_handler{}));
+ }
+ {
+ boost::asio::io_context ioc;
+ boost::asio::io_service::strand s{ioc};
+ test::stream ts{ioc};
+ flat_buffer b;
+ request<empty_body> m;
+ request_serializer<empty_body, fields> sr{m};
+ async_write(ts, sr, s.wrap(copyable_handler{}));
+ }
+ {
+ boost::asio::io_context ioc;
+ boost::asio::io_service::strand s{ioc};
+ test::stream ts{ioc};
+ flat_buffer b;
+ request<empty_body> m;
+ async_write(ts, m, s.wrap(copyable_handler{}));
+ }
+ }
+
void
run() override
{
testWriteStream<test_body< true, false>>(yield);
testWriteStream<test_body< true, true>>(yield);
});
+ testAsioHandlerInvoke();
}
};