MCPcopy Create free account
hub / github.com/boostorg/asio / test_3_arg_dynamic_string_async_read

Function test_3_arg_dynamic_string_async_read

test/read.cpp:2742–2814  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2740}
2741
2742void test_3_arg_dynamic_string_async_read()
2743{
2744 namespace bindns = std;
2745 using bindns::placeholders::_1;
2746 using bindns::placeholders::_2;
2747
2748 boost::asio::io_context ioc;
2749 test_stream s(ioc);
2750 std::string data;
2751 boost::asio::dynamic_string_buffer<char, std::string::traits_type,
2752 std::string::allocator_type> sb
2753 = boost::asio::dynamic_buffer(data, sizeof(read_data));
2754
2755 s.reset(read_data, sizeof(read_data));
2756 sb.consume(sb.size());
2757 bool called = false;
2758 boost::asio::async_read(s, sb,
2759 bindns::bind(async_read_handler,
2760 _1, _2, sizeof(read_data), &called));
2761 ioc.restart();
2762 ioc.run();
2763 BOOST_ASIO_CHECK(called);
2764 BOOST_ASIO_CHECK(sb.size() == sizeof(read_data));
2765 BOOST_ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
2766
2767 s.reset(read_data, sizeof(read_data));
2768 s.next_read_length(1);
2769 sb.consume(sb.size());
2770 called = false;
2771 boost::asio::async_read(s, sb,
2772 bindns::bind(async_read_handler,
2773 _1, _2, sizeof(read_data), &called));
2774 ioc.restart();
2775 ioc.run();
2776 BOOST_ASIO_CHECK(called);
2777 BOOST_ASIO_CHECK(sb.size() == sizeof(read_data));
2778 BOOST_ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
2779
2780 s.reset(read_data, sizeof(read_data));
2781 s.next_read_length(10);
2782 sb.consume(sb.size());
2783 called = false;
2784 boost::asio::async_read(s, sb,
2785 bindns::bind(async_read_handler,
2786 _1, _2, sizeof(read_data), &called));
2787 ioc.restart();
2788 ioc.run();
2789 BOOST_ASIO_CHECK(called);
2790 BOOST_ASIO_CHECK(sb.size() == sizeof(read_data));
2791 BOOST_ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
2792
2793 s.reset(read_data, sizeof(read_data));
2794 sb.consume(sb.size());
2795 int i = boost::asio::async_read(s, sb, archetypes::lazy_handler());
2796 BOOST_ASIO_CHECK(i == 42);
2797 ioc.restart();
2798 ioc.run();
2799 BOOST_ASIO_CHECK(sb.size() == sizeof(read_data));

Callers

nothing calls this directly

Calls 11

async_readFunction · 0.85
lazy_handlerClass · 0.85
restartMethod · 0.80
bindFunction · 0.50
resetMethod · 0.45
consumeMethod · 0.45
sizeMethod · 0.45
runMethod · 0.45
check_buffersMethod · 0.45
dataMethod · 0.45
next_read_lengthMethod · 0.45

Tested by

no test coverage detected