// // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // Official repository: https://github.com/boostorg/beast // #include #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable: 4459) // declaration hides global declaration #endif #include #include #include #include #include namespace { #include "websocket_common.ipp" //[code_websocket_7_1 struct custom_stream; void teardown( role_type role, custom_stream& stream, error_code& ec); template void async_teardown( role_type role, custom_stream& stream, TeardownHandler&& handler); //] void teardown( role_type, custom_stream&, error_code&) { } //[code_websocket_7_2 template struct custom_wrapper { NextLayer next_layer; template explicit custom_wrapper(Args&&... args) : next_layer(std::forward(args)...) { } friend void teardown( role_type role, custom_wrapper& stream, error_code& ec) { using boost::beast::websocket::teardown; teardown(role, stream.next_layer, ec); } template friend void async_teardown( role_type role, custom_wrapper& stream, TeardownHandler&& handler) { using boost::beast::websocket::async_teardown; async_teardown(role, stream.next_layer, std::forward(handler)); } }; //] void snippets() { //stream ws(ioc); { //[code_websocket_7_3 //] } } struct websocket_7_test : public boost::beast::unit_test::suite { void run() override { BEAST_EXPECT(&snippets); BEAST_EXPECT(static_cast( &teardown)); } }; BEAST_DEFINE_TESTSUITE(beast,doc,websocket_7); } // (anon) #ifdef BOOST_MSVC #pragma warning(pop) #endif