5 // Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11 // Disable autolinking for unit tests.
12 #if !defined(BOOST_ALL_NO_LIB)
13 #define BOOST_ALL_NO_LIB 1
14 #endif // !defined(BOOST_ALL_NO_LIB)
16 // Test that header file is self-contained.
17 #include <boost/asio/read_at.hpp>
20 #include "archetypes/async_result.hpp"
21 #include <boost/asio/io_context.hpp>
22 #include <boost/asio/post.hpp>
23 #include <boost/asio/streambuf.hpp>
24 #include "unit_test.hpp"
26 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
27 # include <boost/bind.hpp>
28 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
29 # include <functional>
30 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
32 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
33 #include <boost/array.hpp>
34 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
36 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
38 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
40 using namespace std
; // For memcmp, memcpy and memset.
42 class test_random_access_device
45 typedef boost::asio::io_context::executor_type executor_type
;
47 test_random_access_device(boost::asio::io_context
& io_context
)
48 : io_context_(io_context
),
54 executor_type
get_executor() BOOST_ASIO_NOEXCEPT
56 return io_context_
.get_executor();
59 void reset(const void* data
, size_t length
)
61 BOOST_ASIO_CHECK(length
<= max_length
);
64 while (length_
+ length
< max_length
)
66 memcpy(data_
+ length_
, data
, length
);
70 next_read_length_
= length
;
73 void next_read_length(size_t length
)
75 next_read_length_
= length
;
78 template <typename Iterator
>
79 bool check_buffers(boost::asio::uint64_t offset
,
80 Iterator begin
, Iterator end
, size_t length
)
82 if (offset
+ length
> max_length
)
85 Iterator iter
= begin
;
86 size_t checked_length
= 0;
87 for (; iter
!= end
&& checked_length
< length
; ++iter
)
89 size_t buffer_length
= boost::asio::buffer_size(*iter
);
90 if (buffer_length
> length
- checked_length
)
91 buffer_length
= length
- checked_length
;
92 if (memcmp(data_
+ offset
+ checked_length
,
93 iter
->data(), buffer_length
) != 0)
95 checked_length
+= buffer_length
;
101 template <typename Const_Buffers
>
102 bool check_buffers(boost::asio::uint64_t offset
,
103 const Const_Buffers
& buffers
, size_t length
)
105 return check_buffers(offset
, boost::asio::buffer_sequence_begin(buffers
),
106 boost::asio::buffer_sequence_end(buffers
), length
);
109 template <typename Mutable_Buffers
>
110 size_t read_some_at(boost::asio::uint64_t offset
,
111 const Mutable_Buffers
& buffers
)
113 return boost::asio::buffer_copy(buffers
,
114 boost::asio::buffer(data_
, length_
) + offset
,
118 template <typename Mutable_Buffers
>
119 size_t read_some_at(boost::asio::uint64_t offset
,
120 const Mutable_Buffers
& buffers
, boost::system::error_code
& ec
)
122 ec
= boost::system::error_code();
123 return read_some_at(offset
, buffers
);
126 template <typename Mutable_Buffers
, typename Handler
>
127 void async_read_some_at(boost::asio::uint64_t offset
,
128 const Mutable_Buffers
& buffers
, Handler handler
)
130 size_t bytes_transferred
= read_some_at(offset
, buffers
);
131 boost::asio::post(get_executor(),
132 boost::asio::detail::bind_handler(
133 BOOST_ASIO_MOVE_CAST(Handler
)(handler
),
134 boost::system::error_code(), bytes_transferred
));
138 boost::asio::io_context
& io_context_
;
139 enum { max_length
= 8192 };
140 char data_
[max_length
];
142 size_t next_read_length_
;
145 static const char read_data
[]
146 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
148 void test_3_arg_mutable_buffer_read_at()
150 boost::asio::io_context ioc
;
151 test_random_access_device
s(ioc
);
152 char read_buf
[sizeof(read_data
)];
153 boost::asio::mutable_buffer buffers
154 = boost::asio::buffer(read_buf
, sizeof(read_buf
));
156 s
.reset(read_data
, sizeof(read_data
));
157 memset(read_buf
, 0, sizeof(read_buf
));
158 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
);
159 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
160 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
162 s
.reset(read_data
, sizeof(read_data
));
163 memset(read_buf
, 0, sizeof(read_buf
));
164 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
);
165 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
166 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
168 s
.reset(read_data
, sizeof(read_data
));
169 s
.next_read_length(1);
170 memset(read_buf
, 0, sizeof(read_buf
));
171 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
);
172 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
173 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
175 s
.reset(read_data
, sizeof(read_data
));
176 s
.next_read_length(1);
177 memset(read_buf
, 0, sizeof(read_buf
));
178 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
);
179 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
180 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
182 s
.reset(read_data
, sizeof(read_data
));
183 s
.next_read_length(10);
184 memset(read_buf
, 0, sizeof(read_buf
));
185 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
);
186 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
187 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
189 s
.reset(read_data
, sizeof(read_data
));
190 s
.next_read_length(10);
191 memset(read_buf
, 0, sizeof(read_buf
));
192 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
);
193 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
194 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
197 void test_3_arg_vector_buffers_read_at()
199 boost::asio::io_context ioc
;
200 test_random_access_device
s(ioc
);
201 char read_buf
[sizeof(read_data
)];
202 std::vector
<boost::asio::mutable_buffer
> buffers
;
203 buffers
.push_back(boost::asio::buffer(read_buf
, 32));
204 buffers
.push_back(boost::asio::buffer(read_buf
) + 32);
206 s
.reset(read_data
, sizeof(read_data
));
207 memset(read_buf
, 0, sizeof(read_buf
));
208 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
);
209 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
210 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
212 s
.reset(read_data
, sizeof(read_data
));
213 memset(read_buf
, 0, sizeof(read_buf
));
214 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
);
215 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
216 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
218 s
.reset(read_data
, sizeof(read_data
));
219 s
.next_read_length(1);
220 memset(read_buf
, 0, sizeof(read_buf
));
221 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
);
222 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
223 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
225 s
.reset(read_data
, sizeof(read_data
));
226 s
.next_read_length(1);
227 memset(read_buf
, 0, sizeof(read_buf
));
228 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
);
229 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
230 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
232 s
.reset(read_data
, sizeof(read_data
));
233 s
.next_read_length(10);
234 memset(read_buf
, 0, sizeof(read_buf
));
235 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
);
236 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
237 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
239 s
.reset(read_data
, sizeof(read_data
));
240 s
.next_read_length(10);
241 memset(read_buf
, 0, sizeof(read_buf
));
242 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
);
243 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
244 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
247 void test_3_arg_streambuf_read_at()
249 boost::asio::io_context ioc
;
250 test_random_access_device
s(ioc
);
251 boost::asio::streambuf
sb(sizeof(read_data
));
253 s
.reset(read_data
, sizeof(read_data
));
254 sb
.consume(sb
.size());
255 size_t bytes_transferred
= boost::asio::read_at(s
, 0, sb
);
256 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
257 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
258 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
260 s
.reset(read_data
, sizeof(read_data
));
261 sb
.consume(sb
.size());
262 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
);
263 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
264 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
265 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
267 s
.reset(read_data
, sizeof(read_data
));
268 s
.next_read_length(1);
269 sb
.consume(sb
.size());
270 bytes_transferred
= boost::asio::read_at(s
, 0, sb
);
271 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
272 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
273 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
275 s
.reset(read_data
, sizeof(read_data
));
276 s
.next_read_length(1);
277 sb
.consume(sb
.size());
278 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
);
279 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
280 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
281 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
283 s
.reset(read_data
, sizeof(read_data
));
284 s
.next_read_length(10);
285 sb
.consume(sb
.size());
286 bytes_transferred
= boost::asio::read_at(s
, 0, sb
);
287 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
288 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
289 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
291 s
.reset(read_data
, sizeof(read_data
));
292 s
.next_read_length(10);
293 sb
.consume(sb
.size());
294 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
);
295 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
296 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
297 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
300 void test_4_arg_nothrow_mutable_buffer_read_at()
302 boost::asio::io_context ioc
;
303 test_random_access_device
s(ioc
);
304 char read_buf
[sizeof(read_data
)];
305 boost::asio::mutable_buffer buffers
306 = boost::asio::buffer(read_buf
, sizeof(read_buf
));
308 s
.reset(read_data
, sizeof(read_data
));
309 memset(read_buf
, 0, sizeof(read_buf
));
310 boost::system::error_code error
;
311 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, error
);
312 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
313 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
314 BOOST_ASIO_CHECK(!error
);
316 s
.reset(read_data
, sizeof(read_data
));
317 memset(read_buf
, 0, sizeof(read_buf
));
318 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, error
);
319 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
320 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
321 BOOST_ASIO_CHECK(!error
);
323 s
.reset(read_data
, sizeof(read_data
));
324 s
.next_read_length(1);
325 memset(read_buf
, 0, sizeof(read_buf
));
326 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, error
);
327 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
328 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
329 BOOST_ASIO_CHECK(!error
);
331 s
.reset(read_data
, sizeof(read_data
));
332 s
.next_read_length(1);
333 memset(read_buf
, 0, sizeof(read_buf
));
334 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, error
);
335 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
336 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
337 BOOST_ASIO_CHECK(!error
);
339 s
.reset(read_data
, sizeof(read_data
));
340 s
.next_read_length(10);
341 memset(read_buf
, 0, sizeof(read_buf
));
342 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, error
);
343 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
344 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
345 BOOST_ASIO_CHECK(!error
);
347 s
.reset(read_data
, sizeof(read_data
));
348 s
.next_read_length(10);
349 memset(read_buf
, 0, sizeof(read_buf
));
350 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, error
);
351 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
352 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
353 BOOST_ASIO_CHECK(!error
);
356 void test_4_arg_nothrow_vector_buffers_read_at()
358 boost::asio::io_context ioc
;
359 test_random_access_device
s(ioc
);
360 char read_buf
[sizeof(read_data
)];
361 std::vector
<boost::asio::mutable_buffer
> buffers
;
362 buffers
.push_back(boost::asio::buffer(read_buf
, 32));
363 buffers
.push_back(boost::asio::buffer(read_buf
) + 32);
365 s
.reset(read_data
, sizeof(read_data
));
366 memset(read_buf
, 0, sizeof(read_buf
));
367 boost::system::error_code error
;
368 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, error
);
369 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
370 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
371 BOOST_ASIO_CHECK(!error
);
373 s
.reset(read_data
, sizeof(read_data
));
374 memset(read_buf
, 0, sizeof(read_buf
));
375 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, error
);
376 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
377 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
378 BOOST_ASIO_CHECK(!error
);
380 s
.reset(read_data
, sizeof(read_data
));
381 s
.next_read_length(1);
382 memset(read_buf
, 0, sizeof(read_buf
));
383 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, error
);
384 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
385 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
386 BOOST_ASIO_CHECK(!error
);
388 s
.reset(read_data
, sizeof(read_data
));
389 s
.next_read_length(1);
390 memset(read_buf
, 0, sizeof(read_buf
));
391 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, error
);
392 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
393 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
394 BOOST_ASIO_CHECK(!error
);
396 s
.reset(read_data
, sizeof(read_data
));
397 s
.next_read_length(10);
398 memset(read_buf
, 0, sizeof(read_buf
));
399 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, error
);
400 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
401 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
402 BOOST_ASIO_CHECK(!error
);
404 s
.reset(read_data
, sizeof(read_data
));
405 s
.next_read_length(10);
406 memset(read_buf
, 0, sizeof(read_buf
));
407 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, error
);
408 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
409 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
410 BOOST_ASIO_CHECK(!error
);
413 void test_4_arg_nothrow_streambuf_read_at()
415 boost::asio::io_context ioc
;
416 test_random_access_device
s(ioc
);
417 boost::asio::streambuf
sb(sizeof(read_data
));
419 s
.reset(read_data
, sizeof(read_data
));
420 sb
.consume(sb
.size());
421 boost::system::error_code error
;
422 size_t bytes_transferred
= boost::asio::read_at(s
, 0, sb
, error
);
423 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
424 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
425 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
426 BOOST_ASIO_CHECK(!error
);
428 s
.reset(read_data
, sizeof(read_data
));
429 sb
.consume(sb
.size());
430 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
, error
);
431 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
432 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
433 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
434 BOOST_ASIO_CHECK(!error
);
436 s
.reset(read_data
, sizeof(read_data
));
437 s
.next_read_length(1);
438 sb
.consume(sb
.size());
439 bytes_transferred
= boost::asio::read_at(s
, 0, sb
, error
);
440 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
441 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
442 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
443 BOOST_ASIO_CHECK(!error
);
445 s
.reset(read_data
, sizeof(read_data
));
446 s
.next_read_length(1);
447 sb
.consume(sb
.size());
448 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
, error
);
449 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
450 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
451 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
452 BOOST_ASIO_CHECK(!error
);
454 s
.reset(read_data
, sizeof(read_data
));
455 s
.next_read_length(10);
456 sb
.consume(sb
.size());
457 bytes_transferred
= boost::asio::read_at(s
, 0, sb
, error
);
458 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
459 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
460 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
461 BOOST_ASIO_CHECK(!error
);
463 s
.reset(read_data
, sizeof(read_data
));
464 s
.next_read_length(10);
465 sb
.consume(sb
.size());
466 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
, error
);
467 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
468 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
469 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
470 BOOST_ASIO_CHECK(!error
);
473 bool old_style_transfer_all(const boost::system::error_code
& ec
,
474 size_t /*bytes_transferred*/)
479 size_t short_transfer(const boost::system::error_code
& ec
,
480 size_t /*bytes_transferred*/)
485 void test_4_arg_mutable_buffer_read_at()
487 boost::asio::io_context ioc
;
488 test_random_access_device
s(ioc
);
489 char read_buf
[sizeof(read_data
)];
490 boost::asio::mutable_buffer buffers
491 = boost::asio::buffer(read_buf
, sizeof(read_buf
));
493 s
.reset(read_data
, sizeof(read_data
));
494 memset(read_buf
, 0, sizeof(read_buf
));
495 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
496 boost::asio::transfer_all());
497 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
498 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
500 s
.reset(read_data
, sizeof(read_data
));
501 memset(read_buf
, 0, sizeof(read_buf
));
502 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
503 boost::asio::transfer_all());
504 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
505 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
507 s
.reset(read_data
, sizeof(read_data
));
508 s
.next_read_length(1);
509 memset(read_buf
, 0, sizeof(read_buf
));
510 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
511 boost::asio::transfer_all());
512 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
513 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
515 s
.reset(read_data
, sizeof(read_data
));
516 s
.next_read_length(1);
517 memset(read_buf
, 0, sizeof(read_buf
));
518 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
519 boost::asio::transfer_all());
520 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
521 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
523 s
.reset(read_data
, sizeof(read_data
));
524 s
.next_read_length(10);
525 memset(read_buf
, 0, sizeof(read_buf
));
526 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
527 boost::asio::transfer_all());
528 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
529 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
531 s
.reset(read_data
, sizeof(read_data
));
532 s
.next_read_length(10);
533 memset(read_buf
, 0, sizeof(read_buf
));
534 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
535 boost::asio::transfer_all());
536 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
537 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
539 s
.reset(read_data
, sizeof(read_data
));
540 memset(read_buf
, 0, sizeof(read_buf
));
541 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
542 boost::asio::transfer_at_least(1));
543 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
544 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
546 s
.reset(read_data
, sizeof(read_data
));
547 memset(read_buf
, 0, sizeof(read_buf
));
548 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
549 boost::asio::transfer_at_least(1));
550 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
551 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
553 s
.reset(read_data
, sizeof(read_data
));
554 s
.next_read_length(1);
555 memset(read_buf
, 0, sizeof(read_buf
));
556 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
557 boost::asio::transfer_at_least(1));
558 BOOST_ASIO_CHECK(bytes_transferred
== 1);
559 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
561 s
.reset(read_data
, sizeof(read_data
));
562 s
.next_read_length(1);
563 memset(read_buf
, 0, sizeof(read_buf
));
564 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
565 boost::asio::transfer_at_least(1));
566 BOOST_ASIO_CHECK(bytes_transferred
== 1);
567 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
569 s
.reset(read_data
, sizeof(read_data
));
570 s
.next_read_length(10);
571 memset(read_buf
, 0, sizeof(read_buf
));
572 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
573 boost::asio::transfer_at_least(1));
574 BOOST_ASIO_CHECK(bytes_transferred
== 10);
575 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
577 s
.reset(read_data
, sizeof(read_data
));
578 s
.next_read_length(10);
579 memset(read_buf
, 0, sizeof(read_buf
));
580 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
581 boost::asio::transfer_at_least(1));
582 BOOST_ASIO_CHECK(bytes_transferred
== 10);
583 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
585 s
.reset(read_data
, sizeof(read_data
));
586 memset(read_buf
, 0, sizeof(read_buf
));
587 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
588 boost::asio::transfer_at_least(10));
589 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
590 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
592 s
.reset(read_data
, sizeof(read_data
));
593 memset(read_buf
, 0, sizeof(read_buf
));
594 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
595 boost::asio::transfer_at_least(10));
596 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
597 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
599 s
.reset(read_data
, sizeof(read_data
));
600 s
.next_read_length(1);
601 memset(read_buf
, 0, sizeof(read_buf
));
602 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
603 boost::asio::transfer_at_least(10));
604 BOOST_ASIO_CHECK(bytes_transferred
== 10);
605 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
607 s
.reset(read_data
, sizeof(read_data
));
608 s
.next_read_length(1);
609 memset(read_buf
, 0, sizeof(read_buf
));
610 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
611 boost::asio::transfer_at_least(10));
612 BOOST_ASIO_CHECK(bytes_transferred
== 10);
613 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
615 s
.reset(read_data
, sizeof(read_data
));
616 s
.next_read_length(10);
617 memset(read_buf
, 0, sizeof(read_buf
));
618 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
619 boost::asio::transfer_at_least(10));
620 BOOST_ASIO_CHECK(bytes_transferred
== 10);
621 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
623 s
.reset(read_data
, sizeof(read_data
));
624 s
.next_read_length(10);
625 memset(read_buf
, 0, sizeof(read_buf
));
626 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
627 boost::asio::transfer_at_least(10));
628 BOOST_ASIO_CHECK(bytes_transferred
== 10);
629 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
631 s
.reset(read_data
, sizeof(read_data
));
632 memset(read_buf
, 0, sizeof(read_buf
));
633 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
634 boost::asio::transfer_at_least(42));
635 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
636 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
638 s
.reset(read_data
, sizeof(read_data
));
639 memset(read_buf
, 0, sizeof(read_buf
));
640 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
641 boost::asio::transfer_at_least(42));
642 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
643 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
645 s
.reset(read_data
, sizeof(read_data
));
646 s
.next_read_length(1);
647 memset(read_buf
, 0, sizeof(read_buf
));
648 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
649 boost::asio::transfer_at_least(42));
650 BOOST_ASIO_CHECK(bytes_transferred
== 42);
651 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
653 s
.reset(read_data
, sizeof(read_data
));
654 s
.next_read_length(1);
655 memset(read_buf
, 0, sizeof(read_buf
));
656 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
657 boost::asio::transfer_at_least(42));
658 BOOST_ASIO_CHECK(bytes_transferred
== 42);
659 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
661 s
.reset(read_data
, sizeof(read_data
));
662 s
.next_read_length(10);
663 memset(read_buf
, 0, sizeof(read_buf
));
664 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
665 boost::asio::transfer_at_least(42));
666 BOOST_ASIO_CHECK(bytes_transferred
== 50);
667 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
669 s
.reset(read_data
, sizeof(read_data
));
670 s
.next_read_length(10);
671 memset(read_buf
, 0, sizeof(read_buf
));
672 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
673 boost::asio::transfer_at_least(42));
674 BOOST_ASIO_CHECK(bytes_transferred
== 50);
675 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
677 s
.reset(read_data
, sizeof(read_data
));
678 memset(read_buf
, 0, sizeof(read_buf
));
679 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
680 boost::asio::transfer_exactly(1));
681 BOOST_ASIO_CHECK(bytes_transferred
== 1);
682 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
684 s
.reset(read_data
, sizeof(read_data
));
685 memset(read_buf
, 0, sizeof(read_buf
));
686 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
687 boost::asio::transfer_exactly(1));
688 BOOST_ASIO_CHECK(bytes_transferred
== 1);
689 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
691 s
.reset(read_data
, sizeof(read_data
));
692 s
.next_read_length(1);
693 memset(read_buf
, 0, sizeof(read_buf
));
694 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
695 boost::asio::transfer_exactly(1));
696 BOOST_ASIO_CHECK(bytes_transferred
== 1);
697 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
699 s
.reset(read_data
, sizeof(read_data
));
700 s
.next_read_length(1);
701 memset(read_buf
, 0, sizeof(read_buf
));
702 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
703 boost::asio::transfer_exactly(1));
704 BOOST_ASIO_CHECK(bytes_transferred
== 1);
705 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
707 s
.reset(read_data
, sizeof(read_data
));
708 s
.next_read_length(10);
709 memset(read_buf
, 0, sizeof(read_buf
));
710 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
711 boost::asio::transfer_exactly(1));
712 BOOST_ASIO_CHECK(bytes_transferred
== 1);
713 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
715 s
.reset(read_data
, sizeof(read_data
));
716 s
.next_read_length(10);
717 memset(read_buf
, 0, sizeof(read_buf
));
718 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
719 boost::asio::transfer_exactly(1));
720 BOOST_ASIO_CHECK(bytes_transferred
== 1);
721 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
723 s
.reset(read_data
, sizeof(read_data
));
724 memset(read_buf
, 0, sizeof(read_buf
));
725 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
726 boost::asio::transfer_exactly(10));
727 BOOST_ASIO_CHECK(bytes_transferred
== 10);
728 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
730 s
.reset(read_data
, sizeof(read_data
));
731 memset(read_buf
, 0, sizeof(read_buf
));
732 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
733 boost::asio::transfer_exactly(10));
734 BOOST_ASIO_CHECK(bytes_transferred
== 10);
735 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
737 s
.reset(read_data
, sizeof(read_data
));
738 s
.next_read_length(1);
739 memset(read_buf
, 0, sizeof(read_buf
));
740 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
741 boost::asio::transfer_exactly(10));
742 BOOST_ASIO_CHECK(bytes_transferred
== 10);
743 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
745 s
.reset(read_data
, sizeof(read_data
));
746 s
.next_read_length(1);
747 memset(read_buf
, 0, sizeof(read_buf
));
748 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
749 boost::asio::transfer_exactly(10));
750 BOOST_ASIO_CHECK(bytes_transferred
== 10);
751 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
753 s
.reset(read_data
, sizeof(read_data
));
754 s
.next_read_length(10);
755 memset(read_buf
, 0, sizeof(read_buf
));
756 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
757 boost::asio::transfer_exactly(10));
758 BOOST_ASIO_CHECK(bytes_transferred
== 10);
759 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
761 s
.reset(read_data
, sizeof(read_data
));
762 s
.next_read_length(10);
763 memset(read_buf
, 0, sizeof(read_buf
));
764 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
765 boost::asio::transfer_exactly(10));
766 BOOST_ASIO_CHECK(bytes_transferred
== 10);
767 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
769 s
.reset(read_data
, sizeof(read_data
));
770 memset(read_buf
, 0, sizeof(read_buf
));
771 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
772 boost::asio::transfer_exactly(42));
773 BOOST_ASIO_CHECK(bytes_transferred
== 42);
774 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
776 s
.reset(read_data
, sizeof(read_data
));
777 memset(read_buf
, 0, sizeof(read_buf
));
778 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
779 boost::asio::transfer_exactly(42));
780 BOOST_ASIO_CHECK(bytes_transferred
== 42);
781 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
783 s
.reset(read_data
, sizeof(read_data
));
784 s
.next_read_length(1);
785 memset(read_buf
, 0, sizeof(read_buf
));
786 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
787 boost::asio::transfer_exactly(42));
788 BOOST_ASIO_CHECK(bytes_transferred
== 42);
789 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
791 s
.reset(read_data
, sizeof(read_data
));
792 s
.next_read_length(1);
793 memset(read_buf
, 0, sizeof(read_buf
));
794 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
795 boost::asio::transfer_exactly(42));
796 BOOST_ASIO_CHECK(bytes_transferred
== 42);
797 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
799 s
.reset(read_data
, sizeof(read_data
));
800 s
.next_read_length(10);
801 memset(read_buf
, 0, sizeof(read_buf
));
802 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
803 boost::asio::transfer_exactly(42));
804 BOOST_ASIO_CHECK(bytes_transferred
== 42);
805 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
807 s
.reset(read_data
, sizeof(read_data
));
808 s
.next_read_length(10);
809 memset(read_buf
, 0, sizeof(read_buf
));
810 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
811 boost::asio::transfer_exactly(42));
812 BOOST_ASIO_CHECK(bytes_transferred
== 42);
813 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
815 s
.reset(read_data
, sizeof(read_data
));
816 memset(read_buf
, 0, sizeof(read_buf
));
817 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
818 old_style_transfer_all
);
819 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
820 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
822 s
.reset(read_data
, sizeof(read_data
));
823 memset(read_buf
, 0, sizeof(read_buf
));
824 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
825 old_style_transfer_all
);
826 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
827 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
829 s
.reset(read_data
, sizeof(read_data
));
830 s
.next_read_length(1);
831 memset(read_buf
, 0, sizeof(read_buf
));
832 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
833 old_style_transfer_all
);
834 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
835 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
837 s
.reset(read_data
, sizeof(read_data
));
838 s
.next_read_length(1);
839 memset(read_buf
, 0, sizeof(read_buf
));
840 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
841 old_style_transfer_all
);
842 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
843 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
845 s
.reset(read_data
, sizeof(read_data
));
846 s
.next_read_length(10);
847 memset(read_buf
, 0, sizeof(read_buf
));
848 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
849 old_style_transfer_all
);
850 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
851 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
853 s
.reset(read_data
, sizeof(read_data
));
854 s
.next_read_length(10);
855 memset(read_buf
, 0, sizeof(read_buf
));
856 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
857 old_style_transfer_all
);
858 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
859 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
861 s
.reset(read_data
, sizeof(read_data
));
862 memset(read_buf
, 0, sizeof(read_buf
));
863 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, short_transfer
);
864 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
865 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
867 s
.reset(read_data
, sizeof(read_data
));
868 memset(read_buf
, 0, sizeof(read_buf
));
869 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, short_transfer
);
870 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
871 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
873 s
.reset(read_data
, sizeof(read_data
));
874 s
.next_read_length(1);
875 memset(read_buf
, 0, sizeof(read_buf
));
876 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, short_transfer
);
877 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
878 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
880 s
.reset(read_data
, sizeof(read_data
));
881 s
.next_read_length(1);
882 memset(read_buf
, 0, sizeof(read_buf
));
883 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, short_transfer
);
884 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
885 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
887 s
.reset(read_data
, sizeof(read_data
));
888 s
.next_read_length(10);
889 memset(read_buf
, 0, sizeof(read_buf
));
890 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, short_transfer
);
891 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
892 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
894 s
.reset(read_data
, sizeof(read_data
));
895 s
.next_read_length(10);
896 memset(read_buf
, 0, sizeof(read_buf
));
897 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, short_transfer
);
898 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
899 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
902 void test_4_arg_vector_buffers_read_at()
904 boost::asio::io_context ioc
;
905 test_random_access_device
s(ioc
);
906 char read_buf
[sizeof(read_data
)];
907 std::vector
<boost::asio::mutable_buffer
> buffers
;
908 buffers
.push_back(boost::asio::buffer(read_buf
, 32));
909 buffers
.push_back(boost::asio::buffer(read_buf
) + 32);
911 s
.reset(read_data
, sizeof(read_data
));
912 memset(read_buf
, 0, sizeof(read_buf
));
913 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
914 boost::asio::transfer_all());
915 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
916 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
918 s
.reset(read_data
, sizeof(read_data
));
919 memset(read_buf
, 0, sizeof(read_buf
));
920 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
921 boost::asio::transfer_all());
922 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
923 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
925 s
.reset(read_data
, sizeof(read_data
));
926 s
.next_read_length(1);
927 memset(read_buf
, 0, sizeof(read_buf
));
928 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
929 boost::asio::transfer_all());
930 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
931 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
933 s
.reset(read_data
, sizeof(read_data
));
934 s
.next_read_length(1);
935 memset(read_buf
, 0, sizeof(read_buf
));
936 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
937 boost::asio::transfer_all());
938 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
939 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
941 s
.reset(read_data
, sizeof(read_data
));
942 s
.next_read_length(10);
943 memset(read_buf
, 0, sizeof(read_buf
));
944 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
945 boost::asio::transfer_all());
946 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
947 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
949 s
.reset(read_data
, sizeof(read_data
));
950 s
.next_read_length(10);
951 memset(read_buf
, 0, sizeof(read_buf
));
952 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
953 boost::asio::transfer_all());
954 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
955 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
957 s
.reset(read_data
, sizeof(read_data
));
958 memset(read_buf
, 0, sizeof(read_buf
));
959 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
960 boost::asio::transfer_at_least(1));
961 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
962 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
964 s
.reset(read_data
, sizeof(read_data
));
965 memset(read_buf
, 0, sizeof(read_buf
));
966 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
967 boost::asio::transfer_at_least(1));
968 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
969 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
971 s
.reset(read_data
, sizeof(read_data
));
972 s
.next_read_length(1);
973 memset(read_buf
, 0, sizeof(read_buf
));
974 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
975 boost::asio::transfer_at_least(1));
976 BOOST_ASIO_CHECK(bytes_transferred
== 1);
977 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
979 s
.reset(read_data
, sizeof(read_data
));
980 s
.next_read_length(1);
981 memset(read_buf
, 0, sizeof(read_buf
));
982 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
983 boost::asio::transfer_at_least(1));
984 BOOST_ASIO_CHECK(bytes_transferred
== 1);
985 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
987 s
.reset(read_data
, sizeof(read_data
));
988 s
.next_read_length(10);
989 memset(read_buf
, 0, sizeof(read_buf
));
990 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
991 boost::asio::transfer_at_least(1));
992 BOOST_ASIO_CHECK(bytes_transferred
== 10);
993 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
995 s
.reset(read_data
, sizeof(read_data
));
996 s
.next_read_length(10);
997 memset(read_buf
, 0, sizeof(read_buf
));
998 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
999 boost::asio::transfer_at_least(1));
1000 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1001 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1003 s
.reset(read_data
, sizeof(read_data
));
1004 memset(read_buf
, 0, sizeof(read_buf
));
1005 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1006 boost::asio::transfer_at_least(10));
1007 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1008 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1010 s
.reset(read_data
, sizeof(read_data
));
1011 memset(read_buf
, 0, sizeof(read_buf
));
1012 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1013 boost::asio::transfer_at_least(10));
1014 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1015 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1017 s
.reset(read_data
, sizeof(read_data
));
1018 s
.next_read_length(1);
1019 memset(read_buf
, 0, sizeof(read_buf
));
1020 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1021 boost::asio::transfer_at_least(10));
1022 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1023 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1025 s
.reset(read_data
, sizeof(read_data
));
1026 s
.next_read_length(1);
1027 memset(read_buf
, 0, sizeof(read_buf
));
1028 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1029 boost::asio::transfer_at_least(10));
1030 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1031 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1033 s
.reset(read_data
, sizeof(read_data
));
1034 s
.next_read_length(10);
1035 memset(read_buf
, 0, sizeof(read_buf
));
1036 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1037 boost::asio::transfer_at_least(10));
1038 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1039 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1041 s
.reset(read_data
, sizeof(read_data
));
1042 s
.next_read_length(10);
1043 memset(read_buf
, 0, sizeof(read_buf
));
1044 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1045 boost::asio::transfer_at_least(10));
1046 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1047 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1049 s
.reset(read_data
, sizeof(read_data
));
1050 memset(read_buf
, 0, sizeof(read_buf
));
1051 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1052 boost::asio::transfer_at_least(42));
1053 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1054 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1056 s
.reset(read_data
, sizeof(read_data
));
1057 memset(read_buf
, 0, sizeof(read_buf
));
1058 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1059 boost::asio::transfer_at_least(42));
1060 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1061 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1063 s
.reset(read_data
, sizeof(read_data
));
1064 s
.next_read_length(1);
1065 memset(read_buf
, 0, sizeof(read_buf
));
1066 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1067 boost::asio::transfer_at_least(42));
1068 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1069 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1071 s
.reset(read_data
, sizeof(read_data
));
1072 s
.next_read_length(1);
1073 memset(read_buf
, 0, sizeof(read_buf
));
1074 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1075 boost::asio::transfer_at_least(42));
1076 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1077 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1079 s
.reset(read_data
, sizeof(read_data
));
1080 s
.next_read_length(10);
1081 memset(read_buf
, 0, sizeof(read_buf
));
1082 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1083 boost::asio::transfer_at_least(42));
1084 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1085 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
1087 s
.reset(read_data
, sizeof(read_data
));
1088 s
.next_read_length(10);
1089 memset(read_buf
, 0, sizeof(read_buf
));
1090 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1091 boost::asio::transfer_at_least(42));
1092 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1093 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
1095 s
.reset(read_data
, sizeof(read_data
));
1096 memset(read_buf
, 0, sizeof(read_buf
));
1097 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1098 boost::asio::transfer_exactly(1));
1099 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1100 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1102 s
.reset(read_data
, sizeof(read_data
));
1103 memset(read_buf
, 0, sizeof(read_buf
));
1104 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1105 boost::asio::transfer_exactly(1));
1106 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1107 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1109 s
.reset(read_data
, sizeof(read_data
));
1110 s
.next_read_length(1);
1111 memset(read_buf
, 0, sizeof(read_buf
));
1112 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1113 boost::asio::transfer_exactly(1));
1114 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1115 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1117 s
.reset(read_data
, sizeof(read_data
));
1118 s
.next_read_length(1);
1119 memset(read_buf
, 0, sizeof(read_buf
));
1120 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1121 boost::asio::transfer_exactly(1));
1122 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1123 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1125 s
.reset(read_data
, sizeof(read_data
));
1126 s
.next_read_length(10);
1127 memset(read_buf
, 0, sizeof(read_buf
));
1128 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1129 boost::asio::transfer_exactly(1));
1130 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1131 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1133 s
.reset(read_data
, sizeof(read_data
));
1134 s
.next_read_length(10);
1135 memset(read_buf
, 0, sizeof(read_buf
));
1136 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1137 boost::asio::transfer_exactly(1));
1138 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1139 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1141 s
.reset(read_data
, sizeof(read_data
));
1142 memset(read_buf
, 0, sizeof(read_buf
));
1143 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1144 boost::asio::transfer_exactly(10));
1145 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1146 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1148 s
.reset(read_data
, sizeof(read_data
));
1149 memset(read_buf
, 0, sizeof(read_buf
));
1150 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1151 boost::asio::transfer_exactly(10));
1152 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1153 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1155 s
.reset(read_data
, sizeof(read_data
));
1156 s
.next_read_length(1);
1157 memset(read_buf
, 0, sizeof(read_buf
));
1158 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1159 boost::asio::transfer_exactly(10));
1160 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1161 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1163 s
.reset(read_data
, sizeof(read_data
));
1164 s
.next_read_length(1);
1165 memset(read_buf
, 0, sizeof(read_buf
));
1166 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1167 boost::asio::transfer_exactly(10));
1168 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1169 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1171 s
.reset(read_data
, sizeof(read_data
));
1172 s
.next_read_length(10);
1173 memset(read_buf
, 0, sizeof(read_buf
));
1174 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1175 boost::asio::transfer_exactly(10));
1176 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1177 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1179 s
.reset(read_data
, sizeof(read_data
));
1180 s
.next_read_length(10);
1181 memset(read_buf
, 0, sizeof(read_buf
));
1182 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1183 boost::asio::transfer_exactly(10));
1184 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1185 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1187 s
.reset(read_data
, sizeof(read_data
));
1188 memset(read_buf
, 0, sizeof(read_buf
));
1189 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1190 boost::asio::transfer_exactly(42));
1191 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1192 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1194 s
.reset(read_data
, sizeof(read_data
));
1195 memset(read_buf
, 0, sizeof(read_buf
));
1196 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1197 boost::asio::transfer_exactly(42));
1198 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1199 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1201 s
.reset(read_data
, sizeof(read_data
));
1202 s
.next_read_length(1);
1203 memset(read_buf
, 0, sizeof(read_buf
));
1204 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1205 boost::asio::transfer_exactly(42));
1206 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1207 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1209 s
.reset(read_data
, sizeof(read_data
));
1210 s
.next_read_length(1);
1211 memset(read_buf
, 0, sizeof(read_buf
));
1212 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1213 boost::asio::transfer_exactly(42));
1214 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1215 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1217 s
.reset(read_data
, sizeof(read_data
));
1218 s
.next_read_length(10);
1219 memset(read_buf
, 0, sizeof(read_buf
));
1220 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1221 boost::asio::transfer_exactly(42));
1222 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1223 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1225 s
.reset(read_data
, sizeof(read_data
));
1226 s
.next_read_length(10);
1227 memset(read_buf
, 0, sizeof(read_buf
));
1228 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1229 boost::asio::transfer_exactly(42));
1230 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1231 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1233 s
.reset(read_data
, sizeof(read_data
));
1234 memset(read_buf
, 0, sizeof(read_buf
));
1235 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1236 old_style_transfer_all
);
1237 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1238 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1240 s
.reset(read_data
, sizeof(read_data
));
1241 memset(read_buf
, 0, sizeof(read_buf
));
1242 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1243 old_style_transfer_all
);
1244 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1245 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1247 s
.reset(read_data
, sizeof(read_data
));
1248 s
.next_read_length(1);
1249 memset(read_buf
, 0, sizeof(read_buf
));
1250 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1251 old_style_transfer_all
);
1252 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1253 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1255 s
.reset(read_data
, sizeof(read_data
));
1256 s
.next_read_length(1);
1257 memset(read_buf
, 0, sizeof(read_buf
));
1258 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1259 old_style_transfer_all
);
1260 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1261 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1263 s
.reset(read_data
, sizeof(read_data
));
1264 s
.next_read_length(10);
1265 memset(read_buf
, 0, sizeof(read_buf
));
1266 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1267 old_style_transfer_all
);
1268 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1269 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1271 s
.reset(read_data
, sizeof(read_data
));
1272 s
.next_read_length(10);
1273 memset(read_buf
, 0, sizeof(read_buf
));
1274 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1275 old_style_transfer_all
);
1276 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1277 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1279 s
.reset(read_data
, sizeof(read_data
));
1280 memset(read_buf
, 0, sizeof(read_buf
));
1281 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, short_transfer
);
1282 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1283 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1285 s
.reset(read_data
, sizeof(read_data
));
1286 memset(read_buf
, 0, sizeof(read_buf
));
1287 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, short_transfer
);
1288 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1289 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1291 s
.reset(read_data
, sizeof(read_data
));
1292 s
.next_read_length(1);
1293 memset(read_buf
, 0, sizeof(read_buf
));
1294 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, short_transfer
);
1295 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1296 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1298 s
.reset(read_data
, sizeof(read_data
));
1299 s
.next_read_length(1);
1300 memset(read_buf
, 0, sizeof(read_buf
));
1301 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, short_transfer
);
1302 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1303 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1305 s
.reset(read_data
, sizeof(read_data
));
1306 s
.next_read_length(10);
1307 memset(read_buf
, 0, sizeof(read_buf
));
1308 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
, short_transfer
);
1309 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1310 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1312 s
.reset(read_data
, sizeof(read_data
));
1313 s
.next_read_length(10);
1314 memset(read_buf
, 0, sizeof(read_buf
));
1315 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
, short_transfer
);
1316 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1317 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1320 void test_4_arg_streambuf_read_at()
1322 boost::asio::io_context ioc
;
1323 test_random_access_device
s(ioc
);
1324 boost::asio::streambuf
sb(sizeof(read_data
));
1326 s
.reset(read_data
, sizeof(read_data
));
1327 sb
.consume(sb
.size());
1328 size_t bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1329 boost::asio::transfer_all());
1330 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1331 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1332 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1334 s
.reset(read_data
, sizeof(read_data
));
1335 sb
.consume(sb
.size());
1336 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1337 boost::asio::transfer_all());
1338 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1339 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1340 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1342 s
.reset(read_data
, sizeof(read_data
));
1343 s
.next_read_length(1);
1344 sb
.consume(sb
.size());
1345 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1346 boost::asio::transfer_all());
1347 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1348 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1349 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1351 s
.reset(read_data
, sizeof(read_data
));
1352 s
.next_read_length(1);
1353 sb
.consume(sb
.size());
1354 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1355 boost::asio::transfer_all());
1356 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1357 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1358 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1360 s
.reset(read_data
, sizeof(read_data
));
1361 s
.next_read_length(10);
1362 sb
.consume(sb
.size());
1363 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1364 boost::asio::transfer_all());
1365 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1366 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1367 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1369 s
.reset(read_data
, sizeof(read_data
));
1370 s
.next_read_length(10);
1371 sb
.consume(sb
.size());
1372 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1373 boost::asio::transfer_all());
1374 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1375 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1376 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1378 s
.reset(read_data
, sizeof(read_data
));
1379 sb
.consume(sb
.size());
1380 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1381 boost::asio::transfer_at_least(1));
1382 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1383 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1384 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1386 s
.reset(read_data
, sizeof(read_data
));
1387 sb
.consume(sb
.size());
1388 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1389 boost::asio::transfer_at_least(1));
1390 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1391 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1392 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1394 s
.reset(read_data
, sizeof(read_data
));
1395 s
.next_read_length(1);
1396 sb
.consume(sb
.size());
1397 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1398 boost::asio::transfer_at_least(1));
1399 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1400 BOOST_ASIO_CHECK(sb
.size() == 1);
1401 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
1403 s
.reset(read_data
, sizeof(read_data
));
1404 s
.next_read_length(1);
1405 sb
.consume(sb
.size());
1406 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1407 boost::asio::transfer_at_least(1));
1408 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1409 BOOST_ASIO_CHECK(sb
.size() == 1);
1410 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
1412 s
.reset(read_data
, sizeof(read_data
));
1413 s
.next_read_length(10);
1414 sb
.consume(sb
.size());
1415 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1416 boost::asio::transfer_at_least(1));
1417 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1418 BOOST_ASIO_CHECK(sb
.size() == 10);
1419 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
1421 s
.reset(read_data
, sizeof(read_data
));
1422 s
.next_read_length(10);
1423 sb
.consume(sb
.size());
1424 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1425 boost::asio::transfer_at_least(1));
1426 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1427 BOOST_ASIO_CHECK(sb
.size() == 10);
1428 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
1430 s
.reset(read_data
, sizeof(read_data
));
1431 sb
.consume(sb
.size());
1432 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1433 boost::asio::transfer_at_least(10));
1434 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1435 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1436 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1438 s
.reset(read_data
, sizeof(read_data
));
1439 sb
.consume(sb
.size());
1440 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1441 boost::asio::transfer_at_least(10));
1442 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1443 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1444 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1446 s
.reset(read_data
, sizeof(read_data
));
1447 s
.next_read_length(1);
1448 sb
.consume(sb
.size());
1449 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1450 boost::asio::transfer_at_least(10));
1451 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1452 BOOST_ASIO_CHECK(sb
.size() == 10);
1453 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
1455 s
.reset(read_data
, sizeof(read_data
));
1456 s
.next_read_length(1);
1457 sb
.consume(sb
.size());
1458 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1459 boost::asio::transfer_at_least(10));
1460 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1461 BOOST_ASIO_CHECK(sb
.size() == 10);
1462 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
1464 s
.reset(read_data
, sizeof(read_data
));
1465 s
.next_read_length(10);
1466 sb
.consume(sb
.size());
1467 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1468 boost::asio::transfer_at_least(10));
1469 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1470 BOOST_ASIO_CHECK(sb
.size() == 10);
1471 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
1473 s
.reset(read_data
, sizeof(read_data
));
1474 s
.next_read_length(10);
1475 sb
.consume(sb
.size());
1476 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1477 boost::asio::transfer_at_least(10));
1478 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1479 BOOST_ASIO_CHECK(sb
.size() == 10);
1480 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
1482 s
.reset(read_data
, sizeof(read_data
));
1483 sb
.consume(sb
.size());
1484 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1485 boost::asio::transfer_at_least(42));
1486 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1487 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1488 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1490 s
.reset(read_data
, sizeof(read_data
));
1491 sb
.consume(sb
.size());
1492 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1493 boost::asio::transfer_at_least(42));
1494 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1495 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1496 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1498 s
.reset(read_data
, sizeof(read_data
));
1499 s
.next_read_length(1);
1500 sb
.consume(sb
.size());
1501 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1502 boost::asio::transfer_at_least(42));
1503 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1504 BOOST_ASIO_CHECK(sb
.size() == 42);
1505 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
1507 s
.reset(read_data
, sizeof(read_data
));
1508 s
.next_read_length(1);
1509 sb
.consume(sb
.size());
1510 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1511 boost::asio::transfer_at_least(42));
1512 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1513 BOOST_ASIO_CHECK(sb
.size() == 42);
1514 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
1516 s
.reset(read_data
, sizeof(read_data
));
1517 s
.next_read_length(10);
1518 sb
.consume(sb
.size());
1519 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1520 boost::asio::transfer_at_least(42));
1521 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1522 BOOST_ASIO_CHECK(sb
.size() == 50);
1523 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 50));
1525 s
.reset(read_data
, sizeof(read_data
));
1526 s
.next_read_length(10);
1527 sb
.consume(sb
.size());
1528 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1529 boost::asio::transfer_at_least(42));
1530 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1531 BOOST_ASIO_CHECK(sb
.size() == 50);
1532 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 50));
1534 s
.reset(read_data
, sizeof(read_data
));
1535 sb
.consume(sb
.size());
1536 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1537 boost::asio::transfer_exactly(1));
1538 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1539 BOOST_ASIO_CHECK(sb
.size() == 1);
1540 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
1542 s
.reset(read_data
, sizeof(read_data
));
1543 sb
.consume(sb
.size());
1544 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1545 boost::asio::transfer_exactly(1));
1546 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1547 BOOST_ASIO_CHECK(sb
.size() == 1);
1548 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
1550 s
.reset(read_data
, sizeof(read_data
));
1551 s
.next_read_length(1);
1552 sb
.consume(sb
.size());
1553 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1554 boost::asio::transfer_exactly(1));
1555 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1556 BOOST_ASIO_CHECK(sb
.size() == 1);
1557 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
1559 s
.reset(read_data
, sizeof(read_data
));
1560 s
.next_read_length(1);
1561 sb
.consume(sb
.size());
1562 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1563 boost::asio::transfer_exactly(1));
1564 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1565 BOOST_ASIO_CHECK(sb
.size() == 1);
1566 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
1568 s
.reset(read_data
, sizeof(read_data
));
1569 s
.next_read_length(10);
1570 sb
.consume(sb
.size());
1571 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1572 boost::asio::transfer_exactly(1));
1573 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1574 BOOST_ASIO_CHECK(sb
.size() == 1);
1575 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
1577 s
.reset(read_data
, sizeof(read_data
));
1578 s
.next_read_length(10);
1579 sb
.consume(sb
.size());
1580 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1581 boost::asio::transfer_exactly(1));
1582 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1583 BOOST_ASIO_CHECK(sb
.size() == 1);
1584 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
1586 s
.reset(read_data
, sizeof(read_data
));
1587 sb
.consume(sb
.size());
1588 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1589 boost::asio::transfer_exactly(10));
1590 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1591 BOOST_ASIO_CHECK(sb
.size() == 10);
1592 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
1594 s
.reset(read_data
, sizeof(read_data
));
1595 sb
.consume(sb
.size());
1596 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1597 boost::asio::transfer_exactly(10));
1598 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1599 BOOST_ASIO_CHECK(sb
.size() == 10);
1600 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
1602 s
.reset(read_data
, sizeof(read_data
));
1603 s
.next_read_length(1);
1604 sb
.consume(sb
.size());
1605 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1606 boost::asio::transfer_exactly(10));
1607 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1608 BOOST_ASIO_CHECK(sb
.size() == 10);
1609 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
1611 s
.reset(read_data
, sizeof(read_data
));
1612 s
.next_read_length(1);
1613 sb
.consume(sb
.size());
1614 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1615 boost::asio::transfer_exactly(10));
1616 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1617 BOOST_ASIO_CHECK(sb
.size() == 10);
1618 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
1620 s
.reset(read_data
, sizeof(read_data
));
1621 s
.next_read_length(10);
1622 sb
.consume(sb
.size());
1623 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1624 boost::asio::transfer_exactly(10));
1625 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1626 BOOST_ASIO_CHECK(sb
.size() == 10);
1627 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
1629 s
.reset(read_data
, sizeof(read_data
));
1630 s
.next_read_length(10);
1631 sb
.consume(sb
.size());
1632 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1633 boost::asio::transfer_exactly(10));
1634 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1635 BOOST_ASIO_CHECK(sb
.size() == 10);
1636 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
1638 s
.reset(read_data
, sizeof(read_data
));
1639 sb
.consume(sb
.size());
1640 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1641 boost::asio::transfer_exactly(42));
1642 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1643 BOOST_ASIO_CHECK(sb
.size() == 42);
1644 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
1646 s
.reset(read_data
, sizeof(read_data
));
1647 sb
.consume(sb
.size());
1648 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1649 boost::asio::transfer_exactly(42));
1650 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1651 BOOST_ASIO_CHECK(sb
.size() == 42);
1652 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
1654 s
.reset(read_data
, sizeof(read_data
));
1655 s
.next_read_length(1);
1656 sb
.consume(sb
.size());
1657 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1658 boost::asio::transfer_exactly(42));
1659 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1660 BOOST_ASIO_CHECK(sb
.size() == 42);
1661 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
1663 s
.reset(read_data
, sizeof(read_data
));
1664 s
.next_read_length(1);
1665 sb
.consume(sb
.size());
1666 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1667 boost::asio::transfer_exactly(42));
1668 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1669 BOOST_ASIO_CHECK(sb
.size() == 42);
1670 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
1672 s
.reset(read_data
, sizeof(read_data
));
1673 s
.next_read_length(10);
1674 sb
.consume(sb
.size());
1675 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1676 boost::asio::transfer_exactly(42));
1677 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1678 BOOST_ASIO_CHECK(sb
.size() == 42);
1679 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
1681 s
.reset(read_data
, sizeof(read_data
));
1682 s
.next_read_length(10);
1683 sb
.consume(sb
.size());
1684 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1685 boost::asio::transfer_exactly(42));
1686 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1687 BOOST_ASIO_CHECK(sb
.size() == 42);
1688 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
1690 s
.reset(read_data
, sizeof(read_data
));
1691 sb
.consume(sb
.size());
1692 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1693 old_style_transfer_all
);
1694 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1695 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1696 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1698 s
.reset(read_data
, sizeof(read_data
));
1699 sb
.consume(sb
.size());
1700 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1701 old_style_transfer_all
);
1702 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1703 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1704 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1706 s
.reset(read_data
, sizeof(read_data
));
1707 s
.next_read_length(1);
1708 sb
.consume(sb
.size());
1709 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1710 old_style_transfer_all
);
1711 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1712 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1713 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1715 s
.reset(read_data
, sizeof(read_data
));
1716 s
.next_read_length(1);
1717 sb
.consume(sb
.size());
1718 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1719 old_style_transfer_all
);
1720 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1721 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1722 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1724 s
.reset(read_data
, sizeof(read_data
));
1725 s
.next_read_length(10);
1726 sb
.consume(sb
.size());
1727 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
1728 old_style_transfer_all
);
1729 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1730 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1731 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1733 s
.reset(read_data
, sizeof(read_data
));
1734 s
.next_read_length(10);
1735 sb
.consume(sb
.size());
1736 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
1737 old_style_transfer_all
);
1738 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1739 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1740 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1742 s
.reset(read_data
, sizeof(read_data
));
1743 sb
.consume(sb
.size());
1744 bytes_transferred
= boost::asio::read_at(s
, 0, sb
, short_transfer
);
1745 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1746 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1747 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1749 s
.reset(read_data
, sizeof(read_data
));
1750 sb
.consume(sb
.size());
1751 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
, short_transfer
);
1752 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1753 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1754 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1756 s
.reset(read_data
, sizeof(read_data
));
1757 s
.next_read_length(1);
1758 sb
.consume(sb
.size());
1759 bytes_transferred
= boost::asio::read_at(s
, 0, sb
, short_transfer
);
1760 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1761 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1762 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1764 s
.reset(read_data
, sizeof(read_data
));
1765 s
.next_read_length(1);
1766 sb
.consume(sb
.size());
1767 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
, short_transfer
);
1768 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1769 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1770 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1772 s
.reset(read_data
, sizeof(read_data
));
1773 s
.next_read_length(10);
1774 sb
.consume(sb
.size());
1775 bytes_transferred
= boost::asio::read_at(s
, 0, sb
, short_transfer
);
1776 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1777 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1778 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
1780 s
.reset(read_data
, sizeof(read_data
));
1781 s
.next_read_length(10);
1782 sb
.consume(sb
.size());
1783 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
, short_transfer
);
1784 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1785 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
1786 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
1789 void test_5_arg_mutable_buffer_read_at()
1791 boost::asio::io_context ioc
;
1792 test_random_access_device
s(ioc
);
1793 char read_buf
[sizeof(read_data
)];
1794 boost::asio::mutable_buffer buffers
1795 = boost::asio::buffer(read_buf
, sizeof(read_buf
));
1797 s
.reset(read_data
, sizeof(read_data
));
1798 memset(read_buf
, 0, sizeof(read_buf
));
1799 boost::system::error_code error
;
1800 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1801 boost::asio::transfer_all(), error
);
1802 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1803 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1804 BOOST_ASIO_CHECK(!error
);
1806 s
.reset(read_data
, sizeof(read_data
));
1807 memset(read_buf
, 0, sizeof(read_buf
));
1808 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1809 boost::asio::transfer_all(), error
);
1810 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1811 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1812 BOOST_ASIO_CHECK(!error
);
1814 s
.reset(read_data
, sizeof(read_data
));
1815 s
.next_read_length(1);
1816 memset(read_buf
, 0, sizeof(read_buf
));
1817 error
= boost::system::error_code();
1818 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1819 boost::asio::transfer_all(), error
);
1820 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1821 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1822 BOOST_ASIO_CHECK(!error
);
1824 s
.reset(read_data
, sizeof(read_data
));
1825 s
.next_read_length(1);
1826 memset(read_buf
, 0, sizeof(read_buf
));
1827 error
= boost::system::error_code();
1828 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1829 boost::asio::transfer_all(), error
);
1830 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1831 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1832 BOOST_ASIO_CHECK(!error
);
1834 s
.reset(read_data
, sizeof(read_data
));
1835 s
.next_read_length(10);
1836 memset(read_buf
, 0, sizeof(read_buf
));
1837 error
= boost::system::error_code();
1838 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1839 boost::asio::transfer_all(), error
);
1840 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1841 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1842 BOOST_ASIO_CHECK(!error
);
1844 s
.reset(read_data
, sizeof(read_data
));
1845 s
.next_read_length(10);
1846 memset(read_buf
, 0, sizeof(read_buf
));
1847 error
= boost::system::error_code();
1848 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1849 boost::asio::transfer_all(), error
);
1850 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1851 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1852 BOOST_ASIO_CHECK(!error
);
1854 s
.reset(read_data
, sizeof(read_data
));
1855 memset(read_buf
, 0, sizeof(read_buf
));
1856 error
= boost::system::error_code();
1857 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1858 boost::asio::transfer_at_least(1), error
);
1859 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1860 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1861 BOOST_ASIO_CHECK(!error
);
1863 s
.reset(read_data
, sizeof(read_data
));
1864 memset(read_buf
, 0, sizeof(read_buf
));
1865 error
= boost::system::error_code();
1866 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1867 boost::asio::transfer_at_least(1), error
);
1868 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1869 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1870 BOOST_ASIO_CHECK(!error
);
1872 s
.reset(read_data
, sizeof(read_data
));
1873 s
.next_read_length(1);
1874 memset(read_buf
, 0, sizeof(read_buf
));
1875 error
= boost::system::error_code();
1876 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1877 boost::asio::transfer_at_least(1), error
);
1878 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1879 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1880 BOOST_ASIO_CHECK(!error
);
1882 s
.reset(read_data
, sizeof(read_data
));
1883 s
.next_read_length(1);
1884 memset(read_buf
, 0, sizeof(read_buf
));
1885 error
= boost::system::error_code();
1886 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1887 boost::asio::transfer_at_least(1), error
);
1888 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1889 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1890 BOOST_ASIO_CHECK(!error
);
1892 s
.reset(read_data
, sizeof(read_data
));
1893 s
.next_read_length(10);
1894 memset(read_buf
, 0, sizeof(read_buf
));
1895 error
= boost::system::error_code();
1896 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1897 boost::asio::transfer_at_least(1), error
);
1898 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1899 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1900 BOOST_ASIO_CHECK(!error
);
1902 s
.reset(read_data
, sizeof(read_data
));
1903 s
.next_read_length(10);
1904 memset(read_buf
, 0, sizeof(read_buf
));
1905 error
= boost::system::error_code();
1906 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1907 boost::asio::transfer_at_least(1), error
);
1908 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1909 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1910 BOOST_ASIO_CHECK(!error
);
1912 s
.reset(read_data
, sizeof(read_data
));
1913 memset(read_buf
, 0, sizeof(read_buf
));
1914 error
= boost::system::error_code();
1915 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1916 boost::asio::transfer_at_least(10), error
);
1917 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1918 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1919 BOOST_ASIO_CHECK(!error
);
1921 s
.reset(read_data
, sizeof(read_data
));
1922 memset(read_buf
, 0, sizeof(read_buf
));
1923 error
= boost::system::error_code();
1924 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1925 boost::asio::transfer_at_least(10), error
);
1926 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1927 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1928 BOOST_ASIO_CHECK(!error
);
1930 s
.reset(read_data
, sizeof(read_data
));
1931 s
.next_read_length(1);
1932 memset(read_buf
, 0, sizeof(read_buf
));
1933 error
= boost::system::error_code();
1934 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1935 boost::asio::transfer_at_least(10), error
);
1936 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1937 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1938 BOOST_ASIO_CHECK(!error
);
1940 s
.reset(read_data
, sizeof(read_data
));
1941 s
.next_read_length(1);
1942 memset(read_buf
, 0, sizeof(read_buf
));
1943 error
= boost::system::error_code();
1944 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1945 boost::asio::transfer_at_least(10), error
);
1946 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1947 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1948 BOOST_ASIO_CHECK(!error
);
1950 s
.reset(read_data
, sizeof(read_data
));
1951 s
.next_read_length(10);
1952 memset(read_buf
, 0, sizeof(read_buf
));
1953 error
= boost::system::error_code();
1954 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1955 boost::asio::transfer_at_least(10), error
);
1956 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1957 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1958 BOOST_ASIO_CHECK(!error
);
1960 s
.reset(read_data
, sizeof(read_data
));
1961 s
.next_read_length(10);
1962 memset(read_buf
, 0, sizeof(read_buf
));
1963 error
= boost::system::error_code();
1964 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1965 boost::asio::transfer_at_least(10), error
);
1966 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1967 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1968 BOOST_ASIO_CHECK(!error
);
1970 s
.reset(read_data
, sizeof(read_data
));
1971 memset(read_buf
, 0, sizeof(read_buf
));
1972 error
= boost::system::error_code();
1973 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1974 boost::asio::transfer_at_least(42), error
);
1975 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1976 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
1977 BOOST_ASIO_CHECK(!error
);
1979 s
.reset(read_data
, sizeof(read_data
));
1980 memset(read_buf
, 0, sizeof(read_buf
));
1981 error
= boost::system::error_code();
1982 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
1983 boost::asio::transfer_at_least(42), error
);
1984 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
1985 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
1986 BOOST_ASIO_CHECK(!error
);
1988 s
.reset(read_data
, sizeof(read_data
));
1989 s
.next_read_length(1);
1990 memset(read_buf
, 0, sizeof(read_buf
));
1991 error
= boost::system::error_code();
1992 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
1993 boost::asio::transfer_at_least(42), error
);
1994 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1995 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1996 BOOST_ASIO_CHECK(!error
);
1998 s
.reset(read_data
, sizeof(read_data
));
1999 s
.next_read_length(1);
2000 memset(read_buf
, 0, sizeof(read_buf
));
2001 error
= boost::system::error_code();
2002 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2003 boost::asio::transfer_at_least(42), error
);
2004 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2005 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2006 BOOST_ASIO_CHECK(!error
);
2008 s
.reset(read_data
, sizeof(read_data
));
2009 s
.next_read_length(10);
2010 memset(read_buf
, 0, sizeof(read_buf
));
2011 error
= boost::system::error_code();
2012 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2013 boost::asio::transfer_at_least(42), error
);
2014 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2015 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
2016 BOOST_ASIO_CHECK(!error
);
2018 s
.reset(read_data
, sizeof(read_data
));
2019 s
.next_read_length(10);
2020 memset(read_buf
, 0, sizeof(read_buf
));
2021 error
= boost::system::error_code();
2022 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2023 boost::asio::transfer_at_least(42), error
);
2024 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2025 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
2026 BOOST_ASIO_CHECK(!error
);
2028 s
.reset(read_data
, sizeof(read_data
));
2029 memset(read_buf
, 0, sizeof(read_buf
));
2030 error
= boost::system::error_code();
2031 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2032 boost::asio::transfer_exactly(1), error
);
2033 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2034 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2035 BOOST_ASIO_CHECK(!error
);
2037 s
.reset(read_data
, sizeof(read_data
));
2038 memset(read_buf
, 0, sizeof(read_buf
));
2039 error
= boost::system::error_code();
2040 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2041 boost::asio::transfer_exactly(1), error
);
2042 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2043 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2044 BOOST_ASIO_CHECK(!error
);
2046 s
.reset(read_data
, sizeof(read_data
));
2047 s
.next_read_length(1);
2048 memset(read_buf
, 0, sizeof(read_buf
));
2049 error
= boost::system::error_code();
2050 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2051 boost::asio::transfer_exactly(1), error
);
2052 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2053 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2054 BOOST_ASIO_CHECK(!error
);
2056 s
.reset(read_data
, sizeof(read_data
));
2057 s
.next_read_length(1);
2058 memset(read_buf
, 0, sizeof(read_buf
));
2059 error
= boost::system::error_code();
2060 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2061 boost::asio::transfer_exactly(1), error
);
2062 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2063 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2064 BOOST_ASIO_CHECK(!error
);
2066 s
.reset(read_data
, sizeof(read_data
));
2067 s
.next_read_length(10);
2068 memset(read_buf
, 0, sizeof(read_buf
));
2069 error
= boost::system::error_code();
2070 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2071 boost::asio::transfer_exactly(1), error
);
2072 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2073 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2074 BOOST_ASIO_CHECK(!error
);
2076 s
.reset(read_data
, sizeof(read_data
));
2077 s
.next_read_length(10);
2078 memset(read_buf
, 0, sizeof(read_buf
));
2079 error
= boost::system::error_code();
2080 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2081 boost::asio::transfer_exactly(1), error
);
2082 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2083 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2084 BOOST_ASIO_CHECK(!error
);
2086 s
.reset(read_data
, sizeof(read_data
));
2087 memset(read_buf
, 0, sizeof(read_buf
));
2088 error
= boost::system::error_code();
2089 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2090 boost::asio::transfer_exactly(10), error
);
2091 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2092 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2093 BOOST_ASIO_CHECK(!error
);
2095 s
.reset(read_data
, sizeof(read_data
));
2096 memset(read_buf
, 0, sizeof(read_buf
));
2097 error
= boost::system::error_code();
2098 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2099 boost::asio::transfer_exactly(10), error
);
2100 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2101 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2102 BOOST_ASIO_CHECK(!error
);
2104 s
.reset(read_data
, sizeof(read_data
));
2105 s
.next_read_length(1);
2106 memset(read_buf
, 0, sizeof(read_buf
));
2107 error
= boost::system::error_code();
2108 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2109 boost::asio::transfer_exactly(10), error
);
2110 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2111 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2112 BOOST_ASIO_CHECK(!error
);
2114 s
.reset(read_data
, sizeof(read_data
));
2115 s
.next_read_length(1);
2116 memset(read_buf
, 0, sizeof(read_buf
));
2117 error
= boost::system::error_code();
2118 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2119 boost::asio::transfer_exactly(10), error
);
2120 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2121 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2122 BOOST_ASIO_CHECK(!error
);
2124 s
.reset(read_data
, sizeof(read_data
));
2125 s
.next_read_length(10);
2126 memset(read_buf
, 0, sizeof(read_buf
));
2127 error
= boost::system::error_code();
2128 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2129 boost::asio::transfer_exactly(10), error
);
2130 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2131 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2132 BOOST_ASIO_CHECK(!error
);
2134 s
.reset(read_data
, sizeof(read_data
));
2135 s
.next_read_length(10);
2136 memset(read_buf
, 0, sizeof(read_buf
));
2137 error
= boost::system::error_code();
2138 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2139 boost::asio::transfer_exactly(10), error
);
2140 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2141 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2142 BOOST_ASIO_CHECK(!error
);
2144 s
.reset(read_data
, sizeof(read_data
));
2145 memset(read_buf
, 0, sizeof(read_buf
));
2146 error
= boost::system::error_code();
2147 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2148 boost::asio::transfer_exactly(42), error
);
2149 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2150 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2151 BOOST_ASIO_CHECK(!error
);
2153 s
.reset(read_data
, sizeof(read_data
));
2154 memset(read_buf
, 0, sizeof(read_buf
));
2155 error
= boost::system::error_code();
2156 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2157 boost::asio::transfer_exactly(42), error
);
2158 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2159 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2160 BOOST_ASIO_CHECK(!error
);
2162 s
.reset(read_data
, sizeof(read_data
));
2163 s
.next_read_length(1);
2164 memset(read_buf
, 0, sizeof(read_buf
));
2165 error
= boost::system::error_code();
2166 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2167 boost::asio::transfer_exactly(42), error
);
2168 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2169 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2170 BOOST_ASIO_CHECK(!error
);
2172 s
.reset(read_data
, sizeof(read_data
));
2173 s
.next_read_length(1);
2174 memset(read_buf
, 0, sizeof(read_buf
));
2175 error
= boost::system::error_code();
2176 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2177 boost::asio::transfer_exactly(42), error
);
2178 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2179 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2180 BOOST_ASIO_CHECK(!error
);
2182 s
.reset(read_data
, sizeof(read_data
));
2183 s
.next_read_length(10);
2184 memset(read_buf
, 0, sizeof(read_buf
));
2185 error
= boost::system::error_code();
2186 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2187 boost::asio::transfer_exactly(42), error
);
2188 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2189 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2190 BOOST_ASIO_CHECK(!error
);
2192 s
.reset(read_data
, sizeof(read_data
));
2193 s
.next_read_length(10);
2194 memset(read_buf
, 0, sizeof(read_buf
));
2195 error
= boost::system::error_code();
2196 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2197 boost::asio::transfer_exactly(42), error
);
2198 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2199 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2200 BOOST_ASIO_CHECK(!error
);
2202 s
.reset(read_data
, sizeof(read_data
));
2203 memset(read_buf
, 0, sizeof(read_buf
));
2204 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2205 old_style_transfer_all
, error
);
2206 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2207 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2208 BOOST_ASIO_CHECK(!error
);
2210 s
.reset(read_data
, sizeof(read_data
));
2211 memset(read_buf
, 0, sizeof(read_buf
));
2212 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2213 old_style_transfer_all
, error
);
2214 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2215 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2216 BOOST_ASIO_CHECK(!error
);
2218 s
.reset(read_data
, sizeof(read_data
));
2219 s
.next_read_length(1);
2220 memset(read_buf
, 0, sizeof(read_buf
));
2221 error
= boost::system::error_code();
2222 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2223 old_style_transfer_all
, error
);
2224 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2225 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2226 BOOST_ASIO_CHECK(!error
);
2228 s
.reset(read_data
, sizeof(read_data
));
2229 s
.next_read_length(1);
2230 memset(read_buf
, 0, sizeof(read_buf
));
2231 error
= boost::system::error_code();
2232 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2233 old_style_transfer_all
, error
);
2234 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2235 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2236 BOOST_ASIO_CHECK(!error
);
2238 s
.reset(read_data
, sizeof(read_data
));
2239 s
.next_read_length(10);
2240 memset(read_buf
, 0, sizeof(read_buf
));
2241 error
= boost::system::error_code();
2242 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2243 old_style_transfer_all
, error
);
2244 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2245 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2246 BOOST_ASIO_CHECK(!error
);
2248 s
.reset(read_data
, sizeof(read_data
));
2249 s
.next_read_length(10);
2250 memset(read_buf
, 0, sizeof(read_buf
));
2251 error
= boost::system::error_code();
2252 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2253 old_style_transfer_all
, error
);
2254 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2255 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2256 BOOST_ASIO_CHECK(!error
);
2258 s
.reset(read_data
, sizeof(read_data
));
2259 memset(read_buf
, 0, sizeof(read_buf
));
2260 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2261 short_transfer
, error
);
2262 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2263 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2264 BOOST_ASIO_CHECK(!error
);
2266 s
.reset(read_data
, sizeof(read_data
));
2267 memset(read_buf
, 0, sizeof(read_buf
));
2268 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2269 short_transfer
, error
);
2270 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2271 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2272 BOOST_ASIO_CHECK(!error
);
2274 s
.reset(read_data
, sizeof(read_data
));
2275 s
.next_read_length(1);
2276 memset(read_buf
, 0, sizeof(read_buf
));
2277 error
= boost::system::error_code();
2278 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2279 short_transfer
, error
);
2280 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2281 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2282 BOOST_ASIO_CHECK(!error
);
2284 s
.reset(read_data
, sizeof(read_data
));
2285 s
.next_read_length(1);
2286 memset(read_buf
, 0, sizeof(read_buf
));
2287 error
= boost::system::error_code();
2288 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2289 short_transfer
, error
);
2290 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2291 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2292 BOOST_ASIO_CHECK(!error
);
2294 s
.reset(read_data
, sizeof(read_data
));
2295 s
.next_read_length(10);
2296 memset(read_buf
, 0, sizeof(read_buf
));
2297 error
= boost::system::error_code();
2298 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2299 short_transfer
, error
);
2300 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2301 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2302 BOOST_ASIO_CHECK(!error
);
2304 s
.reset(read_data
, sizeof(read_data
));
2305 s
.next_read_length(10);
2306 memset(read_buf
, 0, sizeof(read_buf
));
2307 error
= boost::system::error_code();
2308 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2309 short_transfer
, error
);
2310 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2311 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2312 BOOST_ASIO_CHECK(!error
);
2315 void test_5_arg_vector_buffers_read_at()
2317 boost::asio::io_context ioc
;
2318 test_random_access_device
s(ioc
);
2319 char read_buf
[sizeof(read_data
)];
2320 std::vector
<boost::asio::mutable_buffer
> buffers
;
2321 buffers
.push_back(boost::asio::buffer(read_buf
, 32));
2322 buffers
.push_back(boost::asio::buffer(read_buf
) + 32);
2324 s
.reset(read_data
, sizeof(read_data
));
2325 memset(read_buf
, 0, sizeof(read_buf
));
2326 boost::system::error_code error
;
2327 size_t bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2328 boost::asio::transfer_all(), error
);
2329 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2330 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2331 BOOST_ASIO_CHECK(!error
);
2333 s
.reset(read_data
, sizeof(read_data
));
2334 memset(read_buf
, 0, sizeof(read_buf
));
2335 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2336 boost::asio::transfer_all(), error
);
2337 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2338 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2339 BOOST_ASIO_CHECK(!error
);
2341 s
.reset(read_data
, sizeof(read_data
));
2342 s
.next_read_length(1);
2343 memset(read_buf
, 0, sizeof(read_buf
));
2344 error
= boost::system::error_code();
2345 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2346 boost::asio::transfer_all(), error
);
2347 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2348 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2349 BOOST_ASIO_CHECK(!error
);
2351 s
.reset(read_data
, sizeof(read_data
));
2352 s
.next_read_length(1);
2353 memset(read_buf
, 0, sizeof(read_buf
));
2354 error
= boost::system::error_code();
2355 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2356 boost::asio::transfer_all(), error
);
2357 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2358 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2359 BOOST_ASIO_CHECK(!error
);
2361 s
.reset(read_data
, sizeof(read_data
));
2362 s
.next_read_length(10);
2363 memset(read_buf
, 0, sizeof(read_buf
));
2364 error
= boost::system::error_code();
2365 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2366 boost::asio::transfer_all(), error
);
2367 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2368 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2369 BOOST_ASIO_CHECK(!error
);
2371 s
.reset(read_data
, sizeof(read_data
));
2372 s
.next_read_length(10);
2373 memset(read_buf
, 0, sizeof(read_buf
));
2374 error
= boost::system::error_code();
2375 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2376 boost::asio::transfer_all(), error
);
2377 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2378 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2379 BOOST_ASIO_CHECK(!error
);
2381 s
.reset(read_data
, sizeof(read_data
));
2382 memset(read_buf
, 0, sizeof(read_buf
));
2383 error
= boost::system::error_code();
2384 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2385 boost::asio::transfer_at_least(1), error
);
2386 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2387 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2388 BOOST_ASIO_CHECK(!error
);
2390 s
.reset(read_data
, sizeof(read_data
));
2391 memset(read_buf
, 0, sizeof(read_buf
));
2392 error
= boost::system::error_code();
2393 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2394 boost::asio::transfer_at_least(1), error
);
2395 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2396 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2397 BOOST_ASIO_CHECK(!error
);
2399 s
.reset(read_data
, sizeof(read_data
));
2400 s
.next_read_length(1);
2401 memset(read_buf
, 0, sizeof(read_buf
));
2402 error
= boost::system::error_code();
2403 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2404 boost::asio::transfer_at_least(1), error
);
2405 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2406 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2407 BOOST_ASIO_CHECK(!error
);
2409 s
.reset(read_data
, sizeof(read_data
));
2410 s
.next_read_length(1);
2411 memset(read_buf
, 0, sizeof(read_buf
));
2412 error
= boost::system::error_code();
2413 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2414 boost::asio::transfer_at_least(1), error
);
2415 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2416 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2417 BOOST_ASIO_CHECK(!error
);
2419 s
.reset(read_data
, sizeof(read_data
));
2420 s
.next_read_length(10);
2421 memset(read_buf
, 0, sizeof(read_buf
));
2422 error
= boost::system::error_code();
2423 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2424 boost::asio::transfer_at_least(1), error
);
2425 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2426 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2427 BOOST_ASIO_CHECK(!error
);
2429 s
.reset(read_data
, sizeof(read_data
));
2430 s
.next_read_length(10);
2431 memset(read_buf
, 0, sizeof(read_buf
));
2432 error
= boost::system::error_code();
2433 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2434 boost::asio::transfer_at_least(1), error
);
2435 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2436 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2437 BOOST_ASIO_CHECK(!error
);
2439 s
.reset(read_data
, sizeof(read_data
));
2440 memset(read_buf
, 0, sizeof(read_buf
));
2441 error
= boost::system::error_code();
2442 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2443 boost::asio::transfer_at_least(10), error
);
2444 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2445 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2446 BOOST_ASIO_CHECK(!error
);
2448 s
.reset(read_data
, sizeof(read_data
));
2449 memset(read_buf
, 0, sizeof(read_buf
));
2450 error
= boost::system::error_code();
2451 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2452 boost::asio::transfer_at_least(10), error
);
2453 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2454 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2455 BOOST_ASIO_CHECK(!error
);
2457 s
.reset(read_data
, sizeof(read_data
));
2458 s
.next_read_length(1);
2459 memset(read_buf
, 0, sizeof(read_buf
));
2460 error
= boost::system::error_code();
2461 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2462 boost::asio::transfer_at_least(10), error
);
2463 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2464 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2465 BOOST_ASIO_CHECK(!error
);
2467 s
.reset(read_data
, sizeof(read_data
));
2468 s
.next_read_length(1);
2469 memset(read_buf
, 0, sizeof(read_buf
));
2470 error
= boost::system::error_code();
2471 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2472 boost::asio::transfer_at_least(10), error
);
2473 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2474 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2475 BOOST_ASIO_CHECK(!error
);
2477 s
.reset(read_data
, sizeof(read_data
));
2478 s
.next_read_length(10);
2479 memset(read_buf
, 0, sizeof(read_buf
));
2480 error
= boost::system::error_code();
2481 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2482 boost::asio::transfer_at_least(10), error
);
2483 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2484 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2485 BOOST_ASIO_CHECK(!error
);
2487 s
.reset(read_data
, sizeof(read_data
));
2488 s
.next_read_length(10);
2489 memset(read_buf
, 0, sizeof(read_buf
));
2490 error
= boost::system::error_code();
2491 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2492 boost::asio::transfer_at_least(10), error
);
2493 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2494 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2495 BOOST_ASIO_CHECK(!error
);
2497 s
.reset(read_data
, sizeof(read_data
));
2498 memset(read_buf
, 0, sizeof(read_buf
));
2499 error
= boost::system::error_code();
2500 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2501 boost::asio::transfer_at_least(42), error
);
2502 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2503 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2504 BOOST_ASIO_CHECK(!error
);
2506 s
.reset(read_data
, sizeof(read_data
));
2507 memset(read_buf
, 0, sizeof(read_buf
));
2508 error
= boost::system::error_code();
2509 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2510 boost::asio::transfer_at_least(42), error
);
2511 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2512 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2513 BOOST_ASIO_CHECK(!error
);
2515 s
.reset(read_data
, sizeof(read_data
));
2516 s
.next_read_length(1);
2517 memset(read_buf
, 0, sizeof(read_buf
));
2518 error
= boost::system::error_code();
2519 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2520 boost::asio::transfer_at_least(42), error
);
2521 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2522 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2523 BOOST_ASIO_CHECK(!error
);
2525 s
.reset(read_data
, sizeof(read_data
));
2526 s
.next_read_length(1);
2527 memset(read_buf
, 0, sizeof(read_buf
));
2528 error
= boost::system::error_code();
2529 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2530 boost::asio::transfer_at_least(42), error
);
2531 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2532 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2533 BOOST_ASIO_CHECK(!error
);
2535 s
.reset(read_data
, sizeof(read_data
));
2536 s
.next_read_length(10);
2537 memset(read_buf
, 0, sizeof(read_buf
));
2538 error
= boost::system::error_code();
2539 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2540 boost::asio::transfer_at_least(42), error
);
2541 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2542 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
2543 BOOST_ASIO_CHECK(!error
);
2545 s
.reset(read_data
, sizeof(read_data
));
2546 s
.next_read_length(10);
2547 memset(read_buf
, 0, sizeof(read_buf
));
2548 error
= boost::system::error_code();
2549 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2550 boost::asio::transfer_at_least(42), error
);
2551 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2552 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
2553 BOOST_ASIO_CHECK(!error
);
2555 s
.reset(read_data
, sizeof(read_data
));
2556 memset(read_buf
, 0, sizeof(read_buf
));
2557 error
= boost::system::error_code();
2558 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2559 boost::asio::transfer_exactly(1), error
);
2560 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2561 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2562 BOOST_ASIO_CHECK(!error
);
2564 s
.reset(read_data
, sizeof(read_data
));
2565 memset(read_buf
, 0, sizeof(read_buf
));
2566 error
= boost::system::error_code();
2567 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2568 boost::asio::transfer_exactly(1), error
);
2569 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2570 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2571 BOOST_ASIO_CHECK(!error
);
2573 s
.reset(read_data
, sizeof(read_data
));
2574 s
.next_read_length(1);
2575 memset(read_buf
, 0, sizeof(read_buf
));
2576 error
= boost::system::error_code();
2577 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2578 boost::asio::transfer_exactly(1), error
);
2579 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2580 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2581 BOOST_ASIO_CHECK(!error
);
2583 s
.reset(read_data
, sizeof(read_data
));
2584 s
.next_read_length(1);
2585 memset(read_buf
, 0, sizeof(read_buf
));
2586 error
= boost::system::error_code();
2587 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2588 boost::asio::transfer_exactly(1), error
);
2589 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2590 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2591 BOOST_ASIO_CHECK(!error
);
2593 s
.reset(read_data
, sizeof(read_data
));
2594 s
.next_read_length(10);
2595 memset(read_buf
, 0, sizeof(read_buf
));
2596 error
= boost::system::error_code();
2597 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2598 boost::asio::transfer_exactly(1), error
);
2599 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2600 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2601 BOOST_ASIO_CHECK(!error
);
2603 s
.reset(read_data
, sizeof(read_data
));
2604 s
.next_read_length(10);
2605 memset(read_buf
, 0, sizeof(read_buf
));
2606 error
= boost::system::error_code();
2607 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2608 boost::asio::transfer_exactly(1), error
);
2609 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2610 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2611 BOOST_ASIO_CHECK(!error
);
2613 s
.reset(read_data
, sizeof(read_data
));
2614 memset(read_buf
, 0, sizeof(read_buf
));
2615 error
= boost::system::error_code();
2616 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2617 boost::asio::transfer_exactly(10), error
);
2618 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2619 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2620 BOOST_ASIO_CHECK(!error
);
2622 s
.reset(read_data
, sizeof(read_data
));
2623 memset(read_buf
, 0, sizeof(read_buf
));
2624 error
= boost::system::error_code();
2625 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2626 boost::asio::transfer_exactly(10), error
);
2627 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2628 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2629 BOOST_ASIO_CHECK(!error
);
2631 s
.reset(read_data
, sizeof(read_data
));
2632 s
.next_read_length(1);
2633 memset(read_buf
, 0, sizeof(read_buf
));
2634 error
= boost::system::error_code();
2635 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2636 boost::asio::transfer_exactly(10), error
);
2637 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2638 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2639 BOOST_ASIO_CHECK(!error
);
2641 s
.reset(read_data
, sizeof(read_data
));
2642 s
.next_read_length(1);
2643 memset(read_buf
, 0, sizeof(read_buf
));
2644 error
= boost::system::error_code();
2645 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2646 boost::asio::transfer_exactly(10), error
);
2647 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2648 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2649 BOOST_ASIO_CHECK(!error
);
2651 s
.reset(read_data
, sizeof(read_data
));
2652 s
.next_read_length(10);
2653 memset(read_buf
, 0, sizeof(read_buf
));
2654 error
= boost::system::error_code();
2655 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2656 boost::asio::transfer_exactly(10), error
);
2657 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2658 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2659 BOOST_ASIO_CHECK(!error
);
2661 s
.reset(read_data
, sizeof(read_data
));
2662 s
.next_read_length(10);
2663 memset(read_buf
, 0, sizeof(read_buf
));
2664 error
= boost::system::error_code();
2665 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2666 boost::asio::transfer_exactly(10), error
);
2667 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2668 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2669 BOOST_ASIO_CHECK(!error
);
2671 s
.reset(read_data
, sizeof(read_data
));
2672 memset(read_buf
, 0, sizeof(read_buf
));
2673 error
= boost::system::error_code();
2674 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2675 boost::asio::transfer_exactly(42), error
);
2676 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2677 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2678 BOOST_ASIO_CHECK(!error
);
2680 s
.reset(read_data
, sizeof(read_data
));
2681 memset(read_buf
, 0, sizeof(read_buf
));
2682 error
= boost::system::error_code();
2683 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2684 boost::asio::transfer_exactly(42), error
);
2685 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2686 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2687 BOOST_ASIO_CHECK(!error
);
2689 s
.reset(read_data
, sizeof(read_data
));
2690 s
.next_read_length(1);
2691 memset(read_buf
, 0, sizeof(read_buf
));
2692 error
= boost::system::error_code();
2693 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2694 boost::asio::transfer_exactly(42), error
);
2695 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2696 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2697 BOOST_ASIO_CHECK(!error
);
2699 s
.reset(read_data
, sizeof(read_data
));
2700 s
.next_read_length(1);
2701 memset(read_buf
, 0, sizeof(read_buf
));
2702 error
= boost::system::error_code();
2703 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2704 boost::asio::transfer_exactly(42), error
);
2705 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2706 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2707 BOOST_ASIO_CHECK(!error
);
2709 s
.reset(read_data
, sizeof(read_data
));
2710 s
.next_read_length(10);
2711 memset(read_buf
, 0, sizeof(read_buf
));
2712 error
= boost::system::error_code();
2713 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2714 boost::asio::transfer_exactly(42), error
);
2715 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2716 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2717 BOOST_ASIO_CHECK(!error
);
2719 s
.reset(read_data
, sizeof(read_data
));
2720 s
.next_read_length(10);
2721 memset(read_buf
, 0, sizeof(read_buf
));
2722 error
= boost::system::error_code();
2723 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2724 boost::asio::transfer_exactly(42), error
);
2725 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2726 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2727 BOOST_ASIO_CHECK(!error
);
2729 s
.reset(read_data
, sizeof(read_data
));
2730 memset(read_buf
, 0, sizeof(read_buf
));
2731 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2732 old_style_transfer_all
, error
);
2733 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2734 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2735 BOOST_ASIO_CHECK(!error
);
2737 s
.reset(read_data
, sizeof(read_data
));
2738 memset(read_buf
, 0, sizeof(read_buf
));
2739 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2740 old_style_transfer_all
, error
);
2741 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2742 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2743 BOOST_ASIO_CHECK(!error
);
2745 s
.reset(read_data
, sizeof(read_data
));
2746 s
.next_read_length(1);
2747 memset(read_buf
, 0, sizeof(read_buf
));
2748 error
= boost::system::error_code();
2749 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2750 old_style_transfer_all
, error
);
2751 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2752 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2753 BOOST_ASIO_CHECK(!error
);
2755 s
.reset(read_data
, sizeof(read_data
));
2756 s
.next_read_length(1);
2757 memset(read_buf
, 0, sizeof(read_buf
));
2758 error
= boost::system::error_code();
2759 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2760 old_style_transfer_all
, error
);
2761 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2762 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2763 BOOST_ASIO_CHECK(!error
);
2765 s
.reset(read_data
, sizeof(read_data
));
2766 s
.next_read_length(10);
2767 memset(read_buf
, 0, sizeof(read_buf
));
2768 error
= boost::system::error_code();
2769 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2770 old_style_transfer_all
, error
);
2771 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2772 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2773 BOOST_ASIO_CHECK(!error
);
2775 s
.reset(read_data
, sizeof(read_data
));
2776 s
.next_read_length(10);
2777 memset(read_buf
, 0, sizeof(read_buf
));
2778 error
= boost::system::error_code();
2779 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2780 old_style_transfer_all
, error
);
2781 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2782 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2783 BOOST_ASIO_CHECK(!error
);
2785 s
.reset(read_data
, sizeof(read_data
));
2786 memset(read_buf
, 0, sizeof(read_buf
));
2787 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2788 short_transfer
, error
);
2789 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2790 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2791 BOOST_ASIO_CHECK(!error
);
2793 s
.reset(read_data
, sizeof(read_data
));
2794 memset(read_buf
, 0, sizeof(read_buf
));
2795 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2796 short_transfer
, error
);
2797 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2798 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2799 BOOST_ASIO_CHECK(!error
);
2801 s
.reset(read_data
, sizeof(read_data
));
2802 s
.next_read_length(1);
2803 memset(read_buf
, 0, sizeof(read_buf
));
2804 error
= boost::system::error_code();
2805 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2806 short_transfer
, error
);
2807 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2808 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2809 BOOST_ASIO_CHECK(!error
);
2811 s
.reset(read_data
, sizeof(read_data
));
2812 s
.next_read_length(1);
2813 memset(read_buf
, 0, sizeof(read_buf
));
2814 error
= boost::system::error_code();
2815 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2816 short_transfer
, error
);
2817 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2818 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2819 BOOST_ASIO_CHECK(!error
);
2821 s
.reset(read_data
, sizeof(read_data
));
2822 s
.next_read_length(10);
2823 memset(read_buf
, 0, sizeof(read_buf
));
2824 error
= boost::system::error_code();
2825 bytes_transferred
= boost::asio::read_at(s
, 0, buffers
,
2826 short_transfer
, error
);
2827 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2828 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
2829 BOOST_ASIO_CHECK(!error
);
2831 s
.reset(read_data
, sizeof(read_data
));
2832 s
.next_read_length(10);
2833 memset(read_buf
, 0, sizeof(read_buf
));
2834 error
= boost::system::error_code();
2835 bytes_transferred
= boost::asio::read_at(s
, 1234, buffers
,
2836 short_transfer
, error
);
2837 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2838 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
2839 BOOST_ASIO_CHECK(!error
);
2842 void test_5_arg_streambuf_read_at()
2844 boost::asio::io_context ioc
;
2845 test_random_access_device
s(ioc
);
2846 boost::asio::streambuf
sb(sizeof(read_data
));
2848 s
.reset(read_data
, sizeof(read_data
));
2849 sb
.consume(sb
.size());
2850 boost::system::error_code error
;
2851 size_t bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2852 boost::asio::transfer_all(), error
);
2853 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2854 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2855 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
2856 BOOST_ASIO_CHECK(!error
);
2858 s
.reset(read_data
, sizeof(read_data
));
2859 sb
.consume(sb
.size());
2860 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2861 boost::asio::transfer_all(), error
);
2862 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2863 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2864 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
2865 BOOST_ASIO_CHECK(!error
);
2867 s
.reset(read_data
, sizeof(read_data
));
2868 s
.next_read_length(1);
2869 sb
.consume(sb
.size());
2870 error
= boost::system::error_code();
2871 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2872 boost::asio::transfer_all(), error
);
2873 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2874 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2875 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
2876 BOOST_ASIO_CHECK(!error
);
2878 s
.reset(read_data
, sizeof(read_data
));
2879 s
.next_read_length(1);
2880 sb
.consume(sb
.size());
2881 error
= boost::system::error_code();
2882 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2883 boost::asio::transfer_all(), error
);
2884 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2885 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2886 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
2887 BOOST_ASIO_CHECK(!error
);
2889 s
.reset(read_data
, sizeof(read_data
));
2890 s
.next_read_length(10);
2891 sb
.consume(sb
.size());
2892 error
= boost::system::error_code();
2893 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2894 boost::asio::transfer_all(), error
);
2895 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2896 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2897 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
2898 BOOST_ASIO_CHECK(!error
);
2900 s
.reset(read_data
, sizeof(read_data
));
2901 s
.next_read_length(10);
2902 sb
.consume(sb
.size());
2903 error
= boost::system::error_code();
2904 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2905 boost::asio::transfer_all(), error
);
2906 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2907 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2908 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
2909 BOOST_ASIO_CHECK(!error
);
2911 s
.reset(read_data
, sizeof(read_data
));
2912 sb
.consume(sb
.size());
2913 error
= boost::system::error_code();
2914 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2915 boost::asio::transfer_at_least(1), error
);
2916 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2917 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2918 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
2919 BOOST_ASIO_CHECK(!error
);
2921 s
.reset(read_data
, sizeof(read_data
));
2922 sb
.consume(sb
.size());
2923 error
= boost::system::error_code();
2924 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2925 boost::asio::transfer_at_least(1), error
);
2926 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2927 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2928 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
2929 BOOST_ASIO_CHECK(!error
);
2931 s
.reset(read_data
, sizeof(read_data
));
2932 s
.next_read_length(1);
2933 sb
.consume(sb
.size());
2934 error
= boost::system::error_code();
2935 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2936 boost::asio::transfer_at_least(1), error
);
2937 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2938 BOOST_ASIO_CHECK(sb
.size() == 1);
2939 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
2940 BOOST_ASIO_CHECK(!error
);
2942 s
.reset(read_data
, sizeof(read_data
));
2943 s
.next_read_length(1);
2944 sb
.consume(sb
.size());
2945 error
= boost::system::error_code();
2946 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2947 boost::asio::transfer_at_least(1), error
);
2948 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2949 BOOST_ASIO_CHECK(sb
.size() == 1);
2950 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
2951 BOOST_ASIO_CHECK(!error
);
2953 s
.reset(read_data
, sizeof(read_data
));
2954 s
.next_read_length(10);
2955 sb
.consume(sb
.size());
2956 error
= boost::system::error_code();
2957 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2958 boost::asio::transfer_at_least(1), error
);
2959 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2960 BOOST_ASIO_CHECK(sb
.size() == 10);
2961 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
2962 BOOST_ASIO_CHECK(!error
);
2964 s
.reset(read_data
, sizeof(read_data
));
2965 s
.next_read_length(10);
2966 sb
.consume(sb
.size());
2967 error
= boost::system::error_code();
2968 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2969 boost::asio::transfer_at_least(1), error
);
2970 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2971 BOOST_ASIO_CHECK(sb
.size() == 10);
2972 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
2973 BOOST_ASIO_CHECK(!error
);
2975 s
.reset(read_data
, sizeof(read_data
));
2976 sb
.consume(sb
.size());
2977 error
= boost::system::error_code();
2978 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
2979 boost::asio::transfer_at_least(10), error
);
2980 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2981 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2982 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
2983 BOOST_ASIO_CHECK(!error
);
2985 s
.reset(read_data
, sizeof(read_data
));
2986 sb
.consume(sb
.size());
2987 error
= boost::system::error_code();
2988 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
2989 boost::asio::transfer_at_least(10), error
);
2990 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
2991 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
2992 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
2993 BOOST_ASIO_CHECK(!error
);
2995 s
.reset(read_data
, sizeof(read_data
));
2996 s
.next_read_length(1);
2997 sb
.consume(sb
.size());
2998 error
= boost::system::error_code();
2999 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3000 boost::asio::transfer_at_least(10), error
);
3001 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3002 BOOST_ASIO_CHECK(sb
.size() == 10);
3003 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
3004 BOOST_ASIO_CHECK(!error
);
3006 s
.reset(read_data
, sizeof(read_data
));
3007 s
.next_read_length(1);
3008 sb
.consume(sb
.size());
3009 error
= boost::system::error_code();
3010 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3011 boost::asio::transfer_at_least(10), error
);
3012 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3013 BOOST_ASIO_CHECK(sb
.size() == 10);
3014 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
3015 BOOST_ASIO_CHECK(!error
);
3017 s
.reset(read_data
, sizeof(read_data
));
3018 s
.next_read_length(10);
3019 sb
.consume(sb
.size());
3020 error
= boost::system::error_code();
3021 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3022 boost::asio::transfer_at_least(10), error
);
3023 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3024 BOOST_ASIO_CHECK(sb
.size() == 10);
3025 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
3026 BOOST_ASIO_CHECK(!error
);
3028 s
.reset(read_data
, sizeof(read_data
));
3029 s
.next_read_length(10);
3030 sb
.consume(sb
.size());
3031 error
= boost::system::error_code();
3032 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3033 boost::asio::transfer_at_least(10), error
);
3034 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3035 BOOST_ASIO_CHECK(sb
.size() == 10);
3036 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
3037 BOOST_ASIO_CHECK(!error
);
3039 s
.reset(read_data
, sizeof(read_data
));
3040 sb
.consume(sb
.size());
3041 error
= boost::system::error_code();
3042 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3043 boost::asio::transfer_at_least(42), error
);
3044 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3045 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3046 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3047 BOOST_ASIO_CHECK(!error
);
3049 s
.reset(read_data
, sizeof(read_data
));
3050 sb
.consume(sb
.size());
3051 error
= boost::system::error_code();
3052 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3053 boost::asio::transfer_at_least(42), error
);
3054 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3055 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3056 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3057 BOOST_ASIO_CHECK(!error
);
3059 s
.reset(read_data
, sizeof(read_data
));
3060 s
.next_read_length(1);
3061 sb
.consume(sb
.size());
3062 error
= boost::system::error_code();
3063 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3064 boost::asio::transfer_at_least(42), error
);
3065 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3066 BOOST_ASIO_CHECK(sb
.size() == 42);
3067 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
3068 BOOST_ASIO_CHECK(!error
);
3070 s
.reset(read_data
, sizeof(read_data
));
3071 s
.next_read_length(1);
3072 sb
.consume(sb
.size());
3073 error
= boost::system::error_code();
3074 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3075 boost::asio::transfer_at_least(42), error
);
3076 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3077 BOOST_ASIO_CHECK(sb
.size() == 42);
3078 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
3079 BOOST_ASIO_CHECK(!error
);
3081 s
.reset(read_data
, sizeof(read_data
));
3082 s
.next_read_length(10);
3083 sb
.consume(sb
.size());
3084 error
= boost::system::error_code();
3085 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3086 boost::asio::transfer_at_least(42), error
);
3087 BOOST_ASIO_CHECK(bytes_transferred
== 50);
3088 BOOST_ASIO_CHECK(sb
.size() == 50);
3089 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 50));
3090 BOOST_ASIO_CHECK(!error
);
3092 s
.reset(read_data
, sizeof(read_data
));
3093 s
.next_read_length(10);
3094 sb
.consume(sb
.size());
3095 error
= boost::system::error_code();
3096 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3097 boost::asio::transfer_at_least(42), error
);
3098 BOOST_ASIO_CHECK(bytes_transferred
== 50);
3099 BOOST_ASIO_CHECK(sb
.size() == 50);
3100 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 50));
3101 BOOST_ASIO_CHECK(!error
);
3103 s
.reset(read_data
, sizeof(read_data
));
3104 sb
.consume(sb
.size());
3105 error
= boost::system::error_code();
3106 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3107 boost::asio::transfer_exactly(1), error
);
3108 BOOST_ASIO_CHECK(bytes_transferred
== 1);
3109 BOOST_ASIO_CHECK(sb
.size() == 1);
3110 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
3111 BOOST_ASIO_CHECK(!error
);
3113 s
.reset(read_data
, sizeof(read_data
));
3114 sb
.consume(sb
.size());
3115 error
= boost::system::error_code();
3116 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3117 boost::asio::transfer_exactly(1), error
);
3118 BOOST_ASIO_CHECK(bytes_transferred
== 1);
3119 BOOST_ASIO_CHECK(sb
.size() == 1);
3120 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
3121 BOOST_ASIO_CHECK(!error
);
3123 s
.reset(read_data
, sizeof(read_data
));
3124 s
.next_read_length(1);
3125 sb
.consume(sb
.size());
3126 error
= boost::system::error_code();
3127 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3128 boost::asio::transfer_exactly(1), error
);
3129 BOOST_ASIO_CHECK(bytes_transferred
== 1);
3130 BOOST_ASIO_CHECK(sb
.size() == 1);
3131 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
3132 BOOST_ASIO_CHECK(!error
);
3134 s
.reset(read_data
, sizeof(read_data
));
3135 s
.next_read_length(1);
3136 sb
.consume(sb
.size());
3137 error
= boost::system::error_code();
3138 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3139 boost::asio::transfer_exactly(1), error
);
3140 BOOST_ASIO_CHECK(bytes_transferred
== 1);
3141 BOOST_ASIO_CHECK(sb
.size() == 1);
3142 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
3143 BOOST_ASIO_CHECK(!error
);
3145 s
.reset(read_data
, sizeof(read_data
));
3146 s
.next_read_length(10);
3147 sb
.consume(sb
.size());
3148 error
= boost::system::error_code();
3149 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3150 boost::asio::transfer_exactly(1), error
);
3151 BOOST_ASIO_CHECK(bytes_transferred
== 1);
3152 BOOST_ASIO_CHECK(sb
.size() == 1);
3153 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
3154 BOOST_ASIO_CHECK(!error
);
3156 s
.reset(read_data
, sizeof(read_data
));
3157 s
.next_read_length(10);
3158 sb
.consume(sb
.size());
3159 error
= boost::system::error_code();
3160 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3161 boost::asio::transfer_exactly(1), error
);
3162 BOOST_ASIO_CHECK(bytes_transferred
== 1);
3163 BOOST_ASIO_CHECK(sb
.size() == 1);
3164 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
3165 BOOST_ASIO_CHECK(!error
);
3167 s
.reset(read_data
, sizeof(read_data
));
3168 sb
.consume(sb
.size());
3169 error
= boost::system::error_code();
3170 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3171 boost::asio::transfer_exactly(10), error
);
3172 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3173 BOOST_ASIO_CHECK(sb
.size() == 10);
3174 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
3175 BOOST_ASIO_CHECK(!error
);
3177 s
.reset(read_data
, sizeof(read_data
));
3178 sb
.consume(sb
.size());
3179 error
= boost::system::error_code();
3180 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3181 boost::asio::transfer_exactly(10), error
);
3182 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3183 BOOST_ASIO_CHECK(sb
.size() == 10);
3184 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
3185 BOOST_ASIO_CHECK(!error
);
3187 s
.reset(read_data
, sizeof(read_data
));
3188 s
.next_read_length(1);
3189 sb
.consume(sb
.size());
3190 error
= boost::system::error_code();
3191 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3192 boost::asio::transfer_exactly(10), error
);
3193 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3194 BOOST_ASIO_CHECK(sb
.size() == 10);
3195 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
3196 BOOST_ASIO_CHECK(!error
);
3198 s
.reset(read_data
, sizeof(read_data
));
3199 s
.next_read_length(1);
3200 sb
.consume(sb
.size());
3201 error
= boost::system::error_code();
3202 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3203 boost::asio::transfer_exactly(10), error
);
3204 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3205 BOOST_ASIO_CHECK(sb
.size() == 10);
3206 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
3207 BOOST_ASIO_CHECK(!error
);
3209 s
.reset(read_data
, sizeof(read_data
));
3210 s
.next_read_length(10);
3211 sb
.consume(sb
.size());
3212 error
= boost::system::error_code();
3213 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3214 boost::asio::transfer_exactly(10), error
);
3215 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3216 BOOST_ASIO_CHECK(sb
.size() == 10);
3217 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
3218 BOOST_ASIO_CHECK(!error
);
3220 s
.reset(read_data
, sizeof(read_data
));
3221 s
.next_read_length(10);
3222 sb
.consume(sb
.size());
3223 error
= boost::system::error_code();
3224 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3225 boost::asio::transfer_exactly(10), error
);
3226 BOOST_ASIO_CHECK(bytes_transferred
== 10);
3227 BOOST_ASIO_CHECK(sb
.size() == 10);
3228 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
3229 BOOST_ASIO_CHECK(!error
);
3231 s
.reset(read_data
, sizeof(read_data
));
3232 sb
.consume(sb
.size());
3233 error
= boost::system::error_code();
3234 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3235 boost::asio::transfer_exactly(42), error
);
3236 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3237 BOOST_ASIO_CHECK(sb
.size() == 42);
3238 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
3239 BOOST_ASIO_CHECK(!error
);
3241 s
.reset(read_data
, sizeof(read_data
));
3242 sb
.consume(sb
.size());
3243 error
= boost::system::error_code();
3244 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3245 boost::asio::transfer_exactly(42), error
);
3246 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3247 BOOST_ASIO_CHECK(sb
.size() == 42);
3248 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
3249 BOOST_ASIO_CHECK(!error
);
3251 s
.reset(read_data
, sizeof(read_data
));
3252 s
.next_read_length(1);
3253 sb
.consume(sb
.size());
3254 error
= boost::system::error_code();
3255 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3256 boost::asio::transfer_exactly(42), error
);
3257 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3258 BOOST_ASIO_CHECK(sb
.size() == 42);
3259 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
3260 BOOST_ASIO_CHECK(!error
);
3262 s
.reset(read_data
, sizeof(read_data
));
3263 s
.next_read_length(1);
3264 sb
.consume(sb
.size());
3265 error
= boost::system::error_code();
3266 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3267 boost::asio::transfer_exactly(42), error
);
3268 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3269 BOOST_ASIO_CHECK(sb
.size() == 42);
3270 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
3271 BOOST_ASIO_CHECK(!error
);
3273 s
.reset(read_data
, sizeof(read_data
));
3274 s
.next_read_length(10);
3275 sb
.consume(sb
.size());
3276 error
= boost::system::error_code();
3277 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3278 boost::asio::transfer_exactly(42), error
);
3279 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3280 BOOST_ASIO_CHECK(sb
.size() == 42);
3281 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
3282 BOOST_ASIO_CHECK(!error
);
3284 s
.reset(read_data
, sizeof(read_data
));
3285 s
.next_read_length(10);
3286 sb
.consume(sb
.size());
3287 error
= boost::system::error_code();
3288 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3289 boost::asio::transfer_exactly(42), error
);
3290 BOOST_ASIO_CHECK(bytes_transferred
== 42);
3291 BOOST_ASIO_CHECK(sb
.size() == 42);
3292 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
3293 BOOST_ASIO_CHECK(!error
);
3295 s
.reset(read_data
, sizeof(read_data
));
3296 sb
.consume(sb
.size());
3297 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3298 old_style_transfer_all
, error
);
3299 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3300 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3301 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3302 BOOST_ASIO_CHECK(!error
);
3304 s
.reset(read_data
, sizeof(read_data
));
3305 sb
.consume(sb
.size());
3306 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3307 old_style_transfer_all
, error
);
3308 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3309 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3310 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3311 BOOST_ASIO_CHECK(!error
);
3313 s
.reset(read_data
, sizeof(read_data
));
3314 s
.next_read_length(1);
3315 sb
.consume(sb
.size());
3316 error
= boost::system::error_code();
3317 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3318 old_style_transfer_all
, error
);
3319 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3320 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3321 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3322 BOOST_ASIO_CHECK(!error
);
3324 s
.reset(read_data
, sizeof(read_data
));
3325 s
.next_read_length(1);
3326 sb
.consume(sb
.size());
3327 error
= boost::system::error_code();
3328 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3329 old_style_transfer_all
, error
);
3330 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3331 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3332 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3333 BOOST_ASIO_CHECK(!error
);
3335 s
.reset(read_data
, sizeof(read_data
));
3336 s
.next_read_length(10);
3337 sb
.consume(sb
.size());
3338 error
= boost::system::error_code();
3339 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3340 old_style_transfer_all
, error
);
3341 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3342 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3343 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3344 BOOST_ASIO_CHECK(!error
);
3346 s
.reset(read_data
, sizeof(read_data
));
3347 s
.next_read_length(10);
3348 sb
.consume(sb
.size());
3349 error
= boost::system::error_code();
3350 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3351 old_style_transfer_all
, error
);
3352 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3353 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3354 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3355 BOOST_ASIO_CHECK(!error
);
3357 s
.reset(read_data
, sizeof(read_data
));
3358 sb
.consume(sb
.size());
3359 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3360 short_transfer
, error
);
3361 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3362 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3363 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3364 BOOST_ASIO_CHECK(!error
);
3366 s
.reset(read_data
, sizeof(read_data
));
3367 sb
.consume(sb
.size());
3368 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3369 short_transfer
, error
);
3370 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3371 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3372 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3373 BOOST_ASIO_CHECK(!error
);
3375 s
.reset(read_data
, sizeof(read_data
));
3376 s
.next_read_length(1);
3377 sb
.consume(sb
.size());
3378 error
= boost::system::error_code();
3379 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3380 short_transfer
, error
);
3381 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3382 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3383 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3384 BOOST_ASIO_CHECK(!error
);
3386 s
.reset(read_data
, sizeof(read_data
));
3387 s
.next_read_length(1);
3388 sb
.consume(sb
.size());
3389 error
= boost::system::error_code();
3390 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3391 short_transfer
, error
);
3392 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3393 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3394 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3395 BOOST_ASIO_CHECK(!error
);
3397 s
.reset(read_data
, sizeof(read_data
));
3398 s
.next_read_length(10);
3399 sb
.consume(sb
.size());
3400 error
= boost::system::error_code();
3401 bytes_transferred
= boost::asio::read_at(s
, 0, sb
,
3402 short_transfer
, error
);
3403 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3404 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3405 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3406 BOOST_ASIO_CHECK(!error
);
3408 s
.reset(read_data
, sizeof(read_data
));
3409 s
.next_read_length(10);
3410 sb
.consume(sb
.size());
3411 error
= boost::system::error_code();
3412 bytes_transferred
= boost::asio::read_at(s
, 1234, sb
,
3413 short_transfer
, error
);
3414 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(read_data
));
3415 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3416 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3417 BOOST_ASIO_CHECK(!error
);
3420 void async_read_handler(const boost::system::error_code
& e
,
3421 size_t bytes_transferred
, size_t expected_bytes_transferred
, bool* called
)
3424 BOOST_ASIO_CHECK(!e
);
3425 BOOST_ASIO_CHECK(bytes_transferred
== expected_bytes_transferred
);
3428 void test_4_arg_mutable_buffer_async_read_at()
3430 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3431 namespace bindns
= boost
;
3432 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3433 namespace bindns
= std
;
3434 using std::placeholders::_1
;
3435 using std::placeholders::_2
;
3436 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3438 boost::asio::io_context ioc
;
3439 test_random_access_device
s(ioc
);
3440 char read_buf
[sizeof(read_data
)];
3441 boost::asio::mutable_buffer buffers
3442 = boost::asio::buffer(read_buf
, sizeof(read_buf
));
3444 s
.reset(read_data
, sizeof(read_data
));
3445 memset(read_buf
, 0, sizeof(read_buf
));
3446 bool called
= false;
3447 boost::asio::async_read_at(s
, 0, buffers
,
3448 bindns::bind(async_read_handler
,
3449 _1
, _2
, sizeof(read_data
), &called
));
3452 BOOST_ASIO_CHECK(called
);
3453 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3455 s
.reset(read_data
, sizeof(read_data
));
3456 memset(read_buf
, 0, sizeof(read_buf
));
3458 boost::asio::async_read_at(s
, 1234, buffers
,
3459 bindns::bind(async_read_handler
,
3460 _1
, _2
, sizeof(read_data
), &called
));
3463 BOOST_ASIO_CHECK(called
);
3464 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3466 s
.reset(read_data
, sizeof(read_data
));
3467 s
.next_read_length(1);
3468 memset(read_buf
, 0, sizeof(read_buf
));
3470 boost::asio::async_read_at(s
, 0, buffers
,
3471 bindns::bind(async_read_handler
,
3472 _1
, _2
, sizeof(read_data
), &called
));
3475 BOOST_ASIO_CHECK(called
);
3476 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3478 s
.reset(read_data
, sizeof(read_data
));
3479 s
.next_read_length(1);
3480 memset(read_buf
, 0, sizeof(read_buf
));
3482 boost::asio::async_read_at(s
, 1234, buffers
,
3483 bindns::bind(async_read_handler
,
3484 _1
, _2
, sizeof(read_data
), &called
));
3487 BOOST_ASIO_CHECK(called
);
3488 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3490 s
.reset(read_data
, sizeof(read_data
));
3491 s
.next_read_length(10);
3492 memset(read_buf
, 0, sizeof(read_buf
));
3494 boost::asio::async_read_at(s
, 0, buffers
,
3495 bindns::bind(async_read_handler
,
3496 _1
, _2
, sizeof(read_data
), &called
));
3499 BOOST_ASIO_CHECK(called
);
3500 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3502 s
.reset(read_data
, sizeof(read_data
));
3503 s
.next_read_length(10);
3504 memset(read_buf
, 0, sizeof(read_buf
));
3506 boost::asio::async_read_at(s
, 1234, buffers
,
3507 bindns::bind(async_read_handler
,
3508 _1
, _2
, sizeof(read_data
), &called
));
3511 BOOST_ASIO_CHECK(called
);
3512 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3514 s
.reset(read_data
, sizeof(read_data
));
3515 memset(read_buf
, 0, sizeof(read_buf
));
3516 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
3517 archetypes::lazy_handler());
3518 BOOST_ASIO_CHECK(i
== 42);
3521 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3524 void test_4_arg_boost_array_buffers_async_read_at()
3526 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3527 namespace bindns
= boost
;
3528 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3529 namespace bindns
= std
;
3530 using std::placeholders::_1
;
3531 using std::placeholders::_2
;
3532 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3534 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
3535 boost::asio::io_context ioc
;
3536 test_random_access_device
s(ioc
);
3537 char read_buf
[sizeof(read_data
)];
3538 boost::array
<boost::asio::mutable_buffer
, 2> buffers
= { {
3539 boost::asio::buffer(read_buf
, 32),
3540 boost::asio::buffer(read_buf
) + 32 } };
3542 s
.reset(read_data
, sizeof(read_data
));
3543 memset(read_buf
, 0, sizeof(read_buf
));
3544 bool called
= false;
3545 boost::asio::async_read_at(s
, 0, buffers
,
3546 bindns::bind(async_read_handler
,
3547 _1
, _2
, sizeof(read_data
), &called
));
3550 BOOST_ASIO_CHECK(called
);
3551 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3553 s
.reset(read_data
, sizeof(read_data
));
3554 memset(read_buf
, 0, sizeof(read_buf
));
3556 boost::asio::async_read_at(s
, 1234, buffers
,
3557 bindns::bind(async_read_handler
,
3558 _1
, _2
, sizeof(read_data
), &called
));
3561 BOOST_ASIO_CHECK(called
);
3562 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3564 s
.reset(read_data
, sizeof(read_data
));
3565 s
.next_read_length(1);
3566 memset(read_buf
, 0, sizeof(read_buf
));
3568 boost::asio::async_read_at(s
, 0, buffers
,
3569 bindns::bind(async_read_handler
,
3570 _1
, _2
, sizeof(read_data
), &called
));
3573 BOOST_ASIO_CHECK(called
);
3574 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3576 s
.reset(read_data
, sizeof(read_data
));
3577 s
.next_read_length(1);
3578 memset(read_buf
, 0, sizeof(read_buf
));
3580 boost::asio::async_read_at(s
, 1234, buffers
,
3581 bindns::bind(async_read_handler
,
3582 _1
, _2
, sizeof(read_data
), &called
));
3585 BOOST_ASIO_CHECK(called
);
3586 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3588 s
.reset(read_data
, sizeof(read_data
));
3589 s
.next_read_length(10);
3590 memset(read_buf
, 0, sizeof(read_buf
));
3592 boost::asio::async_read_at(s
, 0, buffers
,
3593 bindns::bind(async_read_handler
,
3594 _1
, _2
, sizeof(read_data
), &called
));
3597 BOOST_ASIO_CHECK(called
);
3598 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3600 s
.reset(read_data
, sizeof(read_data
));
3601 s
.next_read_length(10);
3602 memset(read_buf
, 0, sizeof(read_buf
));
3604 boost::asio::async_read_at(s
, 1234, buffers
,
3605 bindns::bind(async_read_handler
,
3606 _1
, _2
, sizeof(read_data
), &called
));
3609 BOOST_ASIO_CHECK(called
);
3610 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3612 s
.reset(read_data
, sizeof(read_data
));
3613 memset(read_buf
, 0, sizeof(read_buf
));
3614 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
3615 archetypes::lazy_handler());
3616 BOOST_ASIO_CHECK(i
== 42);
3619 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3620 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
3623 void test_4_arg_std_array_buffers_async_read_at()
3625 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3626 namespace bindns
= boost
;
3627 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3628 namespace bindns
= std
;
3629 using std::placeholders::_1
;
3630 using std::placeholders::_2
;
3631 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3633 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
3634 boost::asio::io_context ioc
;
3635 test_random_access_device
s(ioc
);
3636 char read_buf
[sizeof(read_data
)];
3637 std::array
<boost::asio::mutable_buffer
, 2> buffers
= { {
3638 boost::asio::buffer(read_buf
, 32),
3639 boost::asio::buffer(read_buf
) + 32 } };
3641 s
.reset(read_data
, sizeof(read_data
));
3642 memset(read_buf
, 0, sizeof(read_buf
));
3643 bool called
= false;
3644 boost::asio::async_read_at(s
, 0, buffers
,
3645 bindns::bind(async_read_handler
,
3646 _1
, _2
, sizeof(read_data
), &called
));
3649 BOOST_ASIO_CHECK(called
);
3650 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3652 s
.reset(read_data
, sizeof(read_data
));
3653 memset(read_buf
, 0, sizeof(read_buf
));
3655 boost::asio::async_read_at(s
, 1234, buffers
,
3656 bindns::bind(async_read_handler
,
3657 _1
, _2
, sizeof(read_data
), &called
));
3660 BOOST_ASIO_CHECK(called
);
3661 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3663 s
.reset(read_data
, sizeof(read_data
));
3664 s
.next_read_length(1);
3665 memset(read_buf
, 0, sizeof(read_buf
));
3667 boost::asio::async_read_at(s
, 0, buffers
,
3668 bindns::bind(async_read_handler
,
3669 _1
, _2
, sizeof(read_data
), &called
));
3672 BOOST_ASIO_CHECK(called
);
3673 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3675 s
.reset(read_data
, sizeof(read_data
));
3676 s
.next_read_length(1);
3677 memset(read_buf
, 0, sizeof(read_buf
));
3679 boost::asio::async_read_at(s
, 1234, buffers
,
3680 bindns::bind(async_read_handler
,
3681 _1
, _2
, sizeof(read_data
), &called
));
3684 BOOST_ASIO_CHECK(called
);
3685 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3687 s
.reset(read_data
, sizeof(read_data
));
3688 s
.next_read_length(10);
3689 memset(read_buf
, 0, sizeof(read_buf
));
3691 boost::asio::async_read_at(s
, 0, buffers
,
3692 bindns::bind(async_read_handler
,
3693 _1
, _2
, sizeof(read_data
), &called
));
3696 BOOST_ASIO_CHECK(called
);
3697 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3699 s
.reset(read_data
, sizeof(read_data
));
3700 s
.next_read_length(10);
3701 memset(read_buf
, 0, sizeof(read_buf
));
3703 boost::asio::async_read_at(s
, 1234, buffers
,
3704 bindns::bind(async_read_handler
,
3705 _1
, _2
, sizeof(read_data
), &called
));
3708 BOOST_ASIO_CHECK(called
);
3709 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3711 s
.reset(read_data
, sizeof(read_data
));
3712 memset(read_buf
, 0, sizeof(read_buf
));
3713 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
3714 archetypes::lazy_handler());
3715 BOOST_ASIO_CHECK(i
== 42);
3718 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3719 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
3722 void test_4_arg_vector_buffers_async_read_at()
3724 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3725 namespace bindns
= boost
;
3726 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3727 namespace bindns
= std
;
3728 using std::placeholders::_1
;
3729 using std::placeholders::_2
;
3730 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3732 boost::asio::io_context ioc
;
3733 test_random_access_device
s(ioc
);
3734 char read_buf
[sizeof(read_data
)];
3735 std::vector
<boost::asio::mutable_buffer
> buffers
;
3736 buffers
.push_back(boost::asio::buffer(read_buf
, 32));
3737 buffers
.push_back(boost::asio::buffer(read_buf
) + 32);
3739 s
.reset(read_data
, sizeof(read_data
));
3740 memset(read_buf
, 0, sizeof(read_buf
));
3741 bool called
= false;
3742 boost::asio::async_read_at(s
, 0, buffers
,
3743 bindns::bind(async_read_handler
,
3744 _1
, _2
, sizeof(read_data
), &called
));
3747 BOOST_ASIO_CHECK(called
);
3748 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3750 s
.reset(read_data
, sizeof(read_data
));
3751 memset(read_buf
, 0, sizeof(read_buf
));
3753 boost::asio::async_read_at(s
, 1234, buffers
,
3754 bindns::bind(async_read_handler
,
3755 _1
, _2
, sizeof(read_data
), &called
));
3758 BOOST_ASIO_CHECK(called
);
3759 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3761 s
.reset(read_data
, sizeof(read_data
));
3762 s
.next_read_length(1);
3763 memset(read_buf
, 0, sizeof(read_buf
));
3765 boost::asio::async_read_at(s
, 0, buffers
,
3766 bindns::bind(async_read_handler
,
3767 _1
, _2
, sizeof(read_data
), &called
));
3770 BOOST_ASIO_CHECK(called
);
3771 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3773 s
.reset(read_data
, sizeof(read_data
));
3774 s
.next_read_length(1);
3775 memset(read_buf
, 0, sizeof(read_buf
));
3777 boost::asio::async_read_at(s
, 1234, buffers
,
3778 bindns::bind(async_read_handler
,
3779 _1
, _2
, sizeof(read_data
), &called
));
3782 BOOST_ASIO_CHECK(called
);
3783 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3785 s
.reset(read_data
, sizeof(read_data
));
3786 s
.next_read_length(10);
3787 memset(read_buf
, 0, sizeof(read_buf
));
3789 boost::asio::async_read_at(s
, 0, buffers
,
3790 bindns::bind(async_read_handler
,
3791 _1
, _2
, sizeof(read_data
), &called
));
3794 BOOST_ASIO_CHECK(called
);
3795 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3797 s
.reset(read_data
, sizeof(read_data
));
3798 s
.next_read_length(10);
3799 memset(read_buf
, 0, sizeof(read_buf
));
3801 boost::asio::async_read_at(s
, 1234, buffers
,
3802 bindns::bind(async_read_handler
,
3803 _1
, _2
, sizeof(read_data
), &called
));
3806 BOOST_ASIO_CHECK(called
);
3807 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3809 s
.reset(read_data
, sizeof(read_data
));
3810 memset(read_buf
, 0, sizeof(read_buf
));
3811 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
3812 archetypes::lazy_handler());
3813 BOOST_ASIO_CHECK(i
== 42);
3816 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3819 void test_4_arg_streambuf_async_read_at()
3821 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3822 namespace bindns
= boost
;
3823 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3824 namespace bindns
= std
;
3825 using std::placeholders::_1
;
3826 using std::placeholders::_2
;
3827 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3829 boost::asio::io_context ioc
;
3830 test_random_access_device
s(ioc
);
3831 boost::asio::streambuf
sb(sizeof(read_data
));
3833 s
.reset(read_data
, sizeof(read_data
));
3834 sb
.consume(sb
.size());
3835 bool called
= false;
3836 boost::asio::async_read_at(s
, 0, sb
,
3837 bindns::bind(async_read_handler
,
3838 _1
, _2
, sizeof(read_data
), &called
));
3841 BOOST_ASIO_CHECK(called
);
3842 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3843 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3845 s
.reset(read_data
, sizeof(read_data
));
3846 sb
.consume(sb
.size());
3848 boost::asio::async_read_at(s
, 1234, sb
,
3849 bindns::bind(async_read_handler
,
3850 _1
, _2
, sizeof(read_data
), &called
));
3853 BOOST_ASIO_CHECK(called
);
3854 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3855 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3857 s
.reset(read_data
, sizeof(read_data
));
3858 s
.next_read_length(1);
3859 sb
.consume(sb
.size());
3861 boost::asio::async_read_at(s
, 0, sb
,
3862 bindns::bind(async_read_handler
,
3863 _1
, _2
, sizeof(read_data
), &called
));
3866 BOOST_ASIO_CHECK(called
);
3867 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3868 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3870 s
.reset(read_data
, sizeof(read_data
));
3871 s
.next_read_length(1);
3872 sb
.consume(sb
.size());
3874 boost::asio::async_read_at(s
, 1234, sb
,
3875 bindns::bind(async_read_handler
,
3876 _1
, _2
, sizeof(read_data
), &called
));
3879 BOOST_ASIO_CHECK(called
);
3880 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3881 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3883 s
.reset(read_data
, sizeof(read_data
));
3884 s
.next_read_length(10);
3885 sb
.consume(sb
.size());
3887 boost::asio::async_read_at(s
, 0, sb
,
3888 bindns::bind(async_read_handler
,
3889 _1
, _2
, sizeof(read_data
), &called
));
3892 BOOST_ASIO_CHECK(called
);
3893 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3894 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
3896 s
.reset(read_data
, sizeof(read_data
));
3897 s
.next_read_length(10);
3898 sb
.consume(sb
.size());
3900 boost::asio::async_read_at(s
, 1234, sb
,
3901 bindns::bind(async_read_handler
,
3902 _1
, _2
, sizeof(read_data
), &called
));
3905 BOOST_ASIO_CHECK(called
);
3906 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
3907 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3909 s
.reset(read_data
, sizeof(read_data
));
3910 sb
.consume(sb
.size());
3911 int i
= boost::asio::async_read_at(s
, 1234, sb
,
3912 archetypes::lazy_handler());
3913 BOOST_ASIO_CHECK(i
== 42);
3916 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
3919 void test_5_arg_mutable_buffer_async_read_at()
3921 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3922 namespace bindns
= boost
;
3923 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3924 namespace bindns
= std
;
3925 using std::placeholders::_1
;
3926 using std::placeholders::_2
;
3927 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3929 boost::asio::io_context ioc
;
3930 test_random_access_device
s(ioc
);
3931 char read_buf
[sizeof(read_data
)];
3932 boost::asio::mutable_buffer buffers
3933 = boost::asio::buffer(read_buf
, sizeof(read_buf
));
3935 s
.reset(read_data
, sizeof(read_data
));
3936 memset(read_buf
, 0, sizeof(read_buf
));
3937 bool called
= false;
3938 boost::asio::async_read_at(s
, 0, buffers
,
3939 boost::asio::transfer_all(),
3940 bindns::bind(async_read_handler
,
3941 _1
, _2
, sizeof(read_data
), &called
));
3944 BOOST_ASIO_CHECK(called
);
3945 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3947 s
.reset(read_data
, sizeof(read_data
));
3948 memset(read_buf
, 0, sizeof(read_buf
));
3950 boost::asio::async_read_at(s
, 1234, buffers
,
3951 boost::asio::transfer_all(),
3952 bindns::bind(async_read_handler
,
3953 _1
, _2
, sizeof(read_data
), &called
));
3956 BOOST_ASIO_CHECK(called
);
3957 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3959 s
.reset(read_data
, sizeof(read_data
));
3960 s
.next_read_length(1);
3961 memset(read_buf
, 0, sizeof(read_buf
));
3963 boost::asio::async_read_at(s
, 0, buffers
,
3964 boost::asio::transfer_all(),
3965 bindns::bind(async_read_handler
,
3966 _1
, _2
, sizeof(read_data
), &called
));
3969 BOOST_ASIO_CHECK(called
);
3970 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3972 s
.reset(read_data
, sizeof(read_data
));
3973 s
.next_read_length(1);
3974 memset(read_buf
, 0, sizeof(read_buf
));
3976 boost::asio::async_read_at(s
, 1234, buffers
,
3977 boost::asio::transfer_all(),
3978 bindns::bind(async_read_handler
,
3979 _1
, _2
, sizeof(read_data
), &called
));
3982 BOOST_ASIO_CHECK(called
);
3983 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
3985 s
.reset(read_data
, sizeof(read_data
));
3986 s
.next_read_length(10);
3987 memset(read_buf
, 0, sizeof(read_buf
));
3989 boost::asio::async_read_at(s
, 0, buffers
,
3990 boost::asio::transfer_all(),
3991 bindns::bind(async_read_handler
,
3992 _1
, _2
, sizeof(read_data
), &called
));
3995 BOOST_ASIO_CHECK(called
);
3996 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
3998 s
.reset(read_data
, sizeof(read_data
));
3999 s
.next_read_length(10);
4000 memset(read_buf
, 0, sizeof(read_buf
));
4002 boost::asio::async_read_at(s
, 1234, buffers
,
4003 boost::asio::transfer_all(),
4004 bindns::bind(async_read_handler
,
4005 _1
, _2
, sizeof(read_data
), &called
));
4008 BOOST_ASIO_CHECK(called
);
4009 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4011 s
.reset(read_data
, sizeof(read_data
));
4012 memset(read_buf
, 0, sizeof(read_buf
));
4014 boost::asio::async_read_at(s
, 0, buffers
,
4015 boost::asio::transfer_at_least(1),
4016 bindns::bind(async_read_handler
,
4017 _1
, _2
, sizeof(read_data
), &called
));
4020 BOOST_ASIO_CHECK(called
);
4021 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4023 s
.reset(read_data
, sizeof(read_data
));
4024 memset(read_buf
, 0, sizeof(read_buf
));
4026 boost::asio::async_read_at(s
, 1234, buffers
,
4027 boost::asio::transfer_at_least(1),
4028 bindns::bind(async_read_handler
,
4029 _1
, _2
, sizeof(read_data
), &called
));
4032 BOOST_ASIO_CHECK(called
);
4033 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4035 s
.reset(read_data
, sizeof(read_data
));
4036 s
.next_read_length(1);
4037 memset(read_buf
, 0, sizeof(read_buf
));
4039 boost::asio::async_read_at(s
, 0, buffers
,
4040 boost::asio::transfer_at_least(1),
4041 bindns::bind(async_read_handler
,
4042 _1
, _2
, 1, &called
));
4045 BOOST_ASIO_CHECK(called
);
4046 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4048 s
.reset(read_data
, sizeof(read_data
));
4049 s
.next_read_length(1);
4050 memset(read_buf
, 0, sizeof(read_buf
));
4052 boost::asio::async_read_at(s
, 1234, buffers
,
4053 boost::asio::transfer_at_least(1),
4054 bindns::bind(async_read_handler
,
4055 _1
, _2
, 1, &called
));
4058 BOOST_ASIO_CHECK(called
);
4059 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4061 s
.reset(read_data
, sizeof(read_data
));
4062 s
.next_read_length(10);
4063 memset(read_buf
, 0, sizeof(read_buf
));
4065 boost::asio::async_read_at(s
, 0, buffers
,
4066 boost::asio::transfer_at_least(1),
4067 bindns::bind(async_read_handler
,
4068 _1
, _2
, 10, &called
));
4071 BOOST_ASIO_CHECK(called
);
4072 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4074 s
.reset(read_data
, sizeof(read_data
));
4075 s
.next_read_length(10);
4076 memset(read_buf
, 0, sizeof(read_buf
));
4078 boost::asio::async_read_at(s
, 1234, buffers
,
4079 boost::asio::transfer_at_least(1),
4080 bindns::bind(async_read_handler
,
4081 _1
, _2
, 10, &called
));
4084 BOOST_ASIO_CHECK(called
);
4085 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4087 s
.reset(read_data
, sizeof(read_data
));
4088 memset(read_buf
, 0, sizeof(read_buf
));
4090 boost::asio::async_read_at(s
, 0, buffers
,
4091 boost::asio::transfer_at_least(10),
4092 bindns::bind(async_read_handler
,
4093 _1
, _2
, sizeof(read_data
), &called
));
4096 BOOST_ASIO_CHECK(called
);
4097 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4099 s
.reset(read_data
, sizeof(read_data
));
4100 memset(read_buf
, 0, sizeof(read_buf
));
4102 boost::asio::async_read_at(s
, 1234, buffers
,
4103 boost::asio::transfer_at_least(10),
4104 bindns::bind(async_read_handler
,
4105 _1
, _2
, sizeof(read_data
), &called
));
4108 BOOST_ASIO_CHECK(called
);
4109 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4111 s
.reset(read_data
, sizeof(read_data
));
4112 s
.next_read_length(1);
4113 memset(read_buf
, 0, sizeof(read_buf
));
4115 boost::asio::async_read_at(s
, 0, buffers
,
4116 boost::asio::transfer_at_least(10),
4117 bindns::bind(async_read_handler
,
4118 _1
, _2
, 10, &called
));
4121 BOOST_ASIO_CHECK(called
);
4122 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4124 s
.reset(read_data
, sizeof(read_data
));
4125 s
.next_read_length(1);
4126 memset(read_buf
, 0, sizeof(read_buf
));
4128 boost::asio::async_read_at(s
, 1234, buffers
,
4129 boost::asio::transfer_at_least(10),
4130 bindns::bind(async_read_handler
,
4131 _1
, _2
, 10, &called
));
4134 BOOST_ASIO_CHECK(called
);
4135 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4137 s
.reset(read_data
, sizeof(read_data
));
4138 s
.next_read_length(10);
4139 memset(read_buf
, 0, sizeof(read_buf
));
4141 boost::asio::async_read_at(s
, 0, buffers
,
4142 boost::asio::transfer_at_least(10),
4143 bindns::bind(async_read_handler
,
4144 _1
, _2
, 10, &called
));
4147 BOOST_ASIO_CHECK(called
);
4148 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4150 s
.reset(read_data
, sizeof(read_data
));
4151 s
.next_read_length(10);
4152 memset(read_buf
, 0, sizeof(read_buf
));
4154 boost::asio::async_read_at(s
, 1234, buffers
,
4155 boost::asio::transfer_at_least(10),
4156 bindns::bind(async_read_handler
,
4157 _1
, _2
, 10, &called
));
4160 BOOST_ASIO_CHECK(called
);
4161 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4163 s
.reset(read_data
, sizeof(read_data
));
4164 memset(read_buf
, 0, sizeof(read_buf
));
4166 boost::asio::async_read_at(s
, 0, buffers
,
4167 boost::asio::transfer_at_least(42),
4168 bindns::bind(async_read_handler
,
4169 _1
, _2
, sizeof(read_data
), &called
));
4172 BOOST_ASIO_CHECK(called
);
4173 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4175 s
.reset(read_data
, sizeof(read_data
));
4176 memset(read_buf
, 0, sizeof(read_buf
));
4178 boost::asio::async_read_at(s
, 1234, buffers
,
4179 boost::asio::transfer_at_least(42),
4180 bindns::bind(async_read_handler
,
4181 _1
, _2
, sizeof(read_data
), &called
));
4184 BOOST_ASIO_CHECK(called
);
4185 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4187 s
.reset(read_data
, sizeof(read_data
));
4188 s
.next_read_length(1);
4189 memset(read_buf
, 0, sizeof(read_buf
));
4191 boost::asio::async_read_at(s
, 0, buffers
,
4192 boost::asio::transfer_at_least(42),
4193 bindns::bind(async_read_handler
,
4194 _1
, _2
, 42, &called
));
4197 BOOST_ASIO_CHECK(called
);
4198 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4200 s
.reset(read_data
, sizeof(read_data
));
4201 s
.next_read_length(1);
4202 memset(read_buf
, 0, sizeof(read_buf
));
4204 boost::asio::async_read_at(s
, 1234, buffers
,
4205 boost::asio::transfer_at_least(42),
4206 bindns::bind(async_read_handler
,
4207 _1
, _2
, 42, &called
));
4210 BOOST_ASIO_CHECK(called
);
4211 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4213 s
.reset(read_data
, sizeof(read_data
));
4214 s
.next_read_length(10);
4215 memset(read_buf
, 0, sizeof(read_buf
));
4217 boost::asio::async_read_at(s
, 0, buffers
,
4218 boost::asio::transfer_at_least(42),
4219 bindns::bind(async_read_handler
,
4220 _1
, _2
, 50, &called
));
4223 BOOST_ASIO_CHECK(called
);
4224 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
4226 s
.reset(read_data
, sizeof(read_data
));
4227 s
.next_read_length(10);
4228 memset(read_buf
, 0, sizeof(read_buf
));
4230 boost::asio::async_read_at(s
, 1234, buffers
,
4231 boost::asio::transfer_at_least(42),
4232 bindns::bind(async_read_handler
,
4233 _1
, _2
, 50, &called
));
4236 BOOST_ASIO_CHECK(called
);
4237 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
4239 s
.reset(read_data
, sizeof(read_data
));
4240 memset(read_buf
, 0, sizeof(read_buf
));
4242 boost::asio::async_read_at(s
, 0, buffers
,
4243 boost::asio::transfer_exactly(1),
4244 bindns::bind(async_read_handler
,
4245 _1
, _2
, 1, &called
));
4248 BOOST_ASIO_CHECK(called
);
4249 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4251 s
.reset(read_data
, sizeof(read_data
));
4252 memset(read_buf
, 0, sizeof(read_buf
));
4254 boost::asio::async_read_at(s
, 1234, buffers
,
4255 boost::asio::transfer_exactly(1),
4256 bindns::bind(async_read_handler
,
4257 _1
, _2
, 1, &called
));
4260 BOOST_ASIO_CHECK(called
);
4261 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4263 s
.reset(read_data
, sizeof(read_data
));
4264 s
.next_read_length(1);
4265 memset(read_buf
, 0, sizeof(read_buf
));
4267 boost::asio::async_read_at(s
, 0, buffers
,
4268 boost::asio::transfer_exactly(1),
4269 bindns::bind(async_read_handler
,
4270 _1
, _2
, 1, &called
));
4273 BOOST_ASIO_CHECK(called
);
4274 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4276 s
.reset(read_data
, sizeof(read_data
));
4277 s
.next_read_length(1);
4278 memset(read_buf
, 0, sizeof(read_buf
));
4280 boost::asio::async_read_at(s
, 1234, buffers
,
4281 boost::asio::transfer_exactly(1),
4282 bindns::bind(async_read_handler
,
4283 _1
, _2
, 1, &called
));
4286 BOOST_ASIO_CHECK(called
);
4287 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4289 s
.reset(read_data
, sizeof(read_data
));
4290 s
.next_read_length(10);
4291 memset(read_buf
, 0, sizeof(read_buf
));
4293 boost::asio::async_read_at(s
, 0, buffers
,
4294 boost::asio::transfer_exactly(1),
4295 bindns::bind(async_read_handler
,
4296 _1
, _2
, 1, &called
));
4299 BOOST_ASIO_CHECK(called
);
4300 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4302 s
.reset(read_data
, sizeof(read_data
));
4303 s
.next_read_length(10);
4304 memset(read_buf
, 0, sizeof(read_buf
));
4306 boost::asio::async_read_at(s
, 1234, buffers
,
4307 boost::asio::transfer_exactly(1),
4308 bindns::bind(async_read_handler
,
4309 _1
, _2
, 1, &called
));
4312 BOOST_ASIO_CHECK(called
);
4313 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4315 s
.reset(read_data
, sizeof(read_data
));
4316 memset(read_buf
, 0, sizeof(read_buf
));
4318 boost::asio::async_read_at(s
, 0, buffers
,
4319 boost::asio::transfer_exactly(10),
4320 bindns::bind(async_read_handler
,
4321 _1
, _2
, 10, &called
));
4324 BOOST_ASIO_CHECK(called
);
4325 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4327 s
.reset(read_data
, sizeof(read_data
));
4328 memset(read_buf
, 0, sizeof(read_buf
));
4330 boost::asio::async_read_at(s
, 1234, buffers
,
4331 boost::asio::transfer_exactly(10),
4332 bindns::bind(async_read_handler
,
4333 _1
, _2
, 10, &called
));
4336 BOOST_ASIO_CHECK(called
);
4337 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4339 s
.reset(read_data
, sizeof(read_data
));
4340 s
.next_read_length(1);
4341 memset(read_buf
, 0, sizeof(read_buf
));
4343 boost::asio::async_read_at(s
, 0, buffers
,
4344 boost::asio::transfer_exactly(10),
4345 bindns::bind(async_read_handler
,
4346 _1
, _2
, 10, &called
));
4349 BOOST_ASIO_CHECK(called
);
4350 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4352 s
.reset(read_data
, sizeof(read_data
));
4353 s
.next_read_length(1);
4354 memset(read_buf
, 0, sizeof(read_buf
));
4356 boost::asio::async_read_at(s
, 1234, buffers
,
4357 boost::asio::transfer_exactly(10),
4358 bindns::bind(async_read_handler
,
4359 _1
, _2
, 10, &called
));
4362 BOOST_ASIO_CHECK(called
);
4363 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4365 s
.reset(read_data
, sizeof(read_data
));
4366 s
.next_read_length(10);
4367 memset(read_buf
, 0, sizeof(read_buf
));
4369 boost::asio::async_read_at(s
, 0, buffers
,
4370 boost::asio::transfer_exactly(10),
4371 bindns::bind(async_read_handler
,
4372 _1
, _2
, 10, &called
));
4375 BOOST_ASIO_CHECK(called
);
4376 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4378 s
.reset(read_data
, sizeof(read_data
));
4379 s
.next_read_length(10);
4380 memset(read_buf
, 0, sizeof(read_buf
));
4382 boost::asio::async_read_at(s
, 1234, buffers
,
4383 boost::asio::transfer_exactly(10),
4384 bindns::bind(async_read_handler
,
4385 _1
, _2
, 10, &called
));
4388 BOOST_ASIO_CHECK(called
);
4389 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4391 s
.reset(read_data
, sizeof(read_data
));
4392 memset(read_buf
, 0, sizeof(read_buf
));
4394 boost::asio::async_read_at(s
, 0, buffers
,
4395 boost::asio::transfer_exactly(42),
4396 bindns::bind(async_read_handler
,
4397 _1
, _2
, 42, &called
));
4400 BOOST_ASIO_CHECK(called
);
4401 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4403 s
.reset(read_data
, sizeof(read_data
));
4404 memset(read_buf
, 0, sizeof(read_buf
));
4406 boost::asio::async_read_at(s
, 1234, buffers
,
4407 boost::asio::transfer_exactly(42),
4408 bindns::bind(async_read_handler
,
4409 _1
, _2
, 42, &called
));
4412 BOOST_ASIO_CHECK(called
);
4413 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4415 s
.reset(read_data
, sizeof(read_data
));
4416 s
.next_read_length(1);
4417 memset(read_buf
, 0, sizeof(read_buf
));
4419 boost::asio::async_read_at(s
, 0, buffers
,
4420 boost::asio::transfer_exactly(42),
4421 bindns::bind(async_read_handler
,
4422 _1
, _2
, 42, &called
));
4425 BOOST_ASIO_CHECK(called
);
4426 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4428 s
.reset(read_data
, sizeof(read_data
));
4429 s
.next_read_length(1);
4430 memset(read_buf
, 0, sizeof(read_buf
));
4432 boost::asio::async_read_at(s
, 1234, buffers
,
4433 boost::asio::transfer_exactly(42),
4434 bindns::bind(async_read_handler
,
4435 _1
, _2
, 42, &called
));
4438 BOOST_ASIO_CHECK(called
);
4439 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4441 s
.reset(read_data
, sizeof(read_data
));
4442 s
.next_read_length(10);
4443 memset(read_buf
, 0, sizeof(read_buf
));
4445 boost::asio::async_read_at(s
, 0, buffers
,
4446 boost::asio::transfer_exactly(42),
4447 bindns::bind(async_read_handler
,
4448 _1
, _2
, 42, &called
));
4451 BOOST_ASIO_CHECK(called
);
4452 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4454 s
.reset(read_data
, sizeof(read_data
));
4455 s
.next_read_length(10);
4456 memset(read_buf
, 0, sizeof(read_buf
));
4458 boost::asio::async_read_at(s
, 1234, buffers
,
4459 boost::asio::transfer_exactly(42),
4460 bindns::bind(async_read_handler
,
4461 _1
, _2
, 42, &called
));
4464 BOOST_ASIO_CHECK(called
);
4465 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4467 s
.reset(read_data
, sizeof(read_data
));
4468 memset(read_buf
, 0, sizeof(read_buf
));
4470 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
4471 bindns::bind(async_read_handler
,
4472 _1
, _2
, sizeof(read_data
), &called
));
4475 BOOST_ASIO_CHECK(called
);
4476 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4478 s
.reset(read_data
, sizeof(read_data
));
4479 memset(read_buf
, 0, sizeof(read_buf
));
4481 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
4482 bindns::bind(async_read_handler
,
4483 _1
, _2
, sizeof(read_data
), &called
));
4486 BOOST_ASIO_CHECK(called
);
4487 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4489 s
.reset(read_data
, sizeof(read_data
));
4490 s
.next_read_length(1);
4491 memset(read_buf
, 0, sizeof(read_buf
));
4493 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
4494 bindns::bind(async_read_handler
,
4495 _1
, _2
, sizeof(read_data
), &called
));
4498 BOOST_ASIO_CHECK(called
);
4499 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4501 s
.reset(read_data
, sizeof(read_data
));
4502 s
.next_read_length(1);
4503 memset(read_buf
, 0, sizeof(read_buf
));
4505 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
4506 bindns::bind(async_read_handler
,
4507 _1
, _2
, sizeof(read_data
), &called
));
4510 BOOST_ASIO_CHECK(called
);
4511 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4513 s
.reset(read_data
, sizeof(read_data
));
4514 s
.next_read_length(10);
4515 memset(read_buf
, 0, sizeof(read_buf
));
4517 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
4518 bindns::bind(async_read_handler
,
4519 _1
, _2
, sizeof(read_data
), &called
));
4522 BOOST_ASIO_CHECK(called
);
4523 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4525 s
.reset(read_data
, sizeof(read_data
));
4526 s
.next_read_length(10);
4527 memset(read_buf
, 0, sizeof(read_buf
));
4529 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
4530 bindns::bind(async_read_handler
,
4531 _1
, _2
, sizeof(read_data
), &called
));
4534 BOOST_ASIO_CHECK(called
);
4535 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4537 s
.reset(read_data
, sizeof(read_data
));
4538 memset(read_buf
, 0, sizeof(read_buf
));
4540 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
4541 bindns::bind(async_read_handler
,
4542 _1
, _2
, sizeof(read_data
), &called
));
4545 BOOST_ASIO_CHECK(called
);
4546 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4548 s
.reset(read_data
, sizeof(read_data
));
4549 memset(read_buf
, 0, sizeof(read_buf
));
4551 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
4552 bindns::bind(async_read_handler
,
4553 _1
, _2
, sizeof(read_data
), &called
));
4556 BOOST_ASIO_CHECK(called
);
4557 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4559 s
.reset(read_data
, sizeof(read_data
));
4560 s
.next_read_length(1);
4561 memset(read_buf
, 0, sizeof(read_buf
));
4563 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
4564 bindns::bind(async_read_handler
,
4565 _1
, _2
, sizeof(read_data
), &called
));
4568 BOOST_ASIO_CHECK(called
);
4569 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4571 s
.reset(read_data
, sizeof(read_data
));
4572 s
.next_read_length(1);
4573 memset(read_buf
, 0, sizeof(read_buf
));
4575 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
4576 bindns::bind(async_read_handler
,
4577 _1
, _2
, sizeof(read_data
), &called
));
4580 BOOST_ASIO_CHECK(called
);
4581 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4583 s
.reset(read_data
, sizeof(read_data
));
4584 s
.next_read_length(10);
4585 memset(read_buf
, 0, sizeof(read_buf
));
4587 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
4588 bindns::bind(async_read_handler
,
4589 _1
, _2
, sizeof(read_data
), &called
));
4592 BOOST_ASIO_CHECK(called
);
4593 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4595 s
.reset(read_data
, sizeof(read_data
));
4596 s
.next_read_length(10);
4597 memset(read_buf
, 0, sizeof(read_buf
));
4599 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
4600 bindns::bind(async_read_handler
,
4601 _1
, _2
, sizeof(read_data
), &called
));
4604 BOOST_ASIO_CHECK(called
);
4605 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4607 s
.reset(read_data
, sizeof(read_data
));
4608 memset(read_buf
, 0, sizeof(read_buf
));
4609 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
4610 short_transfer
, archetypes::lazy_handler());
4611 BOOST_ASIO_CHECK(i
== 42);
4614 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4617 void test_5_arg_boost_array_buffers_async_read_at()
4619 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
4620 namespace bindns
= boost
;
4621 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
4622 namespace bindns
= std
;
4623 using std::placeholders::_1
;
4624 using std::placeholders::_2
;
4625 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
4627 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
4628 boost::asio::io_context ioc
;
4629 test_random_access_device
s(ioc
);
4630 char read_buf
[sizeof(read_data
)];
4631 boost::array
<boost::asio::mutable_buffer
, 2> buffers
= { {
4632 boost::asio::buffer(read_buf
, 32),
4633 boost::asio::buffer(read_buf
) + 32 } };
4635 s
.reset(read_data
, sizeof(read_data
));
4636 memset(read_buf
, 0, sizeof(read_buf
));
4637 bool called
= false;
4638 boost::asio::async_read_at(s
, 0, buffers
,
4639 boost::asio::transfer_all(),
4640 bindns::bind(async_read_handler
,
4641 _1
, _2
, sizeof(read_data
), &called
));
4644 BOOST_ASIO_CHECK(called
);
4645 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4647 s
.reset(read_data
, sizeof(read_data
));
4648 memset(read_buf
, 0, sizeof(read_buf
));
4650 boost::asio::async_read_at(s
, 1234, buffers
,
4651 boost::asio::transfer_all(),
4652 bindns::bind(async_read_handler
,
4653 _1
, _2
, sizeof(read_data
), &called
));
4656 BOOST_ASIO_CHECK(called
);
4657 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4659 s
.reset(read_data
, sizeof(read_data
));
4660 s
.next_read_length(1);
4661 memset(read_buf
, 0, sizeof(read_buf
));
4663 boost::asio::async_read_at(s
, 0, buffers
,
4664 boost::asio::transfer_all(),
4665 bindns::bind(async_read_handler
,
4666 _1
, _2
, sizeof(read_data
), &called
));
4669 BOOST_ASIO_CHECK(called
);
4670 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4672 s
.reset(read_data
, sizeof(read_data
));
4673 s
.next_read_length(1);
4674 memset(read_buf
, 0, sizeof(read_buf
));
4676 boost::asio::async_read_at(s
, 1234, buffers
,
4677 boost::asio::transfer_all(),
4678 bindns::bind(async_read_handler
,
4679 _1
, _2
, sizeof(read_data
), &called
));
4682 BOOST_ASIO_CHECK(called
);
4683 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4685 s
.reset(read_data
, sizeof(read_data
));
4686 s
.next_read_length(10);
4687 memset(read_buf
, 0, sizeof(read_buf
));
4689 boost::asio::async_read_at(s
, 0, buffers
,
4690 boost::asio::transfer_all(),
4691 bindns::bind(async_read_handler
,
4692 _1
, _2
, sizeof(read_data
), &called
));
4695 BOOST_ASIO_CHECK(called
);
4696 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4698 s
.reset(read_data
, sizeof(read_data
));
4699 s
.next_read_length(10);
4700 memset(read_buf
, 0, sizeof(read_buf
));
4702 boost::asio::async_read_at(s
, 1234, buffers
,
4703 boost::asio::transfer_all(),
4704 bindns::bind(async_read_handler
,
4705 _1
, _2
, sizeof(read_data
), &called
));
4708 BOOST_ASIO_CHECK(called
);
4709 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4711 s
.reset(read_data
, sizeof(read_data
));
4712 memset(read_buf
, 0, sizeof(read_buf
));
4714 boost::asio::async_read_at(s
, 0, buffers
,
4715 boost::asio::transfer_at_least(1),
4716 bindns::bind(async_read_handler
,
4717 _1
, _2
, sizeof(read_data
), &called
));
4720 BOOST_ASIO_CHECK(called
);
4721 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4723 s
.reset(read_data
, sizeof(read_data
));
4724 memset(read_buf
, 0, sizeof(read_buf
));
4726 boost::asio::async_read_at(s
, 1234, buffers
,
4727 boost::asio::transfer_at_least(1),
4728 bindns::bind(async_read_handler
,
4729 _1
, _2
, sizeof(read_data
), &called
));
4732 BOOST_ASIO_CHECK(called
);
4733 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4735 s
.reset(read_data
, sizeof(read_data
));
4736 s
.next_read_length(1);
4737 memset(read_buf
, 0, sizeof(read_buf
));
4739 boost::asio::async_read_at(s
, 0, buffers
,
4740 boost::asio::transfer_at_least(1),
4741 bindns::bind(async_read_handler
,
4742 _1
, _2
, 1, &called
));
4745 BOOST_ASIO_CHECK(called
);
4746 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4748 s
.reset(read_data
, sizeof(read_data
));
4749 s
.next_read_length(1);
4750 memset(read_buf
, 0, sizeof(read_buf
));
4752 boost::asio::async_read_at(s
, 1234, buffers
,
4753 boost::asio::transfer_at_least(1),
4754 bindns::bind(async_read_handler
,
4755 _1
, _2
, 1, &called
));
4758 BOOST_ASIO_CHECK(called
);
4759 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4761 s
.reset(read_data
, sizeof(read_data
));
4762 s
.next_read_length(10);
4763 memset(read_buf
, 0, sizeof(read_buf
));
4765 boost::asio::async_read_at(s
, 0, buffers
,
4766 boost::asio::transfer_at_least(1),
4767 bindns::bind(async_read_handler
,
4768 _1
, _2
, 10, &called
));
4771 BOOST_ASIO_CHECK(called
);
4772 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4774 s
.reset(read_data
, sizeof(read_data
));
4775 s
.next_read_length(10);
4776 memset(read_buf
, 0, sizeof(read_buf
));
4778 boost::asio::async_read_at(s
, 1234, buffers
,
4779 boost::asio::transfer_at_least(1),
4780 bindns::bind(async_read_handler
,
4781 _1
, _2
, 10, &called
));
4784 BOOST_ASIO_CHECK(called
);
4785 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4787 s
.reset(read_data
, sizeof(read_data
));
4788 memset(read_buf
, 0, sizeof(read_buf
));
4790 boost::asio::async_read_at(s
, 0, buffers
,
4791 boost::asio::transfer_at_least(10),
4792 bindns::bind(async_read_handler
,
4793 _1
, _2
, sizeof(read_data
), &called
));
4796 BOOST_ASIO_CHECK(called
);
4797 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4799 s
.reset(read_data
, sizeof(read_data
));
4800 memset(read_buf
, 0, sizeof(read_buf
));
4802 boost::asio::async_read_at(s
, 1234, buffers
,
4803 boost::asio::transfer_at_least(10),
4804 bindns::bind(async_read_handler
,
4805 _1
, _2
, sizeof(read_data
), &called
));
4808 BOOST_ASIO_CHECK(called
);
4809 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4811 s
.reset(read_data
, sizeof(read_data
));
4812 s
.next_read_length(1);
4813 memset(read_buf
, 0, sizeof(read_buf
));
4815 boost::asio::async_read_at(s
, 0, buffers
,
4816 boost::asio::transfer_at_least(10),
4817 bindns::bind(async_read_handler
,
4818 _1
, _2
, 10, &called
));
4821 BOOST_ASIO_CHECK(called
);
4822 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4824 s
.reset(read_data
, sizeof(read_data
));
4825 s
.next_read_length(1);
4826 memset(read_buf
, 0, sizeof(read_buf
));
4828 boost::asio::async_read_at(s
, 1234, buffers
,
4829 boost::asio::transfer_at_least(10),
4830 bindns::bind(async_read_handler
,
4831 _1
, _2
, 10, &called
));
4834 BOOST_ASIO_CHECK(called
);
4835 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4837 s
.reset(read_data
, sizeof(read_data
));
4838 s
.next_read_length(10);
4839 memset(read_buf
, 0, sizeof(read_buf
));
4841 boost::asio::async_read_at(s
, 0, buffers
,
4842 boost::asio::transfer_at_least(10),
4843 bindns::bind(async_read_handler
,
4844 _1
, _2
, 10, &called
));
4847 BOOST_ASIO_CHECK(called
);
4848 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4850 s
.reset(read_data
, sizeof(read_data
));
4851 s
.next_read_length(10);
4852 memset(read_buf
, 0, sizeof(read_buf
));
4854 boost::asio::async_read_at(s
, 1234, buffers
,
4855 boost::asio::transfer_at_least(10),
4856 bindns::bind(async_read_handler
,
4857 _1
, _2
, 10, &called
));
4860 BOOST_ASIO_CHECK(called
);
4861 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4863 s
.reset(read_data
, sizeof(read_data
));
4864 memset(read_buf
, 0, sizeof(read_buf
));
4866 boost::asio::async_read_at(s
, 0, buffers
,
4867 boost::asio::transfer_at_least(42),
4868 bindns::bind(async_read_handler
,
4869 _1
, _2
, sizeof(read_data
), &called
));
4872 BOOST_ASIO_CHECK(called
);
4873 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
4875 s
.reset(read_data
, sizeof(read_data
));
4876 memset(read_buf
, 0, sizeof(read_buf
));
4878 boost::asio::async_read_at(s
, 1234, buffers
,
4879 boost::asio::transfer_at_least(42),
4880 bindns::bind(async_read_handler
,
4881 _1
, _2
, sizeof(read_data
), &called
));
4884 BOOST_ASIO_CHECK(called
);
4885 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
4887 s
.reset(read_data
, sizeof(read_data
));
4888 s
.next_read_length(1);
4889 memset(read_buf
, 0, sizeof(read_buf
));
4891 boost::asio::async_read_at(s
, 0, buffers
,
4892 boost::asio::transfer_at_least(42),
4893 bindns::bind(async_read_handler
,
4894 _1
, _2
, 42, &called
));
4897 BOOST_ASIO_CHECK(called
);
4898 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4900 s
.reset(read_data
, sizeof(read_data
));
4901 s
.next_read_length(1);
4902 memset(read_buf
, 0, sizeof(read_buf
));
4904 boost::asio::async_read_at(s
, 1234, buffers
,
4905 boost::asio::transfer_at_least(42),
4906 bindns::bind(async_read_handler
,
4907 _1
, _2
, 42, &called
));
4910 BOOST_ASIO_CHECK(called
);
4911 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4913 s
.reset(read_data
, sizeof(read_data
));
4914 s
.next_read_length(10);
4915 memset(read_buf
, 0, sizeof(read_buf
));
4917 boost::asio::async_read_at(s
, 0, buffers
,
4918 boost::asio::transfer_at_least(42),
4919 bindns::bind(async_read_handler
,
4920 _1
, _2
, 50, &called
));
4923 BOOST_ASIO_CHECK(called
);
4924 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
4926 s
.reset(read_data
, sizeof(read_data
));
4927 s
.next_read_length(10);
4928 memset(read_buf
, 0, sizeof(read_buf
));
4930 boost::asio::async_read_at(s
, 1234, buffers
,
4931 boost::asio::transfer_at_least(42),
4932 bindns::bind(async_read_handler
,
4933 _1
, _2
, 50, &called
));
4936 BOOST_ASIO_CHECK(called
);
4937 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
4939 s
.reset(read_data
, sizeof(read_data
));
4940 memset(read_buf
, 0, sizeof(read_buf
));
4942 boost::asio::async_read_at(s
, 0, buffers
,
4943 boost::asio::transfer_exactly(1),
4944 bindns::bind(async_read_handler
,
4945 _1
, _2
, 1, &called
));
4948 BOOST_ASIO_CHECK(called
);
4949 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4951 s
.reset(read_data
, sizeof(read_data
));
4952 memset(read_buf
, 0, sizeof(read_buf
));
4954 boost::asio::async_read_at(s
, 1234, buffers
,
4955 boost::asio::transfer_exactly(1),
4956 bindns::bind(async_read_handler
,
4957 _1
, _2
, 1, &called
));
4960 BOOST_ASIO_CHECK(called
);
4961 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4963 s
.reset(read_data
, sizeof(read_data
));
4964 s
.next_read_length(1);
4965 memset(read_buf
, 0, sizeof(read_buf
));
4967 boost::asio::async_read_at(s
, 0, buffers
,
4968 boost::asio::transfer_exactly(1),
4969 bindns::bind(async_read_handler
,
4970 _1
, _2
, 1, &called
));
4973 BOOST_ASIO_CHECK(called
);
4974 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4976 s
.reset(read_data
, sizeof(read_data
));
4977 s
.next_read_length(1);
4978 memset(read_buf
, 0, sizeof(read_buf
));
4980 boost::asio::async_read_at(s
, 1234, buffers
,
4981 boost::asio::transfer_exactly(1),
4982 bindns::bind(async_read_handler
,
4983 _1
, _2
, 1, &called
));
4986 BOOST_ASIO_CHECK(called
);
4987 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4989 s
.reset(read_data
, sizeof(read_data
));
4990 s
.next_read_length(10);
4991 memset(read_buf
, 0, sizeof(read_buf
));
4993 boost::asio::async_read_at(s
, 0, buffers
,
4994 boost::asio::transfer_exactly(1),
4995 bindns::bind(async_read_handler
,
4996 _1
, _2
, 1, &called
));
4999 BOOST_ASIO_CHECK(called
);
5000 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5002 s
.reset(read_data
, sizeof(read_data
));
5003 s
.next_read_length(10);
5004 memset(read_buf
, 0, sizeof(read_buf
));
5006 boost::asio::async_read_at(s
, 1234, buffers
,
5007 boost::asio::transfer_exactly(1),
5008 bindns::bind(async_read_handler
,
5009 _1
, _2
, 1, &called
));
5012 BOOST_ASIO_CHECK(called
);
5013 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5015 s
.reset(read_data
, sizeof(read_data
));
5016 memset(read_buf
, 0, sizeof(read_buf
));
5018 boost::asio::async_read_at(s
, 0, buffers
,
5019 boost::asio::transfer_exactly(10),
5020 bindns::bind(async_read_handler
,
5021 _1
, _2
, 10, &called
));
5024 BOOST_ASIO_CHECK(called
);
5025 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5027 s
.reset(read_data
, sizeof(read_data
));
5028 memset(read_buf
, 0, sizeof(read_buf
));
5030 boost::asio::async_read_at(s
, 1234, buffers
,
5031 boost::asio::transfer_exactly(10),
5032 bindns::bind(async_read_handler
,
5033 _1
, _2
, 10, &called
));
5036 BOOST_ASIO_CHECK(called
);
5037 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5039 s
.reset(read_data
, sizeof(read_data
));
5040 s
.next_read_length(1);
5041 memset(read_buf
, 0, sizeof(read_buf
));
5043 boost::asio::async_read_at(s
, 0, buffers
,
5044 boost::asio::transfer_exactly(10),
5045 bindns::bind(async_read_handler
,
5046 _1
, _2
, 10, &called
));
5049 BOOST_ASIO_CHECK(called
);
5050 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5052 s
.reset(read_data
, sizeof(read_data
));
5053 s
.next_read_length(1);
5054 memset(read_buf
, 0, sizeof(read_buf
));
5056 boost::asio::async_read_at(s
, 1234, buffers
,
5057 boost::asio::transfer_exactly(10),
5058 bindns::bind(async_read_handler
,
5059 _1
, _2
, 10, &called
));
5062 BOOST_ASIO_CHECK(called
);
5063 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5065 s
.reset(read_data
, sizeof(read_data
));
5066 s
.next_read_length(10);
5067 memset(read_buf
, 0, sizeof(read_buf
));
5069 boost::asio::async_read_at(s
, 0, buffers
,
5070 boost::asio::transfer_exactly(10),
5071 bindns::bind(async_read_handler
,
5072 _1
, _2
, 10, &called
));
5075 BOOST_ASIO_CHECK(called
);
5076 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5078 s
.reset(read_data
, sizeof(read_data
));
5079 s
.next_read_length(10);
5080 memset(read_buf
, 0, sizeof(read_buf
));
5082 boost::asio::async_read_at(s
, 1234, buffers
,
5083 boost::asio::transfer_exactly(10),
5084 bindns::bind(async_read_handler
,
5085 _1
, _2
, 10, &called
));
5088 BOOST_ASIO_CHECK(called
);
5089 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5091 s
.reset(read_data
, sizeof(read_data
));
5092 memset(read_buf
, 0, sizeof(read_buf
));
5094 boost::asio::async_read_at(s
, 0, buffers
,
5095 boost::asio::transfer_exactly(42),
5096 bindns::bind(async_read_handler
,
5097 _1
, _2
, 42, &called
));
5100 BOOST_ASIO_CHECK(called
);
5101 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5103 s
.reset(read_data
, sizeof(read_data
));
5104 memset(read_buf
, 0, sizeof(read_buf
));
5106 boost::asio::async_read_at(s
, 1234, buffers
,
5107 boost::asio::transfer_exactly(42),
5108 bindns::bind(async_read_handler
,
5109 _1
, _2
, 42, &called
));
5112 BOOST_ASIO_CHECK(called
);
5113 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5115 s
.reset(read_data
, sizeof(read_data
));
5116 s
.next_read_length(1);
5117 memset(read_buf
, 0, sizeof(read_buf
));
5119 boost::asio::async_read_at(s
, 0, buffers
,
5120 boost::asio::transfer_exactly(42),
5121 bindns::bind(async_read_handler
,
5122 _1
, _2
, 42, &called
));
5125 BOOST_ASIO_CHECK(called
);
5126 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5128 s
.reset(read_data
, sizeof(read_data
));
5129 s
.next_read_length(1);
5130 memset(read_buf
, 0, sizeof(read_buf
));
5132 boost::asio::async_read_at(s
, 1234, buffers
,
5133 boost::asio::transfer_exactly(42),
5134 bindns::bind(async_read_handler
,
5135 _1
, _2
, 42, &called
));
5138 BOOST_ASIO_CHECK(called
);
5139 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5141 s
.reset(read_data
, sizeof(read_data
));
5142 s
.next_read_length(10);
5143 memset(read_buf
, 0, sizeof(read_buf
));
5145 boost::asio::async_read_at(s
, 0, buffers
,
5146 boost::asio::transfer_exactly(42),
5147 bindns::bind(async_read_handler
,
5148 _1
, _2
, 42, &called
));
5151 BOOST_ASIO_CHECK(called
);
5152 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5154 s
.reset(read_data
, sizeof(read_data
));
5155 s
.next_read_length(10);
5156 memset(read_buf
, 0, sizeof(read_buf
));
5158 boost::asio::async_read_at(s
, 1234, buffers
,
5159 boost::asio::transfer_exactly(42),
5160 bindns::bind(async_read_handler
,
5161 _1
, _2
, 42, &called
));
5164 BOOST_ASIO_CHECK(called
);
5165 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5167 s
.reset(read_data
, sizeof(read_data
));
5168 memset(read_buf
, 0, sizeof(read_buf
));
5170 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
5171 bindns::bind(async_read_handler
,
5172 _1
, _2
, sizeof(read_data
), &called
));
5175 BOOST_ASIO_CHECK(called
);
5176 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5178 s
.reset(read_data
, sizeof(read_data
));
5179 memset(read_buf
, 0, sizeof(read_buf
));
5181 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
5182 bindns::bind(async_read_handler
,
5183 _1
, _2
, sizeof(read_data
), &called
));
5186 BOOST_ASIO_CHECK(called
);
5187 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5189 s
.reset(read_data
, sizeof(read_data
));
5190 s
.next_read_length(1);
5191 memset(read_buf
, 0, sizeof(read_buf
));
5193 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
5194 bindns::bind(async_read_handler
,
5195 _1
, _2
, sizeof(read_data
), &called
));
5198 BOOST_ASIO_CHECK(called
);
5199 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5201 s
.reset(read_data
, sizeof(read_data
));
5202 s
.next_read_length(1);
5203 memset(read_buf
, 0, sizeof(read_buf
));
5205 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
5206 bindns::bind(async_read_handler
,
5207 _1
, _2
, sizeof(read_data
), &called
));
5210 BOOST_ASIO_CHECK(called
);
5211 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5213 s
.reset(read_data
, sizeof(read_data
));
5214 s
.next_read_length(10);
5215 memset(read_buf
, 0, sizeof(read_buf
));
5217 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
5218 bindns::bind(async_read_handler
,
5219 _1
, _2
, sizeof(read_data
), &called
));
5222 BOOST_ASIO_CHECK(called
);
5223 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5225 s
.reset(read_data
, sizeof(read_data
));
5226 s
.next_read_length(10);
5227 memset(read_buf
, 0, sizeof(read_buf
));
5229 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
5230 bindns::bind(async_read_handler
,
5231 _1
, _2
, sizeof(read_data
), &called
));
5234 BOOST_ASIO_CHECK(called
);
5235 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5237 s
.reset(read_data
, sizeof(read_data
));
5238 memset(read_buf
, 0, sizeof(read_buf
));
5240 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
5241 bindns::bind(async_read_handler
,
5242 _1
, _2
, sizeof(read_data
), &called
));
5245 BOOST_ASIO_CHECK(called
);
5246 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5248 s
.reset(read_data
, sizeof(read_data
));
5249 memset(read_buf
, 0, sizeof(read_buf
));
5251 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
5252 bindns::bind(async_read_handler
,
5253 _1
, _2
, sizeof(read_data
), &called
));
5256 BOOST_ASIO_CHECK(called
);
5257 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5259 s
.reset(read_data
, sizeof(read_data
));
5260 s
.next_read_length(1);
5261 memset(read_buf
, 0, sizeof(read_buf
));
5263 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
5264 bindns::bind(async_read_handler
,
5265 _1
, _2
, sizeof(read_data
), &called
));
5268 BOOST_ASIO_CHECK(called
);
5269 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5271 s
.reset(read_data
, sizeof(read_data
));
5272 s
.next_read_length(1);
5273 memset(read_buf
, 0, sizeof(read_buf
));
5275 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
5276 bindns::bind(async_read_handler
,
5277 _1
, _2
, sizeof(read_data
), &called
));
5280 BOOST_ASIO_CHECK(called
);
5281 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5283 s
.reset(read_data
, sizeof(read_data
));
5284 s
.next_read_length(10);
5285 memset(read_buf
, 0, sizeof(read_buf
));
5287 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
5288 bindns::bind(async_read_handler
,
5289 _1
, _2
, sizeof(read_data
), &called
));
5292 BOOST_ASIO_CHECK(called
);
5293 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5295 s
.reset(read_data
, sizeof(read_data
));
5296 s
.next_read_length(10);
5297 memset(read_buf
, 0, sizeof(read_buf
));
5299 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
5300 bindns::bind(async_read_handler
,
5301 _1
, _2
, sizeof(read_data
), &called
));
5304 BOOST_ASIO_CHECK(called
);
5305 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5307 s
.reset(read_data
, sizeof(read_data
));
5308 memset(read_buf
, 0, sizeof(read_buf
));
5309 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
5310 short_transfer
, archetypes::lazy_handler());
5311 BOOST_ASIO_CHECK(i
== 42);
5314 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5315 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
5318 void test_5_arg_std_array_buffers_async_read_at()
5320 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
5321 namespace bindns
= boost
;
5322 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
5323 namespace bindns
= std
;
5324 using std::placeholders::_1
;
5325 using std::placeholders::_2
;
5326 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
5328 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
5329 boost::asio::io_context ioc
;
5330 test_random_access_device
s(ioc
);
5331 char read_buf
[sizeof(read_data
)];
5332 std::array
<boost::asio::mutable_buffer
, 2> buffers
= { {
5333 boost::asio::buffer(read_buf
, 32),
5334 boost::asio::buffer(read_buf
) + 32 } };
5336 s
.reset(read_data
, sizeof(read_data
));
5337 memset(read_buf
, 0, sizeof(read_buf
));
5338 bool called
= false;
5339 boost::asio::async_read_at(s
, 0, buffers
,
5340 boost::asio::transfer_all(),
5341 bindns::bind(async_read_handler
,
5342 _1
, _2
, sizeof(read_data
), &called
));
5345 BOOST_ASIO_CHECK(called
);
5346 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5348 s
.reset(read_data
, sizeof(read_data
));
5349 memset(read_buf
, 0, sizeof(read_buf
));
5351 boost::asio::async_read_at(s
, 1234, buffers
,
5352 boost::asio::transfer_all(),
5353 bindns::bind(async_read_handler
,
5354 _1
, _2
, sizeof(read_data
), &called
));
5357 BOOST_ASIO_CHECK(called
);
5358 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5360 s
.reset(read_data
, sizeof(read_data
));
5361 s
.next_read_length(1);
5362 memset(read_buf
, 0, sizeof(read_buf
));
5364 boost::asio::async_read_at(s
, 0, buffers
,
5365 boost::asio::transfer_all(),
5366 bindns::bind(async_read_handler
,
5367 _1
, _2
, sizeof(read_data
), &called
));
5370 BOOST_ASIO_CHECK(called
);
5371 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5373 s
.reset(read_data
, sizeof(read_data
));
5374 s
.next_read_length(1);
5375 memset(read_buf
, 0, sizeof(read_buf
));
5377 boost::asio::async_read_at(s
, 1234, buffers
,
5378 boost::asio::transfer_all(),
5379 bindns::bind(async_read_handler
,
5380 _1
, _2
, sizeof(read_data
), &called
));
5383 BOOST_ASIO_CHECK(called
);
5384 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5386 s
.reset(read_data
, sizeof(read_data
));
5387 s
.next_read_length(10);
5388 memset(read_buf
, 0, sizeof(read_buf
));
5390 boost::asio::async_read_at(s
, 0, buffers
,
5391 boost::asio::transfer_all(),
5392 bindns::bind(async_read_handler
,
5393 _1
, _2
, sizeof(read_data
), &called
));
5396 BOOST_ASIO_CHECK(called
);
5397 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5399 s
.reset(read_data
, sizeof(read_data
));
5400 s
.next_read_length(10);
5401 memset(read_buf
, 0, sizeof(read_buf
));
5403 boost::asio::async_read_at(s
, 1234, buffers
,
5404 boost::asio::transfer_all(),
5405 bindns::bind(async_read_handler
,
5406 _1
, _2
, sizeof(read_data
), &called
));
5409 BOOST_ASIO_CHECK(called
);
5410 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5412 s
.reset(read_data
, sizeof(read_data
));
5413 memset(read_buf
, 0, sizeof(read_buf
));
5415 boost::asio::async_read_at(s
, 0, buffers
,
5416 boost::asio::transfer_at_least(1),
5417 bindns::bind(async_read_handler
,
5418 _1
, _2
, sizeof(read_data
), &called
));
5421 BOOST_ASIO_CHECK(called
);
5422 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5424 s
.reset(read_data
, sizeof(read_data
));
5425 memset(read_buf
, 0, sizeof(read_buf
));
5427 boost::asio::async_read_at(s
, 1234, buffers
,
5428 boost::asio::transfer_at_least(1),
5429 bindns::bind(async_read_handler
,
5430 _1
, _2
, sizeof(read_data
), &called
));
5433 BOOST_ASIO_CHECK(called
);
5434 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5436 s
.reset(read_data
, sizeof(read_data
));
5437 s
.next_read_length(1);
5438 memset(read_buf
, 0, sizeof(read_buf
));
5440 boost::asio::async_read_at(s
, 0, buffers
,
5441 boost::asio::transfer_at_least(1),
5442 bindns::bind(async_read_handler
,
5443 _1
, _2
, 1, &called
));
5446 BOOST_ASIO_CHECK(called
);
5447 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5449 s
.reset(read_data
, sizeof(read_data
));
5450 s
.next_read_length(1);
5451 memset(read_buf
, 0, sizeof(read_buf
));
5453 boost::asio::async_read_at(s
, 1234, buffers
,
5454 boost::asio::transfer_at_least(1),
5455 bindns::bind(async_read_handler
,
5456 _1
, _2
, 1, &called
));
5459 BOOST_ASIO_CHECK(called
);
5460 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5462 s
.reset(read_data
, sizeof(read_data
));
5463 s
.next_read_length(10);
5464 memset(read_buf
, 0, sizeof(read_buf
));
5466 boost::asio::async_read_at(s
, 0, buffers
,
5467 boost::asio::transfer_at_least(1),
5468 bindns::bind(async_read_handler
,
5469 _1
, _2
, 10, &called
));
5472 BOOST_ASIO_CHECK(called
);
5473 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5475 s
.reset(read_data
, sizeof(read_data
));
5476 s
.next_read_length(10);
5477 memset(read_buf
, 0, sizeof(read_buf
));
5479 boost::asio::async_read_at(s
, 1234, buffers
,
5480 boost::asio::transfer_at_least(1),
5481 bindns::bind(async_read_handler
,
5482 _1
, _2
, 10, &called
));
5485 BOOST_ASIO_CHECK(called
);
5486 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5488 s
.reset(read_data
, sizeof(read_data
));
5489 memset(read_buf
, 0, sizeof(read_buf
));
5491 boost::asio::async_read_at(s
, 0, buffers
,
5492 boost::asio::transfer_at_least(10),
5493 bindns::bind(async_read_handler
,
5494 _1
, _2
, sizeof(read_data
), &called
));
5497 BOOST_ASIO_CHECK(called
);
5498 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5500 s
.reset(read_data
, sizeof(read_data
));
5501 memset(read_buf
, 0, sizeof(read_buf
));
5503 boost::asio::async_read_at(s
, 1234, buffers
,
5504 boost::asio::transfer_at_least(10),
5505 bindns::bind(async_read_handler
,
5506 _1
, _2
, sizeof(read_data
), &called
));
5509 BOOST_ASIO_CHECK(called
);
5510 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5512 s
.reset(read_data
, sizeof(read_data
));
5513 s
.next_read_length(1);
5514 memset(read_buf
, 0, sizeof(read_buf
));
5516 boost::asio::async_read_at(s
, 0, buffers
,
5517 boost::asio::transfer_at_least(10),
5518 bindns::bind(async_read_handler
,
5519 _1
, _2
, 10, &called
));
5522 BOOST_ASIO_CHECK(called
);
5523 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5525 s
.reset(read_data
, sizeof(read_data
));
5526 s
.next_read_length(1);
5527 memset(read_buf
, 0, sizeof(read_buf
));
5529 boost::asio::async_read_at(s
, 1234, buffers
,
5530 boost::asio::transfer_at_least(10),
5531 bindns::bind(async_read_handler
,
5532 _1
, _2
, 10, &called
));
5535 BOOST_ASIO_CHECK(called
);
5536 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5538 s
.reset(read_data
, sizeof(read_data
));
5539 s
.next_read_length(10);
5540 memset(read_buf
, 0, sizeof(read_buf
));
5542 boost::asio::async_read_at(s
, 0, buffers
,
5543 boost::asio::transfer_at_least(10),
5544 bindns::bind(async_read_handler
,
5545 _1
, _2
, 10, &called
));
5548 BOOST_ASIO_CHECK(called
);
5549 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5551 s
.reset(read_data
, sizeof(read_data
));
5552 s
.next_read_length(10);
5553 memset(read_buf
, 0, sizeof(read_buf
));
5555 boost::asio::async_read_at(s
, 1234, buffers
,
5556 boost::asio::transfer_at_least(10),
5557 bindns::bind(async_read_handler
,
5558 _1
, _2
, 10, &called
));
5561 BOOST_ASIO_CHECK(called
);
5562 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5564 s
.reset(read_data
, sizeof(read_data
));
5565 memset(read_buf
, 0, sizeof(read_buf
));
5567 boost::asio::async_read_at(s
, 0, buffers
,
5568 boost::asio::transfer_at_least(42),
5569 bindns::bind(async_read_handler
,
5570 _1
, _2
, sizeof(read_data
), &called
));
5573 BOOST_ASIO_CHECK(called
);
5574 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5576 s
.reset(read_data
, sizeof(read_data
));
5577 memset(read_buf
, 0, sizeof(read_buf
));
5579 boost::asio::async_read_at(s
, 1234, buffers
,
5580 boost::asio::transfer_at_least(42),
5581 bindns::bind(async_read_handler
,
5582 _1
, _2
, sizeof(read_data
), &called
));
5585 BOOST_ASIO_CHECK(called
);
5586 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5588 s
.reset(read_data
, sizeof(read_data
));
5589 s
.next_read_length(1);
5590 memset(read_buf
, 0, sizeof(read_buf
));
5592 boost::asio::async_read_at(s
, 0, buffers
,
5593 boost::asio::transfer_at_least(42),
5594 bindns::bind(async_read_handler
,
5595 _1
, _2
, 42, &called
));
5598 BOOST_ASIO_CHECK(called
);
5599 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5601 s
.reset(read_data
, sizeof(read_data
));
5602 s
.next_read_length(1);
5603 memset(read_buf
, 0, sizeof(read_buf
));
5605 boost::asio::async_read_at(s
, 1234, buffers
,
5606 boost::asio::transfer_at_least(42),
5607 bindns::bind(async_read_handler
,
5608 _1
, _2
, 42, &called
));
5611 BOOST_ASIO_CHECK(called
);
5612 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5614 s
.reset(read_data
, sizeof(read_data
));
5615 s
.next_read_length(10);
5616 memset(read_buf
, 0, sizeof(read_buf
));
5618 boost::asio::async_read_at(s
, 0, buffers
,
5619 boost::asio::transfer_at_least(42),
5620 bindns::bind(async_read_handler
,
5621 _1
, _2
, 50, &called
));
5624 BOOST_ASIO_CHECK(called
);
5625 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
5627 s
.reset(read_data
, sizeof(read_data
));
5628 s
.next_read_length(10);
5629 memset(read_buf
, 0, sizeof(read_buf
));
5631 boost::asio::async_read_at(s
, 1234, buffers
,
5632 boost::asio::transfer_at_least(42),
5633 bindns::bind(async_read_handler
,
5634 _1
, _2
, 50, &called
));
5637 BOOST_ASIO_CHECK(called
);
5638 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
5640 s
.reset(read_data
, sizeof(read_data
));
5641 memset(read_buf
, 0, sizeof(read_buf
));
5643 boost::asio::async_read_at(s
, 0, buffers
,
5644 boost::asio::transfer_exactly(1),
5645 bindns::bind(async_read_handler
,
5646 _1
, _2
, 1, &called
));
5649 BOOST_ASIO_CHECK(called
);
5650 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5652 s
.reset(read_data
, sizeof(read_data
));
5653 memset(read_buf
, 0, sizeof(read_buf
));
5655 boost::asio::async_read_at(s
, 1234, buffers
,
5656 boost::asio::transfer_exactly(1),
5657 bindns::bind(async_read_handler
,
5658 _1
, _2
, 1, &called
));
5661 BOOST_ASIO_CHECK(called
);
5662 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5664 s
.reset(read_data
, sizeof(read_data
));
5665 s
.next_read_length(1);
5666 memset(read_buf
, 0, sizeof(read_buf
));
5668 boost::asio::async_read_at(s
, 0, buffers
,
5669 boost::asio::transfer_exactly(1),
5670 bindns::bind(async_read_handler
,
5671 _1
, _2
, 1, &called
));
5674 BOOST_ASIO_CHECK(called
);
5675 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5677 s
.reset(read_data
, sizeof(read_data
));
5678 s
.next_read_length(1);
5679 memset(read_buf
, 0, sizeof(read_buf
));
5681 boost::asio::async_read_at(s
, 1234, buffers
,
5682 boost::asio::transfer_exactly(1),
5683 bindns::bind(async_read_handler
,
5684 _1
, _2
, 1, &called
));
5687 BOOST_ASIO_CHECK(called
);
5688 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5690 s
.reset(read_data
, sizeof(read_data
));
5691 s
.next_read_length(10);
5692 memset(read_buf
, 0, sizeof(read_buf
));
5694 boost::asio::async_read_at(s
, 0, buffers
,
5695 boost::asio::transfer_exactly(1),
5696 bindns::bind(async_read_handler
,
5697 _1
, _2
, 1, &called
));
5700 BOOST_ASIO_CHECK(called
);
5701 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5703 s
.reset(read_data
, sizeof(read_data
));
5704 s
.next_read_length(10);
5705 memset(read_buf
, 0, sizeof(read_buf
));
5707 boost::asio::async_read_at(s
, 1234, buffers
,
5708 boost::asio::transfer_exactly(1),
5709 bindns::bind(async_read_handler
,
5710 _1
, _2
, 1, &called
));
5713 BOOST_ASIO_CHECK(called
);
5714 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5716 s
.reset(read_data
, sizeof(read_data
));
5717 memset(read_buf
, 0, sizeof(read_buf
));
5719 boost::asio::async_read_at(s
, 0, buffers
,
5720 boost::asio::transfer_exactly(10),
5721 bindns::bind(async_read_handler
,
5722 _1
, _2
, 10, &called
));
5725 BOOST_ASIO_CHECK(called
);
5726 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5728 s
.reset(read_data
, sizeof(read_data
));
5729 memset(read_buf
, 0, sizeof(read_buf
));
5731 boost::asio::async_read_at(s
, 1234, buffers
,
5732 boost::asio::transfer_exactly(10),
5733 bindns::bind(async_read_handler
,
5734 _1
, _2
, 10, &called
));
5737 BOOST_ASIO_CHECK(called
);
5738 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5740 s
.reset(read_data
, sizeof(read_data
));
5741 s
.next_read_length(1);
5742 memset(read_buf
, 0, sizeof(read_buf
));
5744 boost::asio::async_read_at(s
, 0, buffers
,
5745 boost::asio::transfer_exactly(10),
5746 bindns::bind(async_read_handler
,
5747 _1
, _2
, 10, &called
));
5750 BOOST_ASIO_CHECK(called
);
5751 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5753 s
.reset(read_data
, sizeof(read_data
));
5754 s
.next_read_length(1);
5755 memset(read_buf
, 0, sizeof(read_buf
));
5757 boost::asio::async_read_at(s
, 1234, buffers
,
5758 boost::asio::transfer_exactly(10),
5759 bindns::bind(async_read_handler
,
5760 _1
, _2
, 10, &called
));
5763 BOOST_ASIO_CHECK(called
);
5764 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5766 s
.reset(read_data
, sizeof(read_data
));
5767 s
.next_read_length(10);
5768 memset(read_buf
, 0, sizeof(read_buf
));
5770 boost::asio::async_read_at(s
, 0, buffers
,
5771 boost::asio::transfer_exactly(10),
5772 bindns::bind(async_read_handler
,
5773 _1
, _2
, 10, &called
));
5776 BOOST_ASIO_CHECK(called
);
5777 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5779 s
.reset(read_data
, sizeof(read_data
));
5780 s
.next_read_length(10);
5781 memset(read_buf
, 0, sizeof(read_buf
));
5783 boost::asio::async_read_at(s
, 1234, buffers
,
5784 boost::asio::transfer_exactly(10),
5785 bindns::bind(async_read_handler
,
5786 _1
, _2
, 10, &called
));
5789 BOOST_ASIO_CHECK(called
);
5790 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5792 s
.reset(read_data
, sizeof(read_data
));
5793 memset(read_buf
, 0, sizeof(read_buf
));
5795 boost::asio::async_read_at(s
, 0, buffers
,
5796 boost::asio::transfer_exactly(42),
5797 bindns::bind(async_read_handler
,
5798 _1
, _2
, 42, &called
));
5801 BOOST_ASIO_CHECK(called
);
5802 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5804 s
.reset(read_data
, sizeof(read_data
));
5805 memset(read_buf
, 0, sizeof(read_buf
));
5807 boost::asio::async_read_at(s
, 1234, buffers
,
5808 boost::asio::transfer_exactly(42),
5809 bindns::bind(async_read_handler
,
5810 _1
, _2
, 42, &called
));
5813 BOOST_ASIO_CHECK(called
);
5814 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5816 s
.reset(read_data
, sizeof(read_data
));
5817 s
.next_read_length(1);
5818 memset(read_buf
, 0, sizeof(read_buf
));
5820 boost::asio::async_read_at(s
, 0, buffers
,
5821 boost::asio::transfer_exactly(42),
5822 bindns::bind(async_read_handler
,
5823 _1
, _2
, 42, &called
));
5826 BOOST_ASIO_CHECK(called
);
5827 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5829 s
.reset(read_data
, sizeof(read_data
));
5830 s
.next_read_length(1);
5831 memset(read_buf
, 0, sizeof(read_buf
));
5833 boost::asio::async_read_at(s
, 1234, buffers
,
5834 boost::asio::transfer_exactly(42),
5835 bindns::bind(async_read_handler
,
5836 _1
, _2
, 42, &called
));
5839 BOOST_ASIO_CHECK(called
);
5840 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5842 s
.reset(read_data
, sizeof(read_data
));
5843 s
.next_read_length(10);
5844 memset(read_buf
, 0, sizeof(read_buf
));
5846 boost::asio::async_read_at(s
, 0, buffers
,
5847 boost::asio::transfer_exactly(42),
5848 bindns::bind(async_read_handler
,
5849 _1
, _2
, 42, &called
));
5852 BOOST_ASIO_CHECK(called
);
5853 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5855 s
.reset(read_data
, sizeof(read_data
));
5856 s
.next_read_length(10);
5857 memset(read_buf
, 0, sizeof(read_buf
));
5859 boost::asio::async_read_at(s
, 1234, buffers
,
5860 boost::asio::transfer_exactly(42),
5861 bindns::bind(async_read_handler
,
5862 _1
, _2
, 42, &called
));
5865 BOOST_ASIO_CHECK(called
);
5866 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5868 s
.reset(read_data
, sizeof(read_data
));
5869 memset(read_buf
, 0, sizeof(read_buf
));
5871 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
5872 bindns::bind(async_read_handler
,
5873 _1
, _2
, sizeof(read_data
), &called
));
5876 BOOST_ASIO_CHECK(called
);
5877 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5879 s
.reset(read_data
, sizeof(read_data
));
5880 memset(read_buf
, 0, sizeof(read_buf
));
5882 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
5883 bindns::bind(async_read_handler
,
5884 _1
, _2
, sizeof(read_data
), &called
));
5887 BOOST_ASIO_CHECK(called
);
5888 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5890 s
.reset(read_data
, sizeof(read_data
));
5891 s
.next_read_length(1);
5892 memset(read_buf
, 0, sizeof(read_buf
));
5894 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
5895 bindns::bind(async_read_handler
,
5896 _1
, _2
, sizeof(read_data
), &called
));
5899 BOOST_ASIO_CHECK(called
);
5900 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5902 s
.reset(read_data
, sizeof(read_data
));
5903 s
.next_read_length(1);
5904 memset(read_buf
, 0, sizeof(read_buf
));
5906 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
5907 bindns::bind(async_read_handler
,
5908 _1
, _2
, sizeof(read_data
), &called
));
5911 BOOST_ASIO_CHECK(called
);
5912 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5914 s
.reset(read_data
, sizeof(read_data
));
5915 s
.next_read_length(10);
5916 memset(read_buf
, 0, sizeof(read_buf
));
5918 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
5919 bindns::bind(async_read_handler
,
5920 _1
, _2
, sizeof(read_data
), &called
));
5923 BOOST_ASIO_CHECK(called
);
5924 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5926 s
.reset(read_data
, sizeof(read_data
));
5927 s
.next_read_length(10);
5928 memset(read_buf
, 0, sizeof(read_buf
));
5930 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
5931 bindns::bind(async_read_handler
,
5932 _1
, _2
, sizeof(read_data
), &called
));
5935 BOOST_ASIO_CHECK(called
);
5936 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5938 s
.reset(read_data
, sizeof(read_data
));
5939 memset(read_buf
, 0, sizeof(read_buf
));
5941 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
5942 bindns::bind(async_read_handler
,
5943 _1
, _2
, sizeof(read_data
), &called
));
5946 BOOST_ASIO_CHECK(called
);
5947 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5949 s
.reset(read_data
, sizeof(read_data
));
5950 memset(read_buf
, 0, sizeof(read_buf
));
5952 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
5953 bindns::bind(async_read_handler
,
5954 _1
, _2
, sizeof(read_data
), &called
));
5957 BOOST_ASIO_CHECK(called
);
5958 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5960 s
.reset(read_data
, sizeof(read_data
));
5961 s
.next_read_length(1);
5962 memset(read_buf
, 0, sizeof(read_buf
));
5964 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
5965 bindns::bind(async_read_handler
,
5966 _1
, _2
, sizeof(read_data
), &called
));
5969 BOOST_ASIO_CHECK(called
);
5970 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5972 s
.reset(read_data
, sizeof(read_data
));
5973 s
.next_read_length(1);
5974 memset(read_buf
, 0, sizeof(read_buf
));
5976 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
5977 bindns::bind(async_read_handler
,
5978 _1
, _2
, sizeof(read_data
), &called
));
5981 BOOST_ASIO_CHECK(called
);
5982 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
5984 s
.reset(read_data
, sizeof(read_data
));
5985 s
.next_read_length(10);
5986 memset(read_buf
, 0, sizeof(read_buf
));
5988 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
5989 bindns::bind(async_read_handler
,
5990 _1
, _2
, sizeof(read_data
), &called
));
5993 BOOST_ASIO_CHECK(called
);
5994 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
5996 s
.reset(read_data
, sizeof(read_data
));
5997 s
.next_read_length(10);
5998 memset(read_buf
, 0, sizeof(read_buf
));
6000 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
6001 bindns::bind(async_read_handler
,
6002 _1
, _2
, sizeof(read_data
), &called
));
6005 BOOST_ASIO_CHECK(called
);
6006 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6008 s
.reset(read_data
, sizeof(read_data
));
6009 memset(read_buf
, 0, sizeof(read_buf
));
6010 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
6011 short_transfer
, archetypes::lazy_handler());
6012 BOOST_ASIO_CHECK(i
== 42);
6015 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6016 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
6019 void test_5_arg_vector_buffers_async_read_at()
6021 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
6022 namespace bindns
= boost
;
6023 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
6024 namespace bindns
= std
;
6025 using std::placeholders::_1
;
6026 using std::placeholders::_2
;
6027 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
6029 boost::asio::io_context ioc
;
6030 test_random_access_device
s(ioc
);
6031 char read_buf
[sizeof(read_data
)];
6032 std::vector
<boost::asio::mutable_buffer
> buffers
;
6033 buffers
.push_back(boost::asio::buffer(read_buf
, 32));
6034 buffers
.push_back(boost::asio::buffer(read_buf
) + 32);
6036 s
.reset(read_data
, sizeof(read_data
));
6037 memset(read_buf
, 0, sizeof(read_buf
));
6038 bool called
= false;
6039 boost::asio::async_read_at(s
, 0, buffers
,
6040 boost::asio::transfer_all(),
6041 bindns::bind(async_read_handler
,
6042 _1
, _2
, sizeof(read_data
), &called
));
6045 BOOST_ASIO_CHECK(called
);
6046 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6048 s
.reset(read_data
, sizeof(read_data
));
6049 memset(read_buf
, 0, sizeof(read_buf
));
6051 boost::asio::async_read_at(s
, 1234, buffers
,
6052 boost::asio::transfer_all(),
6053 bindns::bind(async_read_handler
,
6054 _1
, _2
, sizeof(read_data
), &called
));
6057 BOOST_ASIO_CHECK(called
);
6058 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6060 s
.reset(read_data
, sizeof(read_data
));
6061 s
.next_read_length(1);
6062 memset(read_buf
, 0, sizeof(read_buf
));
6064 boost::asio::async_read_at(s
, 0, buffers
,
6065 boost::asio::transfer_all(),
6066 bindns::bind(async_read_handler
,
6067 _1
, _2
, sizeof(read_data
), &called
));
6070 BOOST_ASIO_CHECK(called
);
6071 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6073 s
.reset(read_data
, sizeof(read_data
));
6074 s
.next_read_length(1);
6075 memset(read_buf
, 0, sizeof(read_buf
));
6077 boost::asio::async_read_at(s
, 1234, buffers
,
6078 boost::asio::transfer_all(),
6079 bindns::bind(async_read_handler
,
6080 _1
, _2
, sizeof(read_data
), &called
));
6083 BOOST_ASIO_CHECK(called
);
6084 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6086 s
.reset(read_data
, sizeof(read_data
));
6087 s
.next_read_length(10);
6088 memset(read_buf
, 0, sizeof(read_buf
));
6090 boost::asio::async_read_at(s
, 0, buffers
,
6091 boost::asio::transfer_all(),
6092 bindns::bind(async_read_handler
,
6093 _1
, _2
, sizeof(read_data
), &called
));
6096 BOOST_ASIO_CHECK(called
);
6097 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6099 s
.reset(read_data
, sizeof(read_data
));
6100 s
.next_read_length(10);
6101 memset(read_buf
, 0, sizeof(read_buf
));
6103 boost::asio::async_read_at(s
, 1234, buffers
,
6104 boost::asio::transfer_all(),
6105 bindns::bind(async_read_handler
,
6106 _1
, _2
, sizeof(read_data
), &called
));
6109 BOOST_ASIO_CHECK(called
);
6110 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6112 s
.reset(read_data
, sizeof(read_data
));
6113 memset(read_buf
, 0, sizeof(read_buf
));
6115 boost::asio::async_read_at(s
, 0, buffers
,
6116 boost::asio::transfer_at_least(1),
6117 bindns::bind(async_read_handler
,
6118 _1
, _2
, sizeof(read_data
), &called
));
6121 BOOST_ASIO_CHECK(called
);
6122 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6124 s
.reset(read_data
, sizeof(read_data
));
6125 memset(read_buf
, 0, sizeof(read_buf
));
6127 boost::asio::async_read_at(s
, 1234, buffers
,
6128 boost::asio::transfer_at_least(1),
6129 bindns::bind(async_read_handler
,
6130 _1
, _2
, sizeof(read_data
), &called
));
6133 BOOST_ASIO_CHECK(called
);
6134 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6136 s
.reset(read_data
, sizeof(read_data
));
6137 s
.next_read_length(1);
6138 memset(read_buf
, 0, sizeof(read_buf
));
6140 boost::asio::async_read_at(s
, 0, buffers
,
6141 boost::asio::transfer_at_least(1),
6142 bindns::bind(async_read_handler
,
6143 _1
, _2
, 1, &called
));
6146 BOOST_ASIO_CHECK(called
);
6147 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6149 s
.reset(read_data
, sizeof(read_data
));
6150 s
.next_read_length(1);
6151 memset(read_buf
, 0, sizeof(read_buf
));
6153 boost::asio::async_read_at(s
, 1234, buffers
,
6154 boost::asio::transfer_at_least(1),
6155 bindns::bind(async_read_handler
,
6156 _1
, _2
, 1, &called
));
6159 BOOST_ASIO_CHECK(called
);
6160 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6162 s
.reset(read_data
, sizeof(read_data
));
6163 s
.next_read_length(10);
6164 memset(read_buf
, 0, sizeof(read_buf
));
6166 boost::asio::async_read_at(s
, 0, buffers
,
6167 boost::asio::transfer_at_least(1),
6168 bindns::bind(async_read_handler
,
6169 _1
, _2
, 10, &called
));
6172 BOOST_ASIO_CHECK(called
);
6173 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6175 s
.reset(read_data
, sizeof(read_data
));
6176 s
.next_read_length(10);
6177 memset(read_buf
, 0, sizeof(read_buf
));
6179 boost::asio::async_read_at(s
, 1234, buffers
,
6180 boost::asio::transfer_at_least(1),
6181 bindns::bind(async_read_handler
,
6182 _1
, _2
, 10, &called
));
6185 BOOST_ASIO_CHECK(called
);
6186 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6188 s
.reset(read_data
, sizeof(read_data
));
6189 memset(read_buf
, 0, sizeof(read_buf
));
6191 boost::asio::async_read_at(s
, 0, buffers
,
6192 boost::asio::transfer_at_least(10),
6193 bindns::bind(async_read_handler
,
6194 _1
, _2
, sizeof(read_data
), &called
));
6197 BOOST_ASIO_CHECK(called
);
6198 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6200 s
.reset(read_data
, sizeof(read_data
));
6201 memset(read_buf
, 0, sizeof(read_buf
));
6203 boost::asio::async_read_at(s
, 1234, buffers
,
6204 boost::asio::transfer_at_least(10),
6205 bindns::bind(async_read_handler
,
6206 _1
, _2
, sizeof(read_data
), &called
));
6209 BOOST_ASIO_CHECK(called
);
6210 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6212 s
.reset(read_data
, sizeof(read_data
));
6213 s
.next_read_length(1);
6214 memset(read_buf
, 0, sizeof(read_buf
));
6216 boost::asio::async_read_at(s
, 0, buffers
,
6217 boost::asio::transfer_at_least(10),
6218 bindns::bind(async_read_handler
,
6219 _1
, _2
, 10, &called
));
6222 BOOST_ASIO_CHECK(called
);
6223 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6225 s
.reset(read_data
, sizeof(read_data
));
6226 s
.next_read_length(1);
6227 memset(read_buf
, 0, sizeof(read_buf
));
6229 boost::asio::async_read_at(s
, 1234, buffers
,
6230 boost::asio::transfer_at_least(10),
6231 bindns::bind(async_read_handler
,
6232 _1
, _2
, 10, &called
));
6235 BOOST_ASIO_CHECK(called
);
6236 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6238 s
.reset(read_data
, sizeof(read_data
));
6239 s
.next_read_length(10);
6240 memset(read_buf
, 0, sizeof(read_buf
));
6242 boost::asio::async_read_at(s
, 0, buffers
,
6243 boost::asio::transfer_at_least(10),
6244 bindns::bind(async_read_handler
,
6245 _1
, _2
, 10, &called
));
6248 BOOST_ASIO_CHECK(called
);
6249 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6251 s
.reset(read_data
, sizeof(read_data
));
6252 s
.next_read_length(10);
6253 memset(read_buf
, 0, sizeof(read_buf
));
6255 boost::asio::async_read_at(s
, 1234, buffers
,
6256 boost::asio::transfer_at_least(10),
6257 bindns::bind(async_read_handler
,
6258 _1
, _2
, 10, &called
));
6261 BOOST_ASIO_CHECK(called
);
6262 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6264 s
.reset(read_data
, sizeof(read_data
));
6265 memset(read_buf
, 0, sizeof(read_buf
));
6267 boost::asio::async_read_at(s
, 0, buffers
,
6268 boost::asio::transfer_at_least(42),
6269 bindns::bind(async_read_handler
,
6270 _1
, _2
, sizeof(read_data
), &called
));
6273 BOOST_ASIO_CHECK(called
);
6274 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6276 s
.reset(read_data
, sizeof(read_data
));
6277 memset(read_buf
, 0, sizeof(read_buf
));
6279 boost::asio::async_read_at(s
, 1234, buffers
,
6280 boost::asio::transfer_at_least(42),
6281 bindns::bind(async_read_handler
,
6282 _1
, _2
, sizeof(read_data
), &called
));
6285 BOOST_ASIO_CHECK(called
);
6286 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6288 s
.reset(read_data
, sizeof(read_data
));
6289 s
.next_read_length(1);
6290 memset(read_buf
, 0, sizeof(read_buf
));
6292 boost::asio::async_read_at(s
, 0, buffers
,
6293 boost::asio::transfer_at_least(42),
6294 bindns::bind(async_read_handler
,
6295 _1
, _2
, 42, &called
));
6298 BOOST_ASIO_CHECK(called
);
6299 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6301 s
.reset(read_data
, sizeof(read_data
));
6302 s
.next_read_length(1);
6303 memset(read_buf
, 0, sizeof(read_buf
));
6305 boost::asio::async_read_at(s
, 1234, buffers
,
6306 boost::asio::transfer_at_least(42),
6307 bindns::bind(async_read_handler
,
6308 _1
, _2
, 42, &called
));
6311 BOOST_ASIO_CHECK(called
);
6312 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6314 s
.reset(read_data
, sizeof(read_data
));
6315 s
.next_read_length(10);
6316 memset(read_buf
, 0, sizeof(read_buf
));
6318 boost::asio::async_read_at(s
, 0, buffers
,
6319 boost::asio::transfer_at_least(42),
6320 bindns::bind(async_read_handler
,
6321 _1
, _2
, 50, &called
));
6324 BOOST_ASIO_CHECK(called
);
6325 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
6327 s
.reset(read_data
, sizeof(read_data
));
6328 s
.next_read_length(10);
6329 memset(read_buf
, 0, sizeof(read_buf
));
6331 boost::asio::async_read_at(s
, 1234, buffers
,
6332 boost::asio::transfer_at_least(42),
6333 bindns::bind(async_read_handler
,
6334 _1
, _2
, 50, &called
));
6337 BOOST_ASIO_CHECK(called
);
6338 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
6340 s
.reset(read_data
, sizeof(read_data
));
6341 memset(read_buf
, 0, sizeof(read_buf
));
6343 boost::asio::async_read_at(s
, 0, buffers
,
6344 boost::asio::transfer_exactly(1),
6345 bindns::bind(async_read_handler
,
6346 _1
, _2
, 1, &called
));
6349 BOOST_ASIO_CHECK(called
);
6350 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6352 s
.reset(read_data
, sizeof(read_data
));
6353 memset(read_buf
, 0, sizeof(read_buf
));
6355 boost::asio::async_read_at(s
, 1234, buffers
,
6356 boost::asio::transfer_exactly(1),
6357 bindns::bind(async_read_handler
,
6358 _1
, _2
, 1, &called
));
6361 BOOST_ASIO_CHECK(called
);
6362 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6364 s
.reset(read_data
, sizeof(read_data
));
6365 s
.next_read_length(1);
6366 memset(read_buf
, 0, sizeof(read_buf
));
6368 boost::asio::async_read_at(s
, 0, buffers
,
6369 boost::asio::transfer_exactly(1),
6370 bindns::bind(async_read_handler
,
6371 _1
, _2
, 1, &called
));
6374 BOOST_ASIO_CHECK(called
);
6375 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6377 s
.reset(read_data
, sizeof(read_data
));
6378 s
.next_read_length(1);
6379 memset(read_buf
, 0, sizeof(read_buf
));
6381 boost::asio::async_read_at(s
, 1234, buffers
,
6382 boost::asio::transfer_exactly(1),
6383 bindns::bind(async_read_handler
,
6384 _1
, _2
, 1, &called
));
6387 BOOST_ASIO_CHECK(called
);
6388 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6390 s
.reset(read_data
, sizeof(read_data
));
6391 s
.next_read_length(10);
6392 memset(read_buf
, 0, sizeof(read_buf
));
6394 boost::asio::async_read_at(s
, 0, buffers
,
6395 boost::asio::transfer_exactly(1),
6396 bindns::bind(async_read_handler
,
6397 _1
, _2
, 1, &called
));
6400 BOOST_ASIO_CHECK(called
);
6401 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6403 s
.reset(read_data
, sizeof(read_data
));
6404 s
.next_read_length(10);
6405 memset(read_buf
, 0, sizeof(read_buf
));
6407 boost::asio::async_read_at(s
, 1234, buffers
,
6408 boost::asio::transfer_exactly(1),
6409 bindns::bind(async_read_handler
,
6410 _1
, _2
, 1, &called
));
6413 BOOST_ASIO_CHECK(called
);
6414 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6416 s
.reset(read_data
, sizeof(read_data
));
6417 memset(read_buf
, 0, sizeof(read_buf
));
6419 boost::asio::async_read_at(s
, 0, buffers
,
6420 boost::asio::transfer_exactly(10),
6421 bindns::bind(async_read_handler
,
6422 _1
, _2
, 10, &called
));
6425 BOOST_ASIO_CHECK(called
);
6426 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6428 s
.reset(read_data
, sizeof(read_data
));
6429 memset(read_buf
, 0, sizeof(read_buf
));
6431 boost::asio::async_read_at(s
, 1234, buffers
,
6432 boost::asio::transfer_exactly(10),
6433 bindns::bind(async_read_handler
,
6434 _1
, _2
, 10, &called
));
6437 BOOST_ASIO_CHECK(called
);
6438 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6440 s
.reset(read_data
, sizeof(read_data
));
6441 s
.next_read_length(1);
6442 memset(read_buf
, 0, sizeof(read_buf
));
6444 boost::asio::async_read_at(s
, 0, buffers
,
6445 boost::asio::transfer_exactly(10),
6446 bindns::bind(async_read_handler
,
6447 _1
, _2
, 10, &called
));
6450 BOOST_ASIO_CHECK(called
);
6451 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6453 s
.reset(read_data
, sizeof(read_data
));
6454 s
.next_read_length(1);
6455 memset(read_buf
, 0, sizeof(read_buf
));
6457 boost::asio::async_read_at(s
, 1234, buffers
,
6458 boost::asio::transfer_exactly(10),
6459 bindns::bind(async_read_handler
,
6460 _1
, _2
, 10, &called
));
6463 BOOST_ASIO_CHECK(called
);
6464 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6466 s
.reset(read_data
, sizeof(read_data
));
6467 s
.next_read_length(10);
6468 memset(read_buf
, 0, sizeof(read_buf
));
6470 boost::asio::async_read_at(s
, 0, buffers
,
6471 boost::asio::transfer_exactly(10),
6472 bindns::bind(async_read_handler
,
6473 _1
, _2
, 10, &called
));
6476 BOOST_ASIO_CHECK(called
);
6477 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6479 s
.reset(read_data
, sizeof(read_data
));
6480 s
.next_read_length(10);
6481 memset(read_buf
, 0, sizeof(read_buf
));
6483 boost::asio::async_read_at(s
, 1234, buffers
,
6484 boost::asio::transfer_exactly(10),
6485 bindns::bind(async_read_handler
,
6486 _1
, _2
, 10, &called
));
6489 BOOST_ASIO_CHECK(called
);
6490 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6492 s
.reset(read_data
, sizeof(read_data
));
6493 memset(read_buf
, 0, sizeof(read_buf
));
6495 boost::asio::async_read_at(s
, 0, buffers
,
6496 boost::asio::transfer_exactly(42),
6497 bindns::bind(async_read_handler
,
6498 _1
, _2
, 42, &called
));
6501 BOOST_ASIO_CHECK(called
);
6502 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6504 s
.reset(read_data
, sizeof(read_data
));
6505 memset(read_buf
, 0, sizeof(read_buf
));
6507 boost::asio::async_read_at(s
, 1234, buffers
,
6508 boost::asio::transfer_exactly(42),
6509 bindns::bind(async_read_handler
,
6510 _1
, _2
, 42, &called
));
6513 BOOST_ASIO_CHECK(called
);
6514 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6516 s
.reset(read_data
, sizeof(read_data
));
6517 s
.next_read_length(1);
6518 memset(read_buf
, 0, sizeof(read_buf
));
6520 boost::asio::async_read_at(s
, 0, buffers
,
6521 boost::asio::transfer_exactly(42),
6522 bindns::bind(async_read_handler
,
6523 _1
, _2
, 42, &called
));
6526 BOOST_ASIO_CHECK(called
);
6527 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6529 s
.reset(read_data
, sizeof(read_data
));
6530 s
.next_read_length(1);
6531 memset(read_buf
, 0, sizeof(read_buf
));
6533 boost::asio::async_read_at(s
, 1234, buffers
,
6534 boost::asio::transfer_exactly(42),
6535 bindns::bind(async_read_handler
,
6536 _1
, _2
, 42, &called
));
6539 BOOST_ASIO_CHECK(called
);
6540 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6542 s
.reset(read_data
, sizeof(read_data
));
6543 s
.next_read_length(10);
6544 memset(read_buf
, 0, sizeof(read_buf
));
6546 boost::asio::async_read_at(s
, 0, buffers
,
6547 boost::asio::transfer_exactly(42),
6548 bindns::bind(async_read_handler
,
6549 _1
, _2
, 42, &called
));
6552 BOOST_ASIO_CHECK(called
);
6553 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6555 s
.reset(read_data
, sizeof(read_data
));
6556 s
.next_read_length(10);
6557 memset(read_buf
, 0, sizeof(read_buf
));
6559 boost::asio::async_read_at(s
, 1234, buffers
,
6560 boost::asio::transfer_exactly(42),
6561 bindns::bind(async_read_handler
,
6562 _1
, _2
, 42, &called
));
6565 BOOST_ASIO_CHECK(called
);
6566 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6568 s
.reset(read_data
, sizeof(read_data
));
6569 memset(read_buf
, 0, sizeof(read_buf
));
6571 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
6572 bindns::bind(async_read_handler
,
6573 _1
, _2
, sizeof(read_data
), &called
));
6576 BOOST_ASIO_CHECK(called
);
6577 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6579 s
.reset(read_data
, sizeof(read_data
));
6580 memset(read_buf
, 0, sizeof(read_buf
));
6582 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
6583 bindns::bind(async_read_handler
,
6584 _1
, _2
, sizeof(read_data
), &called
));
6587 BOOST_ASIO_CHECK(called
);
6588 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6590 s
.reset(read_data
, sizeof(read_data
));
6591 s
.next_read_length(1);
6592 memset(read_buf
, 0, sizeof(read_buf
));
6594 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
6595 bindns::bind(async_read_handler
,
6596 _1
, _2
, sizeof(read_data
), &called
));
6599 BOOST_ASIO_CHECK(called
);
6600 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6602 s
.reset(read_data
, sizeof(read_data
));
6603 s
.next_read_length(1);
6604 memset(read_buf
, 0, sizeof(read_buf
));
6606 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
6607 bindns::bind(async_read_handler
,
6608 _1
, _2
, sizeof(read_data
), &called
));
6611 BOOST_ASIO_CHECK(called
);
6612 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6614 s
.reset(read_data
, sizeof(read_data
));
6615 s
.next_read_length(10);
6616 memset(read_buf
, 0, sizeof(read_buf
));
6618 boost::asio::async_read_at(s
, 0, buffers
, old_style_transfer_all
,
6619 bindns::bind(async_read_handler
,
6620 _1
, _2
, sizeof(read_data
), &called
));
6623 BOOST_ASIO_CHECK(called
);
6624 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6626 s
.reset(read_data
, sizeof(read_data
));
6627 s
.next_read_length(10);
6628 memset(read_buf
, 0, sizeof(read_buf
));
6630 boost::asio::async_read_at(s
, 1234, buffers
, old_style_transfer_all
,
6631 bindns::bind(async_read_handler
,
6632 _1
, _2
, sizeof(read_data
), &called
));
6635 BOOST_ASIO_CHECK(called
);
6636 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6638 s
.reset(read_data
, sizeof(read_data
));
6639 memset(read_buf
, 0, sizeof(read_buf
));
6641 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
6642 bindns::bind(async_read_handler
,
6643 _1
, _2
, sizeof(read_data
), &called
));
6646 BOOST_ASIO_CHECK(called
);
6647 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6649 s
.reset(read_data
, sizeof(read_data
));
6650 memset(read_buf
, 0, sizeof(read_buf
));
6652 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
6653 bindns::bind(async_read_handler
,
6654 _1
, _2
, sizeof(read_data
), &called
));
6657 BOOST_ASIO_CHECK(called
);
6658 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6660 s
.reset(read_data
, sizeof(read_data
));
6661 s
.next_read_length(1);
6662 memset(read_buf
, 0, sizeof(read_buf
));
6664 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
6665 bindns::bind(async_read_handler
,
6666 _1
, _2
, sizeof(read_data
), &called
));
6669 BOOST_ASIO_CHECK(called
);
6670 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6672 s
.reset(read_data
, sizeof(read_data
));
6673 s
.next_read_length(1);
6674 memset(read_buf
, 0, sizeof(read_buf
));
6676 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
6677 bindns::bind(async_read_handler
,
6678 _1
, _2
, sizeof(read_data
), &called
));
6681 BOOST_ASIO_CHECK(called
);
6682 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6684 s
.reset(read_data
, sizeof(read_data
));
6685 s
.next_read_length(10);
6686 memset(read_buf
, 0, sizeof(read_buf
));
6688 boost::asio::async_read_at(s
, 0, buffers
, short_transfer
,
6689 bindns::bind(async_read_handler
,
6690 _1
, _2
, sizeof(read_data
), &called
));
6693 BOOST_ASIO_CHECK(called
);
6694 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(read_data
)));
6696 s
.reset(read_data
, sizeof(read_data
));
6697 s
.next_read_length(10);
6698 memset(read_buf
, 0, sizeof(read_buf
));
6700 boost::asio::async_read_at(s
, 1234, buffers
, short_transfer
,
6701 bindns::bind(async_read_handler
,
6702 _1
, _2
, sizeof(read_data
), &called
));
6705 BOOST_ASIO_CHECK(called
);
6706 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6708 s
.reset(read_data
, sizeof(read_data
));
6709 memset(read_buf
, 0, sizeof(read_buf
));
6710 int i
= boost::asio::async_read_at(s
, 1234, buffers
,
6711 short_transfer
, archetypes::lazy_handler());
6712 BOOST_ASIO_CHECK(i
== 42);
6715 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(read_data
)));
6718 void test_5_arg_streambuf_async_read_at()
6720 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
6721 namespace bindns
= boost
;
6722 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
6723 namespace bindns
= std
;
6724 using std::placeholders::_1
;
6725 using std::placeholders::_2
;
6726 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
6728 boost::asio::io_context ioc
;
6729 test_random_access_device
s(ioc
);
6730 boost::asio::streambuf
sb(sizeof(read_data
));
6732 s
.reset(read_data
, sizeof(read_data
));
6733 sb
.consume(sb
.size());
6734 bool called
= false;
6735 boost::asio::async_read_at(s
, 0, sb
,
6736 boost::asio::transfer_all(),
6737 bindns::bind(async_read_handler
,
6738 _1
, _2
, sizeof(read_data
), &called
));
6741 BOOST_ASIO_CHECK(called
);
6742 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6743 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
6745 s
.reset(read_data
, sizeof(read_data
));
6746 sb
.consume(sb
.size());
6748 boost::asio::async_read_at(s
, 1234, sb
,
6749 boost::asio::transfer_all(),
6750 bindns::bind(async_read_handler
,
6751 _1
, _2
, sizeof(read_data
), &called
));
6754 BOOST_ASIO_CHECK(called
);
6755 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6756 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
6758 s
.reset(read_data
, sizeof(read_data
));
6759 s
.next_read_length(1);
6760 sb
.consume(sb
.size());
6762 boost::asio::async_read_at(s
, 0, sb
,
6763 boost::asio::transfer_all(),
6764 bindns::bind(async_read_handler
,
6765 _1
, _2
, sizeof(read_data
), &called
));
6768 BOOST_ASIO_CHECK(called
);
6769 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6770 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
6772 s
.reset(read_data
, sizeof(read_data
));
6773 s
.next_read_length(1);
6774 sb
.consume(sb
.size());
6776 boost::asio::async_read_at(s
, 1234, sb
,
6777 boost::asio::transfer_all(),
6778 bindns::bind(async_read_handler
,
6779 _1
, _2
, sizeof(read_data
), &called
));
6782 BOOST_ASIO_CHECK(called
);
6783 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6784 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
6786 s
.reset(read_data
, sizeof(read_data
));
6787 s
.next_read_length(10);
6788 sb
.consume(sb
.size());
6790 boost::asio::async_read_at(s
, 0, sb
,
6791 boost::asio::transfer_all(),
6792 bindns::bind(async_read_handler
,
6793 _1
, _2
, sizeof(read_data
), &called
));
6796 BOOST_ASIO_CHECK(called
);
6797 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6798 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
6800 s
.reset(read_data
, sizeof(read_data
));
6801 s
.next_read_length(10);
6802 sb
.consume(sb
.size());
6804 boost::asio::async_read_at(s
, 1234, sb
,
6805 boost::asio::transfer_all(),
6806 bindns::bind(async_read_handler
,
6807 _1
, _2
, sizeof(read_data
), &called
));
6810 BOOST_ASIO_CHECK(called
);
6811 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6812 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
6814 s
.reset(read_data
, sizeof(read_data
));
6815 sb
.consume(sb
.size());
6817 boost::asio::async_read_at(s
, 0, sb
,
6818 boost::asio::transfer_at_least(1),
6819 bindns::bind(async_read_handler
,
6820 _1
, _2
, sizeof(read_data
), &called
));
6823 BOOST_ASIO_CHECK(called
);
6824 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6825 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
6827 s
.reset(read_data
, sizeof(read_data
));
6828 sb
.consume(sb
.size());
6830 boost::asio::async_read_at(s
, 1234, sb
,
6831 boost::asio::transfer_at_least(1),
6832 bindns::bind(async_read_handler
,
6833 _1
, _2
, sizeof(read_data
), &called
));
6836 BOOST_ASIO_CHECK(called
);
6837 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6838 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
6840 s
.reset(read_data
, sizeof(read_data
));
6841 s
.next_read_length(1);
6842 sb
.consume(sb
.size());
6844 boost::asio::async_read_at(s
, 0, sb
,
6845 boost::asio::transfer_at_least(1),
6846 bindns::bind(async_read_handler
,
6847 _1
, _2
, 1, &called
));
6850 BOOST_ASIO_CHECK(called
);
6851 BOOST_ASIO_CHECK(sb
.size() == 1);
6852 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
6854 s
.reset(read_data
, sizeof(read_data
));
6855 s
.next_read_length(1);
6856 sb
.consume(sb
.size());
6858 boost::asio::async_read_at(s
, 1234, sb
,
6859 boost::asio::transfer_at_least(1),
6860 bindns::bind(async_read_handler
,
6861 _1
, _2
, 1, &called
));
6864 BOOST_ASIO_CHECK(called
);
6865 BOOST_ASIO_CHECK(sb
.size() == 1);
6866 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
6868 s
.reset(read_data
, sizeof(read_data
));
6869 s
.next_read_length(10);
6870 sb
.consume(sb
.size());
6872 boost::asio::async_read_at(s
, 0, sb
,
6873 boost::asio::transfer_at_least(1),
6874 bindns::bind(async_read_handler
,
6875 _1
, _2
, 10, &called
));
6878 BOOST_ASIO_CHECK(called
);
6879 BOOST_ASIO_CHECK(sb
.size() == 10);
6880 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
6882 s
.reset(read_data
, sizeof(read_data
));
6883 s
.next_read_length(10);
6884 sb
.consume(sb
.size());
6886 boost::asio::async_read_at(s
, 1234, sb
,
6887 boost::asio::transfer_at_least(1),
6888 bindns::bind(async_read_handler
,
6889 _1
, _2
, 10, &called
));
6892 BOOST_ASIO_CHECK(called
);
6893 BOOST_ASIO_CHECK(sb
.size() == 10);
6894 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
6896 s
.reset(read_data
, sizeof(read_data
));
6897 sb
.consume(sb
.size());
6899 boost::asio::async_read_at(s
, 0, sb
,
6900 boost::asio::transfer_at_least(10),
6901 bindns::bind(async_read_handler
,
6902 _1
, _2
, sizeof(read_data
), &called
));
6905 BOOST_ASIO_CHECK(called
);
6906 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6907 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
6909 s
.reset(read_data
, sizeof(read_data
));
6910 sb
.consume(sb
.size());
6912 boost::asio::async_read_at(s
, 1234, sb
,
6913 boost::asio::transfer_at_least(10),
6914 bindns::bind(async_read_handler
,
6915 _1
, _2
, sizeof(read_data
), &called
));
6918 BOOST_ASIO_CHECK(called
);
6919 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6920 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
6922 s
.reset(read_data
, sizeof(read_data
));
6923 s
.next_read_length(1);
6924 sb
.consume(sb
.size());
6926 boost::asio::async_read_at(s
, 0, sb
,
6927 boost::asio::transfer_at_least(10),
6928 bindns::bind(async_read_handler
,
6929 _1
, _2
, 10, &called
));
6932 BOOST_ASIO_CHECK(called
);
6933 BOOST_ASIO_CHECK(sb
.size() == 10);
6934 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
6936 s
.reset(read_data
, sizeof(read_data
));
6937 s
.next_read_length(1);
6938 sb
.consume(sb
.size());
6940 boost::asio::async_read_at(s
, 1234, sb
,
6941 boost::asio::transfer_at_least(10),
6942 bindns::bind(async_read_handler
,
6943 _1
, _2
, 10, &called
));
6946 BOOST_ASIO_CHECK(called
);
6947 BOOST_ASIO_CHECK(sb
.size() == 10);
6948 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
6950 s
.reset(read_data
, sizeof(read_data
));
6951 s
.next_read_length(10);
6952 sb
.consume(sb
.size());
6954 boost::asio::async_read_at(s
, 0, sb
,
6955 boost::asio::transfer_at_least(10),
6956 bindns::bind(async_read_handler
,
6957 _1
, _2
, 10, &called
));
6960 BOOST_ASIO_CHECK(called
);
6961 BOOST_ASIO_CHECK(sb
.size() == 10);
6962 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
6964 s
.reset(read_data
, sizeof(read_data
));
6965 s
.next_read_length(10);
6966 sb
.consume(sb
.size());
6968 boost::asio::async_read_at(s
, 1234, sb
,
6969 boost::asio::transfer_at_least(10),
6970 bindns::bind(async_read_handler
,
6971 _1
, _2
, 10, &called
));
6974 BOOST_ASIO_CHECK(called
);
6975 BOOST_ASIO_CHECK(sb
.size() == 10);
6976 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
6978 s
.reset(read_data
, sizeof(read_data
));
6979 sb
.consume(sb
.size());
6981 boost::asio::async_read_at(s
, 0, sb
,
6982 boost::asio::transfer_at_least(42),
6983 bindns::bind(async_read_handler
,
6984 _1
, _2
, sizeof(read_data
), &called
));
6987 BOOST_ASIO_CHECK(called
);
6988 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
6989 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
6991 s
.reset(read_data
, sizeof(read_data
));
6992 sb
.consume(sb
.size());
6994 boost::asio::async_read_at(s
, 1234, sb
,
6995 boost::asio::transfer_at_least(42),
6996 bindns::bind(async_read_handler
,
6997 _1
, _2
, sizeof(read_data
), &called
));
7000 BOOST_ASIO_CHECK(called
);
7001 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7002 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7004 s
.reset(read_data
, sizeof(read_data
));
7005 s
.next_read_length(1);
7006 sb
.consume(sb
.size());
7008 boost::asio::async_read_at(s
, 0, sb
,
7009 boost::asio::transfer_at_least(42),
7010 bindns::bind(async_read_handler
,
7011 _1
, _2
, 42, &called
));
7014 BOOST_ASIO_CHECK(called
);
7015 BOOST_ASIO_CHECK(sb
.size() == 42);
7016 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
7018 s
.reset(read_data
, sizeof(read_data
));
7019 s
.next_read_length(1);
7020 sb
.consume(sb
.size());
7022 boost::asio::async_read_at(s
, 1234, sb
,
7023 boost::asio::transfer_at_least(42),
7024 bindns::bind(async_read_handler
,
7025 _1
, _2
, 42, &called
));
7028 BOOST_ASIO_CHECK(called
);
7029 BOOST_ASIO_CHECK(sb
.size() == 42);
7030 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
7032 s
.reset(read_data
, sizeof(read_data
));
7033 s
.next_read_length(10);
7034 sb
.consume(sb
.size());
7036 boost::asio::async_read_at(s
, 0, sb
,
7037 boost::asio::transfer_at_least(42),
7038 bindns::bind(async_read_handler
,
7039 _1
, _2
, 50, &called
));
7042 BOOST_ASIO_CHECK(called
);
7043 BOOST_ASIO_CHECK(sb
.size() == 50);
7044 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 50));
7046 s
.reset(read_data
, sizeof(read_data
));
7047 s
.next_read_length(10);
7048 sb
.consume(sb
.size());
7050 boost::asio::async_read_at(s
, 1234, sb
,
7051 boost::asio::transfer_at_least(42),
7052 bindns::bind(async_read_handler
,
7053 _1
, _2
, 50, &called
));
7056 BOOST_ASIO_CHECK(called
);
7057 BOOST_ASIO_CHECK(sb
.size() == 50);
7058 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 50));
7060 s
.reset(read_data
, sizeof(read_data
));
7061 sb
.consume(sb
.size());
7063 boost::asio::async_read_at(s
, 0, sb
,
7064 boost::asio::transfer_exactly(1),
7065 bindns::bind(async_read_handler
,
7066 _1
, _2
, 1, &called
));
7069 BOOST_ASIO_CHECK(called
);
7070 BOOST_ASIO_CHECK(sb
.size() == 1);
7071 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
7073 s
.reset(read_data
, sizeof(read_data
));
7074 sb
.consume(sb
.size());
7076 boost::asio::async_read_at(s
, 1234, sb
,
7077 boost::asio::transfer_exactly(1),
7078 bindns::bind(async_read_handler
,
7079 _1
, _2
, 1, &called
));
7082 BOOST_ASIO_CHECK(called
);
7083 BOOST_ASIO_CHECK(sb
.size() == 1);
7084 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
7086 s
.reset(read_data
, sizeof(read_data
));
7087 s
.next_read_length(1);
7088 sb
.consume(sb
.size());
7090 boost::asio::async_read_at(s
, 0, sb
,
7091 boost::asio::transfer_exactly(1),
7092 bindns::bind(async_read_handler
,
7093 _1
, _2
, 1, &called
));
7096 BOOST_ASIO_CHECK(called
);
7097 BOOST_ASIO_CHECK(sb
.size() == 1);
7098 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
7100 s
.reset(read_data
, sizeof(read_data
));
7101 s
.next_read_length(1);
7102 sb
.consume(sb
.size());
7104 boost::asio::async_read_at(s
, 1234, sb
,
7105 boost::asio::transfer_exactly(1),
7106 bindns::bind(async_read_handler
,
7107 _1
, _2
, 1, &called
));
7110 BOOST_ASIO_CHECK(called
);
7111 BOOST_ASIO_CHECK(sb
.size() == 1);
7112 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
7114 s
.reset(read_data
, sizeof(read_data
));
7115 s
.next_read_length(10);
7116 sb
.consume(sb
.size());
7118 boost::asio::async_read_at(s
, 0, sb
,
7119 boost::asio::transfer_exactly(1),
7120 bindns::bind(async_read_handler
,
7121 _1
, _2
, 1, &called
));
7124 BOOST_ASIO_CHECK(called
);
7125 BOOST_ASIO_CHECK(sb
.size() == 1);
7126 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 1));
7128 s
.reset(read_data
, sizeof(read_data
));
7129 s
.next_read_length(10);
7130 sb
.consume(sb
.size());
7132 boost::asio::async_read_at(s
, 1234, sb
,
7133 boost::asio::transfer_exactly(1),
7134 bindns::bind(async_read_handler
,
7135 _1
, _2
, 1, &called
));
7138 BOOST_ASIO_CHECK(called
);
7139 BOOST_ASIO_CHECK(sb
.size() == 1);
7140 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 1));
7142 s
.reset(read_data
, sizeof(read_data
));
7143 sb
.consume(sb
.size());
7145 boost::asio::async_read_at(s
, 0, sb
,
7146 boost::asio::transfer_exactly(10),
7147 bindns::bind(async_read_handler
,
7148 _1
, _2
, 10, &called
));
7151 BOOST_ASIO_CHECK(called
);
7152 BOOST_ASIO_CHECK(sb
.size() == 10);
7153 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
7155 s
.reset(read_data
, sizeof(read_data
));
7156 sb
.consume(sb
.size());
7158 boost::asio::async_read_at(s
, 1234, sb
,
7159 boost::asio::transfer_exactly(10),
7160 bindns::bind(async_read_handler
,
7161 _1
, _2
, 10, &called
));
7164 BOOST_ASIO_CHECK(called
);
7165 BOOST_ASIO_CHECK(sb
.size() == 10);
7166 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
7168 s
.reset(read_data
, sizeof(read_data
));
7169 s
.next_read_length(1);
7170 sb
.consume(sb
.size());
7172 boost::asio::async_read_at(s
, 0, sb
,
7173 boost::asio::transfer_exactly(10),
7174 bindns::bind(async_read_handler
,
7175 _1
, _2
, 10, &called
));
7178 BOOST_ASIO_CHECK(called
);
7179 BOOST_ASIO_CHECK(sb
.size() == 10);
7180 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
7182 s
.reset(read_data
, sizeof(read_data
));
7183 s
.next_read_length(1);
7184 sb
.consume(sb
.size());
7186 boost::asio::async_read_at(s
, 1234, sb
,
7187 boost::asio::transfer_exactly(10),
7188 bindns::bind(async_read_handler
,
7189 _1
, _2
, 10, &called
));
7192 BOOST_ASIO_CHECK(called
);
7193 BOOST_ASIO_CHECK(sb
.size() == 10);
7194 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
7196 s
.reset(read_data
, sizeof(read_data
));
7197 s
.next_read_length(10);
7198 sb
.consume(sb
.size());
7200 boost::asio::async_read_at(s
, 0, sb
,
7201 boost::asio::transfer_exactly(10),
7202 bindns::bind(async_read_handler
,
7203 _1
, _2
, 10, &called
));
7206 BOOST_ASIO_CHECK(called
);
7207 BOOST_ASIO_CHECK(sb
.size() == 10);
7208 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 10));
7210 s
.reset(read_data
, sizeof(read_data
));
7211 s
.next_read_length(10);
7212 sb
.consume(sb
.size());
7214 boost::asio::async_read_at(s
, 1234, sb
,
7215 boost::asio::transfer_exactly(10),
7216 bindns::bind(async_read_handler
,
7217 _1
, _2
, 10, &called
));
7220 BOOST_ASIO_CHECK(called
);
7221 BOOST_ASIO_CHECK(sb
.size() == 10);
7222 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 10));
7224 s
.reset(read_data
, sizeof(read_data
));
7225 sb
.consume(sb
.size());
7227 boost::asio::async_read_at(s
, 0, sb
,
7228 boost::asio::transfer_exactly(42),
7229 bindns::bind(async_read_handler
,
7230 _1
, _2
, 42, &called
));
7233 BOOST_ASIO_CHECK(called
);
7234 BOOST_ASIO_CHECK(sb
.size() == 42);
7235 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
7237 s
.reset(read_data
, sizeof(read_data
));
7238 sb
.consume(sb
.size());
7240 boost::asio::async_read_at(s
, 1234, sb
,
7241 boost::asio::transfer_exactly(42),
7242 bindns::bind(async_read_handler
,
7243 _1
, _2
, 42, &called
));
7246 BOOST_ASIO_CHECK(called
);
7247 BOOST_ASIO_CHECK(sb
.size() == 42);
7248 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
7250 s
.reset(read_data
, sizeof(read_data
));
7251 s
.next_read_length(1);
7252 sb
.consume(sb
.size());
7254 boost::asio::async_read_at(s
, 0, sb
,
7255 boost::asio::transfer_exactly(42),
7256 bindns::bind(async_read_handler
,
7257 _1
, _2
, 42, &called
));
7260 BOOST_ASIO_CHECK(called
);
7261 BOOST_ASIO_CHECK(sb
.size() == 42);
7262 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
7264 s
.reset(read_data
, sizeof(read_data
));
7265 s
.next_read_length(1);
7266 sb
.consume(sb
.size());
7268 boost::asio::async_read_at(s
, 1234, sb
,
7269 boost::asio::transfer_exactly(42),
7270 bindns::bind(async_read_handler
,
7271 _1
, _2
, 42, &called
));
7274 BOOST_ASIO_CHECK(called
);
7275 BOOST_ASIO_CHECK(sb
.size() == 42);
7276 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
7278 s
.reset(read_data
, sizeof(read_data
));
7279 s
.next_read_length(10);
7280 sb
.consume(sb
.size());
7282 boost::asio::async_read_at(s
, 0, sb
,
7283 boost::asio::transfer_exactly(42),
7284 bindns::bind(async_read_handler
,
7285 _1
, _2
, 42, &called
));
7288 BOOST_ASIO_CHECK(called
);
7289 BOOST_ASIO_CHECK(sb
.size() == 42);
7290 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), 42));
7292 s
.reset(read_data
, sizeof(read_data
));
7293 s
.next_read_length(10);
7294 sb
.consume(sb
.size());
7296 boost::asio::async_read_at(s
, 1234, sb
,
7297 boost::asio::transfer_exactly(42),
7298 bindns::bind(async_read_handler
,
7299 _1
, _2
, 42, &called
));
7302 BOOST_ASIO_CHECK(called
);
7303 BOOST_ASIO_CHECK(sb
.size() == 42);
7304 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), 42));
7306 s
.reset(read_data
, sizeof(read_data
));
7307 sb
.consume(sb
.size());
7309 boost::asio::async_read_at(s
, 0, sb
, old_style_transfer_all
,
7310 bindns::bind(async_read_handler
,
7311 _1
, _2
, sizeof(read_data
), &called
));
7314 BOOST_ASIO_CHECK(called
);
7315 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7316 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
7318 s
.reset(read_data
, sizeof(read_data
));
7319 sb
.consume(sb
.size());
7321 boost::asio::async_read_at(s
, 1234, sb
, old_style_transfer_all
,
7322 bindns::bind(async_read_handler
,
7323 _1
, _2
, sizeof(read_data
), &called
));
7326 BOOST_ASIO_CHECK(called
);
7327 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7328 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7330 s
.reset(read_data
, sizeof(read_data
));
7331 s
.next_read_length(1);
7332 sb
.consume(sb
.size());
7334 boost::asio::async_read_at(s
, 0, sb
, old_style_transfer_all
,
7335 bindns::bind(async_read_handler
,
7336 _1
, _2
, sizeof(read_data
), &called
));
7339 BOOST_ASIO_CHECK(called
);
7340 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7341 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
7343 s
.reset(read_data
, sizeof(read_data
));
7344 s
.next_read_length(1);
7345 sb
.consume(sb
.size());
7347 boost::asio::async_read_at(s
, 1234, sb
, old_style_transfer_all
,
7348 bindns::bind(async_read_handler
,
7349 _1
, _2
, sizeof(read_data
), &called
));
7352 BOOST_ASIO_CHECK(called
);
7353 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7354 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7356 s
.reset(read_data
, sizeof(read_data
));
7357 s
.next_read_length(10);
7358 sb
.consume(sb
.size());
7360 boost::asio::async_read_at(s
, 0, sb
, old_style_transfer_all
,
7361 bindns::bind(async_read_handler
,
7362 _1
, _2
, sizeof(read_data
), &called
));
7365 BOOST_ASIO_CHECK(called
);
7366 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7367 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
7369 s
.reset(read_data
, sizeof(read_data
));
7370 s
.next_read_length(10);
7371 sb
.consume(sb
.size());
7373 boost::asio::async_read_at(s
, 1234, sb
, old_style_transfer_all
,
7374 bindns::bind(async_read_handler
,
7375 _1
, _2
, sizeof(read_data
), &called
));
7378 BOOST_ASIO_CHECK(called
);
7379 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7380 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7382 s
.reset(read_data
, sizeof(read_data
));
7383 sb
.consume(sb
.size());
7385 boost::asio::async_read_at(s
, 0, sb
, short_transfer
,
7386 bindns::bind(async_read_handler
,
7387 _1
, _2
, sizeof(read_data
), &called
));
7390 BOOST_ASIO_CHECK(called
);
7391 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7392 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
7394 s
.reset(read_data
, sizeof(read_data
));
7395 sb
.consume(sb
.size());
7397 boost::asio::async_read_at(s
, 1234, sb
, short_transfer
,
7398 bindns::bind(async_read_handler
,
7399 _1
, _2
, sizeof(read_data
), &called
));
7402 BOOST_ASIO_CHECK(called
);
7403 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7404 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7406 s
.reset(read_data
, sizeof(read_data
));
7407 s
.next_read_length(1);
7408 sb
.consume(sb
.size());
7410 boost::asio::async_read_at(s
, 0, sb
, short_transfer
,
7411 bindns::bind(async_read_handler
,
7412 _1
, _2
, sizeof(read_data
), &called
));
7415 BOOST_ASIO_CHECK(called
);
7416 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7417 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
7419 s
.reset(read_data
, sizeof(read_data
));
7420 s
.next_read_length(1);
7421 sb
.consume(sb
.size());
7423 boost::asio::async_read_at(s
, 1234, sb
, short_transfer
,
7424 bindns::bind(async_read_handler
,
7425 _1
, _2
, sizeof(read_data
), &called
));
7428 BOOST_ASIO_CHECK(called
);
7429 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7430 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7432 s
.reset(read_data
, sizeof(read_data
));
7433 s
.next_read_length(10);
7434 sb
.consume(sb
.size());
7436 boost::asio::async_read_at(s
, 0, sb
, short_transfer
,
7437 bindns::bind(async_read_handler
,
7438 _1
, _2
, sizeof(read_data
), &called
));
7441 BOOST_ASIO_CHECK(called
);
7442 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7443 BOOST_ASIO_CHECK(s
.check_buffers(0, sb
.data(), sizeof(read_data
)));
7445 s
.reset(read_data
, sizeof(read_data
));
7446 s
.next_read_length(10);
7447 sb
.consume(sb
.size());
7449 boost::asio::async_read_at(s
, 1234, sb
, short_transfer
,
7450 bindns::bind(async_read_handler
,
7451 _1
, _2
, sizeof(read_data
), &called
));
7454 BOOST_ASIO_CHECK(called
);
7455 BOOST_ASIO_CHECK(sb
.size() == sizeof(read_data
));
7456 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7458 s
.reset(read_data
, sizeof(read_data
));
7459 sb
.consume(sb
.size());
7460 int i
= boost::asio::async_read_at(s
, 1234, sb
,
7461 short_transfer
, archetypes::lazy_handler());
7462 BOOST_ASIO_CHECK(i
== 42);
7465 BOOST_ASIO_CHECK(s
.check_buffers(1234, sb
.data(), sizeof(read_data
)));
7468 BOOST_ASIO_TEST_SUITE
7471 BOOST_ASIO_TEST_CASE(test_3_arg_mutable_buffer_read_at
)
7472 BOOST_ASIO_TEST_CASE(test_3_arg_vector_buffers_read_at
)
7473 BOOST_ASIO_TEST_CASE(test_3_arg_streambuf_read_at
)
7474 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_mutable_buffer_read_at
)
7475 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_vector_buffers_read_at
)
7476 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_streambuf_read_at
)
7477 BOOST_ASIO_TEST_CASE(test_4_arg_mutable_buffer_read_at
)
7478 BOOST_ASIO_TEST_CASE(test_4_arg_vector_buffers_read_at
)
7479 BOOST_ASIO_TEST_CASE(test_4_arg_streambuf_read_at
)
7480 BOOST_ASIO_TEST_CASE(test_5_arg_mutable_buffer_read_at
)
7481 BOOST_ASIO_TEST_CASE(test_5_arg_vector_buffers_read_at
)
7482 BOOST_ASIO_TEST_CASE(test_5_arg_streambuf_read_at
)
7483 BOOST_ASIO_TEST_CASE(test_4_arg_mutable_buffer_async_read_at
)
7484 BOOST_ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_read_at
)
7485 BOOST_ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_read_at
)
7486 BOOST_ASIO_TEST_CASE(test_4_arg_vector_buffers_async_read_at
)
7487 BOOST_ASIO_TEST_CASE(test_4_arg_streambuf_async_read_at
)
7488 BOOST_ASIO_TEST_CASE(test_5_arg_mutable_buffer_async_read_at
)
7489 BOOST_ASIO_TEST_CASE(test_5_arg_boost_array_buffers_async_read_at
)
7490 BOOST_ASIO_TEST_CASE(test_5_arg_std_array_buffers_async_read_at
)
7491 BOOST_ASIO_TEST_CASE(test_5_arg_vector_buffers_async_read_at
)
7492 BOOST_ASIO_TEST_CASE(test_5_arg_streambuf_async_read_at
)