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/write_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
),
50 next_write_length_(max_length
)
52 memset(data_
, 0, max_length
);
55 executor_type
get_executor() BOOST_ASIO_NOEXCEPT
57 return io_context_
.get_executor();
62 memset(data_
, 0, max_length
);
63 next_write_length_
= max_length
;
66 void next_write_length(size_t length
)
68 next_write_length_
= length
;
71 template <typename Iterator
>
72 bool check_buffers(boost::asio::uint64_t offset
,
73 Iterator begin
, Iterator end
, size_t length
)
75 if (offset
+ length
> max_length
)
78 Iterator iter
= begin
;
79 size_t checked_length
= 0;
80 for (; iter
!= end
&& checked_length
< length
; ++iter
)
82 size_t buffer_length
= boost::asio::buffer_size(*iter
);
83 if (buffer_length
> length
- checked_length
)
84 buffer_length
= length
- checked_length
;
85 if (memcmp(data_
+ offset
+ checked_length
,
86 iter
->data(), buffer_length
) != 0)
88 checked_length
+= buffer_length
;
94 template <typename Const_Buffers
>
95 bool check_buffers(boost::asio::uint64_t offset
,
96 const Const_Buffers
& buffers
, size_t length
)
98 return check_buffers(offset
, boost::asio::buffer_sequence_begin(buffers
),
99 boost::asio::buffer_sequence_end(buffers
), length
);
102 template <typename Const_Buffers
>
103 size_t write_some_at(boost::asio::uint64_t offset
,
104 const Const_Buffers
& buffers
)
106 return boost::asio::buffer_copy(
107 boost::asio::buffer(data_
, length_
) + offset
,
108 buffers
, next_write_length_
);
111 template <typename Const_Buffers
>
112 size_t write_some_at(boost::asio::uint64_t offset
,
113 const Const_Buffers
& buffers
, boost::system::error_code
& ec
)
115 ec
= boost::system::error_code();
116 return write_some_at(offset
, buffers
);
119 template <typename Const_Buffers
, typename Handler
>
120 void async_write_some_at(boost::asio::uint64_t offset
,
121 const Const_Buffers
& buffers
, Handler handler
)
123 size_t bytes_transferred
= write_some_at(offset
, buffers
);
124 boost::asio::post(get_executor(),
125 boost::asio::detail::bind_handler(
126 BOOST_ASIO_MOVE_CAST(Handler
)(handler
),
127 boost::system::error_code(), bytes_transferred
));
131 boost::asio::io_context
& io_context_
;
132 enum { max_length
= 8192 };
133 char data_
[max_length
];
135 size_t next_write_length_
;
138 static const char write_data
[]
139 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
140 static char mutable_write_data
[]
141 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
143 void test_3_arg_const_buffer_write_at()
145 boost::asio::io_context ioc
;
146 test_random_access_device
s(ioc
);
147 boost::asio::const_buffer buffers
148 = boost::asio::buffer(write_data
, sizeof(write_data
));
151 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
152 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
153 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
156 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
157 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
158 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
161 s
.next_write_length(1);
162 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
163 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
164 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
167 s
.next_write_length(1);
168 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
169 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
170 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
173 s
.next_write_length(10);
174 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
175 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
176 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
179 s
.next_write_length(10);
180 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
181 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
182 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
185 void test_3_arg_mutable_buffer_write_at()
187 boost::asio::io_context ioc
;
188 test_random_access_device
s(ioc
);
189 boost::asio::mutable_buffer buffers
190 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
193 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
194 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
195 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
198 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
199 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
200 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
203 s
.next_write_length(1);
204 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
205 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
206 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
209 s
.next_write_length(1);
210 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
211 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
212 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
215 s
.next_write_length(10);
216 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
217 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
218 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
221 s
.next_write_length(10);
222 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
223 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
224 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
227 void test_3_arg_vector_buffers_write_at()
229 boost::asio::io_context ioc
;
230 test_random_access_device
s(ioc
);
231 std::vector
<boost::asio::const_buffer
> buffers
;
232 buffers
.push_back(boost::asio::buffer(write_data
, 32));
233 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
236 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
237 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
238 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
241 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
242 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
243 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
246 s
.next_write_length(1);
247 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
248 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
249 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
252 s
.next_write_length(1);
253 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
254 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
255 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
258 s
.next_write_length(10);
259 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
);
260 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
261 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
264 s
.next_write_length(10);
265 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
);
266 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
267 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
270 void test_4_arg_nothrow_const_buffer_write_at()
272 boost::asio::io_context ioc
;
273 test_random_access_device
s(ioc
);
274 boost::asio::const_buffer buffers
275 = boost::asio::buffer(write_data
, sizeof(write_data
));
278 boost::system::error_code error
;
279 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
280 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
281 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
282 BOOST_ASIO_CHECK(!error
);
285 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
286 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
287 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
288 BOOST_ASIO_CHECK(!error
);
291 s
.next_write_length(1);
292 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
293 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
294 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
295 BOOST_ASIO_CHECK(!error
);
298 s
.next_write_length(1);
299 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
300 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
301 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
302 BOOST_ASIO_CHECK(!error
);
305 s
.next_write_length(10);
306 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
307 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
308 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
309 BOOST_ASIO_CHECK(!error
);
312 s
.next_write_length(10);
313 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
314 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
315 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
316 BOOST_ASIO_CHECK(!error
);
319 void test_4_arg_nothrow_mutable_buffer_write_at()
321 boost::asio::io_context ioc
;
322 test_random_access_device
s(ioc
);
323 boost::asio::mutable_buffer buffers
324 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
327 boost::system::error_code error
;
328 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
329 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
330 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
331 BOOST_ASIO_CHECK(!error
);
334 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
335 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
336 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
337 BOOST_ASIO_CHECK(!error
);
340 s
.next_write_length(1);
341 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
342 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
343 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
344 BOOST_ASIO_CHECK(!error
);
347 s
.next_write_length(1);
348 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
349 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
350 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
351 BOOST_ASIO_CHECK(!error
);
354 s
.next_write_length(10);
355 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
356 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
357 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
358 BOOST_ASIO_CHECK(!error
);
361 s
.next_write_length(10);
362 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
363 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
364 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
365 BOOST_ASIO_CHECK(!error
);
368 void test_4_arg_nothrow_vector_buffers_write_at()
370 boost::asio::io_context ioc
;
371 test_random_access_device
s(ioc
);
372 std::vector
<boost::asio::const_buffer
> buffers
;
373 buffers
.push_back(boost::asio::buffer(write_data
, 32));
374 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
377 boost::system::error_code error
;
378 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
379 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
380 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
381 BOOST_ASIO_CHECK(!error
);
384 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
385 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
386 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
387 BOOST_ASIO_CHECK(!error
);
390 s
.next_write_length(1);
391 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
392 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
393 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
394 BOOST_ASIO_CHECK(!error
);
397 s
.next_write_length(1);
398 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
399 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
400 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
401 BOOST_ASIO_CHECK(!error
);
404 s
.next_write_length(10);
405 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, error
);
406 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
407 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
408 BOOST_ASIO_CHECK(!error
);
411 s
.next_write_length(10);
412 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, error
);
413 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
414 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
415 BOOST_ASIO_CHECK(!error
);
418 bool old_style_transfer_all(const boost::system::error_code
& ec
,
419 size_t /*bytes_transferred*/)
424 size_t short_transfer(const boost::system::error_code
& ec
,
425 size_t /*bytes_transferred*/)
430 void test_4_arg_const_buffer_write_at()
432 boost::asio::io_context ioc
;
433 test_random_access_device
s(ioc
);
434 boost::asio::const_buffer buffers
435 = boost::asio::buffer(write_data
, sizeof(write_data
));
438 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
439 boost::asio::transfer_all());
440 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
441 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
444 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
445 boost::asio::transfer_all());
446 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
447 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
450 s
.next_write_length(1);
451 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
452 boost::asio::transfer_all());
453 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
454 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
457 s
.next_write_length(1);
458 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
459 boost::asio::transfer_all());
460 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
461 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
464 s
.next_write_length(10);
465 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
466 boost::asio::transfer_all());
467 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
468 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
471 s
.next_write_length(10);
472 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
473 boost::asio::transfer_all());
474 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
475 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
478 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
479 boost::asio::transfer_at_least(1));
480 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
481 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
484 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
485 boost::asio::transfer_at_least(1));
486 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
487 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
490 s
.next_write_length(1);
491 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
492 boost::asio::transfer_at_least(1));
493 BOOST_ASIO_CHECK(bytes_transferred
== 1);
494 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
497 s
.next_write_length(1);
498 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
499 boost::asio::transfer_at_least(1));
500 BOOST_ASIO_CHECK(bytes_transferred
== 1);
501 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
504 s
.next_write_length(10);
505 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
506 boost::asio::transfer_at_least(1));
507 BOOST_ASIO_CHECK(bytes_transferred
== 10);
508 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
511 s
.next_write_length(10);
512 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
513 boost::asio::transfer_at_least(1));
514 BOOST_ASIO_CHECK(bytes_transferred
== 10);
515 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
518 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
519 boost::asio::transfer_at_least(10));
520 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
521 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
524 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
525 boost::asio::transfer_at_least(10));
526 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
527 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
530 s
.next_write_length(1);
531 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
532 boost::asio::transfer_at_least(10));
533 BOOST_ASIO_CHECK(bytes_transferred
== 10);
534 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
537 s
.next_write_length(1);
538 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
539 boost::asio::transfer_at_least(10));
540 BOOST_ASIO_CHECK(bytes_transferred
== 10);
541 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
544 s
.next_write_length(10);
545 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
546 boost::asio::transfer_at_least(10));
547 BOOST_ASIO_CHECK(bytes_transferred
== 10);
548 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
551 s
.next_write_length(10);
552 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
553 boost::asio::transfer_at_least(10));
554 BOOST_ASIO_CHECK(bytes_transferred
== 10);
555 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
558 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
559 boost::asio::transfer_at_least(42));
560 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
561 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
564 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
565 boost::asio::transfer_at_least(42));
566 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
567 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
570 s
.next_write_length(1);
571 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
572 boost::asio::transfer_at_least(42));
573 BOOST_ASIO_CHECK(bytes_transferred
== 42);
574 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
577 s
.next_write_length(1);
578 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
579 boost::asio::transfer_at_least(42));
580 BOOST_ASIO_CHECK(bytes_transferred
== 42);
581 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
584 s
.next_write_length(10);
585 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
586 boost::asio::transfer_at_least(42));
587 BOOST_ASIO_CHECK(bytes_transferred
== 50);
588 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
591 s
.next_write_length(10);
592 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
593 boost::asio::transfer_at_least(42));
594 BOOST_ASIO_CHECK(bytes_transferred
== 50);
595 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
598 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
599 boost::asio::transfer_exactly(1));
600 BOOST_ASIO_CHECK(bytes_transferred
== 1);
601 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
604 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
605 boost::asio::transfer_exactly(1));
606 BOOST_ASIO_CHECK(bytes_transferred
== 1);
607 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
610 s
.next_write_length(1);
611 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
612 boost::asio::transfer_exactly(1));
613 BOOST_ASIO_CHECK(bytes_transferred
== 1);
614 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
617 s
.next_write_length(1);
618 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
619 boost::asio::transfer_exactly(1));
620 BOOST_ASIO_CHECK(bytes_transferred
== 1);
621 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
624 s
.next_write_length(10);
625 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
626 boost::asio::transfer_exactly(1));
627 BOOST_ASIO_CHECK(bytes_transferred
== 1);
628 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
631 s
.next_write_length(10);
632 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
633 boost::asio::transfer_exactly(1));
634 BOOST_ASIO_CHECK(bytes_transferred
== 1);
635 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
638 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
639 boost::asio::transfer_exactly(10));
640 BOOST_ASIO_CHECK(bytes_transferred
== 10);
641 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
644 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
645 boost::asio::transfer_exactly(10));
646 BOOST_ASIO_CHECK(bytes_transferred
== 10);
647 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
650 s
.next_write_length(1);
651 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
652 boost::asio::transfer_exactly(10));
653 BOOST_ASIO_CHECK(bytes_transferred
== 10);
654 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
657 s
.next_write_length(1);
658 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
659 boost::asio::transfer_exactly(10));
660 BOOST_ASIO_CHECK(bytes_transferred
== 10);
661 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
664 s
.next_write_length(10);
665 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
666 boost::asio::transfer_exactly(10));
667 BOOST_ASIO_CHECK(bytes_transferred
== 10);
668 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
671 s
.next_write_length(10);
672 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
673 boost::asio::transfer_exactly(10));
674 BOOST_ASIO_CHECK(bytes_transferred
== 10);
675 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
678 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
679 boost::asio::transfer_exactly(42));
680 BOOST_ASIO_CHECK(bytes_transferred
== 42);
681 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
684 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
685 boost::asio::transfer_exactly(42));
686 BOOST_ASIO_CHECK(bytes_transferred
== 42);
687 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
690 s
.next_write_length(1);
691 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
692 boost::asio::transfer_exactly(42));
693 BOOST_ASIO_CHECK(bytes_transferred
== 42);
694 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
697 s
.next_write_length(1);
698 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
699 boost::asio::transfer_exactly(42));
700 BOOST_ASIO_CHECK(bytes_transferred
== 42);
701 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
704 s
.next_write_length(10);
705 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
706 boost::asio::transfer_exactly(42));
707 BOOST_ASIO_CHECK(bytes_transferred
== 42);
708 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
711 s
.next_write_length(10);
712 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
713 boost::asio::transfer_exactly(42));
714 BOOST_ASIO_CHECK(bytes_transferred
== 42);
715 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
718 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
719 old_style_transfer_all
);
720 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
721 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
724 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
725 old_style_transfer_all
);
726 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
727 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
730 s
.next_write_length(1);
731 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
732 old_style_transfer_all
);
733 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
734 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
737 s
.next_write_length(1);
738 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
739 old_style_transfer_all
);
740 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
741 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
744 s
.next_write_length(10);
745 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
746 old_style_transfer_all
);
747 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
748 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
751 s
.next_write_length(10);
752 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
753 old_style_transfer_all
);
754 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
755 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
758 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
759 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
760 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
763 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
764 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
765 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
768 s
.next_write_length(1);
769 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
770 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
771 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
774 s
.next_write_length(1);
775 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
776 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
777 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
780 s
.next_write_length(10);
781 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
782 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
783 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
786 s
.next_write_length(10);
787 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
788 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
789 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
792 void test_4_arg_mutable_buffer_write_at()
794 boost::asio::io_context ioc
;
795 test_random_access_device
s(ioc
);
796 boost::asio::mutable_buffer buffers
797 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
800 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
801 boost::asio::transfer_all());
802 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
803 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
806 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
807 boost::asio::transfer_all());
808 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
809 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
812 s
.next_write_length(1);
813 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
814 boost::asio::transfer_all());
815 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
816 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
819 s
.next_write_length(1);
820 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
821 boost::asio::transfer_all());
822 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
823 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
826 s
.next_write_length(10);
827 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
828 boost::asio::transfer_all());
829 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
830 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
833 s
.next_write_length(10);
834 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
835 boost::asio::transfer_all());
836 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
837 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
840 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
841 boost::asio::transfer_at_least(1));
842 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
843 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
846 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
847 boost::asio::transfer_at_least(1));
848 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
849 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
852 s
.next_write_length(1);
853 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
854 boost::asio::transfer_at_least(1));
855 BOOST_ASIO_CHECK(bytes_transferred
== 1);
856 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
859 s
.next_write_length(1);
860 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
861 boost::asio::transfer_at_least(1));
862 BOOST_ASIO_CHECK(bytes_transferred
== 1);
863 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
866 s
.next_write_length(10);
867 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
868 boost::asio::transfer_at_least(1));
869 BOOST_ASIO_CHECK(bytes_transferred
== 10);
870 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
873 s
.next_write_length(10);
874 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
875 boost::asio::transfer_at_least(1));
876 BOOST_ASIO_CHECK(bytes_transferred
== 10);
877 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
880 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
881 boost::asio::transfer_at_least(10));
882 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
883 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
886 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
887 boost::asio::transfer_at_least(10));
888 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
889 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
892 s
.next_write_length(1);
893 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
894 boost::asio::transfer_at_least(10));
895 BOOST_ASIO_CHECK(bytes_transferred
== 10);
896 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
899 s
.next_write_length(1);
900 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
901 boost::asio::transfer_at_least(10));
902 BOOST_ASIO_CHECK(bytes_transferred
== 10);
903 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
906 s
.next_write_length(10);
907 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
908 boost::asio::transfer_at_least(10));
909 BOOST_ASIO_CHECK(bytes_transferred
== 10);
910 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
913 s
.next_write_length(10);
914 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
915 boost::asio::transfer_at_least(10));
916 BOOST_ASIO_CHECK(bytes_transferred
== 10);
917 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
920 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
921 boost::asio::transfer_at_least(42));
922 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
923 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
926 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
927 boost::asio::transfer_at_least(42));
928 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
929 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
932 s
.next_write_length(1);
933 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
934 boost::asio::transfer_at_least(42));
935 BOOST_ASIO_CHECK(bytes_transferred
== 42);
936 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
939 s
.next_write_length(1);
940 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
941 boost::asio::transfer_at_least(42));
942 BOOST_ASIO_CHECK(bytes_transferred
== 42);
943 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
946 s
.next_write_length(10);
947 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
948 boost::asio::transfer_at_least(42));
949 BOOST_ASIO_CHECK(bytes_transferred
== 50);
950 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
953 s
.next_write_length(10);
954 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
955 boost::asio::transfer_at_least(42));
956 BOOST_ASIO_CHECK(bytes_transferred
== 50);
957 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
960 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
961 boost::asio::transfer_exactly(1));
962 BOOST_ASIO_CHECK(bytes_transferred
== 1);
963 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
966 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
967 boost::asio::transfer_exactly(1));
968 BOOST_ASIO_CHECK(bytes_transferred
== 1);
969 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
972 s
.next_write_length(1);
973 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
974 boost::asio::transfer_exactly(1));
975 BOOST_ASIO_CHECK(bytes_transferred
== 1);
976 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
979 s
.next_write_length(1);
980 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
981 boost::asio::transfer_exactly(1));
982 BOOST_ASIO_CHECK(bytes_transferred
== 1);
983 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
986 s
.next_write_length(10);
987 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
988 boost::asio::transfer_exactly(1));
989 BOOST_ASIO_CHECK(bytes_transferred
== 1);
990 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
993 s
.next_write_length(10);
994 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
995 boost::asio::transfer_exactly(1));
996 BOOST_ASIO_CHECK(bytes_transferred
== 1);
997 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1000 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1001 boost::asio::transfer_exactly(10));
1002 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1003 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1006 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1007 boost::asio::transfer_exactly(10));
1008 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1009 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1012 s
.next_write_length(1);
1013 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1014 boost::asio::transfer_exactly(10));
1015 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1016 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1019 s
.next_write_length(1);
1020 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1021 boost::asio::transfer_exactly(10));
1022 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1023 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1026 s
.next_write_length(10);
1027 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1028 boost::asio::transfer_exactly(10));
1029 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1030 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1033 s
.next_write_length(10);
1034 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1035 boost::asio::transfer_exactly(10));
1036 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1037 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1040 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1041 boost::asio::transfer_exactly(42));
1042 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1043 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1046 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1047 boost::asio::transfer_exactly(42));
1048 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1049 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1052 s
.next_write_length(1);
1053 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1054 boost::asio::transfer_exactly(42));
1055 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1056 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1059 s
.next_write_length(1);
1060 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1061 boost::asio::transfer_exactly(42));
1062 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1063 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1066 s
.next_write_length(10);
1067 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1068 boost::asio::transfer_exactly(42));
1069 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1070 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1073 s
.next_write_length(10);
1074 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1075 boost::asio::transfer_exactly(42));
1076 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1077 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1080 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1081 old_style_transfer_all
);
1082 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1083 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1086 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1087 old_style_transfer_all
);
1088 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1089 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1092 s
.next_write_length(1);
1093 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1094 old_style_transfer_all
);
1095 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1096 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1099 s
.next_write_length(1);
1100 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1101 old_style_transfer_all
);
1102 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1103 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1106 s
.next_write_length(10);
1107 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1108 old_style_transfer_all
);
1109 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1110 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1113 s
.next_write_length(10);
1114 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1115 old_style_transfer_all
);
1116 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1117 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1120 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
1121 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1122 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1125 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
1126 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1127 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1130 s
.next_write_length(1);
1131 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
1132 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1133 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1136 s
.next_write_length(1);
1137 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
1138 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1139 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1142 s
.next_write_length(10);
1143 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
1144 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1145 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1148 s
.next_write_length(10);
1149 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
1150 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1151 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1154 void test_4_arg_vector_buffers_write_at()
1156 boost::asio::io_context ioc
;
1157 test_random_access_device
s(ioc
);
1158 std::vector
<boost::asio::const_buffer
> buffers
;
1159 buffers
.push_back(boost::asio::buffer(write_data
, 32));
1160 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
1163 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1164 boost::asio::transfer_all());
1165 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1166 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1169 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1170 boost::asio::transfer_all());
1171 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1172 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1175 s
.next_write_length(1);
1176 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1177 boost::asio::transfer_all());
1178 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1179 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1182 s
.next_write_length(1);
1183 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1184 boost::asio::transfer_all());
1185 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1186 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1189 s
.next_write_length(10);
1190 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1191 boost::asio::transfer_all());
1192 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1193 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1196 s
.next_write_length(10);
1197 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1198 boost::asio::transfer_all());
1199 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1200 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1203 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1204 boost::asio::transfer_at_least(1));
1205 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1206 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1209 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1210 boost::asio::transfer_at_least(1));
1211 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1212 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1215 s
.next_write_length(1);
1216 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1217 boost::asio::transfer_at_least(1));
1218 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1219 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1222 s
.next_write_length(1);
1223 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1224 boost::asio::transfer_at_least(1));
1225 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1226 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1229 s
.next_write_length(10);
1230 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1231 boost::asio::transfer_at_least(1));
1232 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1233 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1236 s
.next_write_length(10);
1237 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1238 boost::asio::transfer_at_least(1));
1239 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1240 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1243 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1244 boost::asio::transfer_at_least(10));
1245 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1246 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1249 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1250 boost::asio::transfer_at_least(10));
1251 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1252 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1255 s
.next_write_length(1);
1256 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1257 boost::asio::transfer_at_least(10));
1258 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1259 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1262 s
.next_write_length(1);
1263 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1264 boost::asio::transfer_at_least(10));
1265 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1266 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1269 s
.next_write_length(10);
1270 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1271 boost::asio::transfer_at_least(10));
1272 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1273 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1276 s
.next_write_length(10);
1277 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1278 boost::asio::transfer_at_least(10));
1279 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1280 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1283 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1284 boost::asio::transfer_at_least(42));
1285 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1286 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1289 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1290 boost::asio::transfer_at_least(42));
1291 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1292 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1295 s
.next_write_length(1);
1296 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1297 boost::asio::transfer_at_least(42));
1298 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1299 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1302 s
.next_write_length(1);
1303 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1304 boost::asio::transfer_at_least(42));
1305 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1306 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1309 s
.next_write_length(10);
1310 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1311 boost::asio::transfer_at_least(42));
1312 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1313 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
1316 s
.next_write_length(10);
1317 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1318 boost::asio::transfer_at_least(42));
1319 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1320 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
1323 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1324 boost::asio::transfer_exactly(1));
1325 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1326 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1329 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1330 boost::asio::transfer_exactly(1));
1331 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1332 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1335 s
.next_write_length(1);
1336 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1337 boost::asio::transfer_exactly(1));
1338 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1339 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1342 s
.next_write_length(1);
1343 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1344 boost::asio::transfer_exactly(1));
1345 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1346 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1349 s
.next_write_length(10);
1350 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1351 boost::asio::transfer_exactly(1));
1352 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1353 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1356 s
.next_write_length(10);
1357 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1358 boost::asio::transfer_exactly(1));
1359 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1360 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1363 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1364 boost::asio::transfer_exactly(10));
1365 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1366 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1369 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1370 boost::asio::transfer_exactly(10));
1371 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1372 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1375 s
.next_write_length(1);
1376 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1377 boost::asio::transfer_exactly(10));
1378 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1379 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1382 s
.next_write_length(1);
1383 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1384 boost::asio::transfer_exactly(10));
1385 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1386 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1389 s
.next_write_length(10);
1390 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1391 boost::asio::transfer_exactly(10));
1392 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1393 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1396 s
.next_write_length(10);
1397 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1398 boost::asio::transfer_exactly(10));
1399 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1400 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1403 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1404 boost::asio::transfer_exactly(42));
1405 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1406 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1409 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1410 boost::asio::transfer_exactly(42));
1411 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1412 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1415 s
.next_write_length(1);
1416 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1417 boost::asio::transfer_exactly(42));
1418 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1419 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1422 s
.next_write_length(1);
1423 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1424 boost::asio::transfer_exactly(42));
1425 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1426 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1429 s
.next_write_length(10);
1430 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1431 boost::asio::transfer_exactly(42));
1432 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1433 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1436 s
.next_write_length(10);
1437 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1438 boost::asio::transfer_exactly(42));
1439 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1440 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1443 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1444 old_style_transfer_all
);
1445 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1446 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1449 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1450 old_style_transfer_all
);
1451 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1452 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1455 s
.next_write_length(1);
1456 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1457 old_style_transfer_all
);
1458 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1459 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1462 s
.next_write_length(1);
1463 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1464 old_style_transfer_all
);
1465 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1466 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1469 s
.next_write_length(10);
1470 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1471 old_style_transfer_all
);
1472 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1473 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1476 s
.next_write_length(10);
1477 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1478 old_style_transfer_all
);
1479 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1480 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1483 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
1484 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1485 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1488 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
1489 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1490 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1493 s
.next_write_length(1);
1494 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
1495 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1496 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1499 s
.next_write_length(1);
1500 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
1501 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1502 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1505 s
.next_write_length(10);
1506 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer
);
1507 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1508 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1511 s
.next_write_length(10);
1512 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer
);
1513 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1514 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1517 void test_5_arg_const_buffer_write_at()
1519 boost::asio::io_context ioc
;
1520 test_random_access_device
s(ioc
);
1521 boost::asio::const_buffer buffers
1522 = boost::asio::buffer(write_data
, sizeof(write_data
));
1525 boost::system::error_code error
;
1526 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1527 boost::asio::transfer_all(), error
);
1528 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1529 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1530 BOOST_ASIO_CHECK(!error
);
1533 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1534 boost::asio::transfer_all(), error
);
1535 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1536 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1537 BOOST_ASIO_CHECK(!error
);
1540 s
.next_write_length(1);
1541 error
= boost::system::error_code();
1542 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1543 boost::asio::transfer_all(), error
);
1544 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1545 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1546 BOOST_ASIO_CHECK(!error
);
1549 s
.next_write_length(1);
1550 error
= boost::system::error_code();
1551 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1552 boost::asio::transfer_all(), error
);
1553 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1554 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1555 BOOST_ASIO_CHECK(!error
);
1558 s
.next_write_length(10);
1559 error
= boost::system::error_code();
1560 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1561 boost::asio::transfer_all(), error
);
1562 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1563 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1564 BOOST_ASIO_CHECK(!error
);
1567 s
.next_write_length(10);
1568 error
= boost::system::error_code();
1569 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1570 boost::asio::transfer_all(), error
);
1571 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1572 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1573 BOOST_ASIO_CHECK(!error
);
1576 error
= boost::system::error_code();
1577 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1578 boost::asio::transfer_at_least(1), error
);
1579 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1580 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1581 BOOST_ASIO_CHECK(!error
);
1584 error
= boost::system::error_code();
1585 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1586 boost::asio::transfer_at_least(1), error
);
1587 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1588 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1589 BOOST_ASIO_CHECK(!error
);
1592 s
.next_write_length(1);
1593 error
= boost::system::error_code();
1594 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1595 boost::asio::transfer_at_least(1), error
);
1596 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1597 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1598 BOOST_ASIO_CHECK(!error
);
1601 s
.next_write_length(1);
1602 error
= boost::system::error_code();
1603 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1604 boost::asio::transfer_at_least(1), error
);
1605 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1606 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1607 BOOST_ASIO_CHECK(!error
);
1610 s
.next_write_length(10);
1611 error
= boost::system::error_code();
1612 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1613 boost::asio::transfer_at_least(1), error
);
1614 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1615 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1616 BOOST_ASIO_CHECK(!error
);
1619 s
.next_write_length(10);
1620 error
= boost::system::error_code();
1621 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1622 boost::asio::transfer_at_least(1), error
);
1623 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1624 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1625 BOOST_ASIO_CHECK(!error
);
1628 error
= boost::system::error_code();
1629 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1630 boost::asio::transfer_at_least(10), error
);
1631 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1632 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1633 BOOST_ASIO_CHECK(!error
);
1636 error
= boost::system::error_code();
1637 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1638 boost::asio::transfer_at_least(10), error
);
1639 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1640 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1641 BOOST_ASIO_CHECK(!error
);
1644 s
.next_write_length(1);
1645 error
= boost::system::error_code();
1646 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1647 boost::asio::transfer_at_least(10), error
);
1648 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1649 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1650 BOOST_ASIO_CHECK(!error
);
1653 s
.next_write_length(1);
1654 error
= boost::system::error_code();
1655 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1656 boost::asio::transfer_at_least(10), error
);
1657 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1658 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1659 BOOST_ASIO_CHECK(!error
);
1662 s
.next_write_length(10);
1663 error
= boost::system::error_code();
1664 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1665 boost::asio::transfer_at_least(10), error
);
1666 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1667 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1668 BOOST_ASIO_CHECK(!error
);
1671 s
.next_write_length(10);
1672 error
= boost::system::error_code();
1673 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1674 boost::asio::transfer_at_least(10), error
);
1675 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1676 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1677 BOOST_ASIO_CHECK(!error
);
1680 error
= boost::system::error_code();
1681 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1682 boost::asio::transfer_at_least(42), error
);
1683 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1684 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1685 BOOST_ASIO_CHECK(!error
);
1688 error
= boost::system::error_code();
1689 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1690 boost::asio::transfer_at_least(42), error
);
1691 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1692 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1693 BOOST_ASIO_CHECK(!error
);
1696 s
.next_write_length(1);
1697 error
= boost::system::error_code();
1698 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1699 boost::asio::transfer_at_least(42), error
);
1700 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1701 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1702 BOOST_ASIO_CHECK(!error
);
1705 s
.next_write_length(1);
1706 error
= boost::system::error_code();
1707 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1708 boost::asio::transfer_at_least(42), error
);
1709 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1710 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1711 BOOST_ASIO_CHECK(!error
);
1714 s
.next_write_length(10);
1715 error
= boost::system::error_code();
1716 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1717 boost::asio::transfer_at_least(42), error
);
1718 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1719 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
1720 BOOST_ASIO_CHECK(!error
);
1723 s
.next_write_length(10);
1724 error
= boost::system::error_code();
1725 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1726 boost::asio::transfer_at_least(42), error
);
1727 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1728 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
1729 BOOST_ASIO_CHECK(!error
);
1732 error
= boost::system::error_code();
1733 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1734 boost::asio::transfer_exactly(1), error
);
1735 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1736 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1737 BOOST_ASIO_CHECK(!error
);
1740 error
= boost::system::error_code();
1741 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1742 boost::asio::transfer_exactly(1), error
);
1743 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1744 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1745 BOOST_ASIO_CHECK(!error
);
1748 s
.next_write_length(1);
1749 error
= boost::system::error_code();
1750 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1751 boost::asio::transfer_exactly(1), error
);
1752 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1753 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1754 BOOST_ASIO_CHECK(!error
);
1757 s
.next_write_length(1);
1758 error
= boost::system::error_code();
1759 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1760 boost::asio::transfer_exactly(1), error
);
1761 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1762 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1763 BOOST_ASIO_CHECK(!error
);
1766 s
.next_write_length(10);
1767 error
= boost::system::error_code();
1768 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1769 boost::asio::transfer_exactly(1), error
);
1770 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1771 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1772 BOOST_ASIO_CHECK(!error
);
1775 s
.next_write_length(10);
1776 error
= boost::system::error_code();
1777 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1778 boost::asio::transfer_exactly(1), error
);
1779 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1780 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1781 BOOST_ASIO_CHECK(!error
);
1784 error
= boost::system::error_code();
1785 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1786 boost::asio::transfer_exactly(10), error
);
1787 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1788 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1789 BOOST_ASIO_CHECK(!error
);
1792 error
= boost::system::error_code();
1793 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1794 boost::asio::transfer_exactly(10), error
);
1795 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1796 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1797 BOOST_ASIO_CHECK(!error
);
1800 s
.next_write_length(1);
1801 error
= boost::system::error_code();
1802 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1803 boost::asio::transfer_exactly(10), error
);
1804 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1805 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1806 BOOST_ASIO_CHECK(!error
);
1809 s
.next_write_length(1);
1810 error
= boost::system::error_code();
1811 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1812 boost::asio::transfer_exactly(10), error
);
1813 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1814 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1815 BOOST_ASIO_CHECK(!error
);
1818 s
.next_write_length(10);
1819 error
= boost::system::error_code();
1820 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1821 boost::asio::transfer_exactly(10), error
);
1822 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1823 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1824 BOOST_ASIO_CHECK(!error
);
1827 s
.next_write_length(10);
1828 error
= boost::system::error_code();
1829 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1830 boost::asio::transfer_exactly(10), error
);
1831 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1832 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1833 BOOST_ASIO_CHECK(!error
);
1836 error
= boost::system::error_code();
1837 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1838 boost::asio::transfer_exactly(42), error
);
1839 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1840 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1841 BOOST_ASIO_CHECK(!error
);
1844 error
= boost::system::error_code();
1845 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1846 boost::asio::transfer_exactly(42), error
);
1847 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1848 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1849 BOOST_ASIO_CHECK(!error
);
1852 s
.next_write_length(1);
1853 error
= boost::system::error_code();
1854 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1855 boost::asio::transfer_exactly(42), error
);
1856 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1857 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1858 BOOST_ASIO_CHECK(!error
);
1861 s
.next_write_length(1);
1862 error
= boost::system::error_code();
1863 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1864 boost::asio::transfer_exactly(42), error
);
1865 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1866 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1867 BOOST_ASIO_CHECK(!error
);
1870 s
.next_write_length(10);
1871 error
= boost::system::error_code();
1872 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1873 boost::asio::transfer_exactly(42), error
);
1874 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1875 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1876 BOOST_ASIO_CHECK(!error
);
1879 s
.next_write_length(10);
1880 error
= boost::system::error_code();
1881 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1882 boost::asio::transfer_exactly(42), error
);
1883 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1884 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1885 BOOST_ASIO_CHECK(!error
);
1888 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1889 old_style_transfer_all
, error
);
1890 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1891 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1892 BOOST_ASIO_CHECK(!error
);
1895 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1896 old_style_transfer_all
, error
);
1897 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1898 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1899 BOOST_ASIO_CHECK(!error
);
1902 s
.next_write_length(1);
1903 error
= boost::system::error_code();
1904 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1905 old_style_transfer_all
, error
);
1906 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1907 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1908 BOOST_ASIO_CHECK(!error
);
1911 s
.next_write_length(1);
1912 error
= boost::system::error_code();
1913 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1914 old_style_transfer_all
, error
);
1915 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1916 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1917 BOOST_ASIO_CHECK(!error
);
1920 s
.next_write_length(10);
1921 error
= boost::system::error_code();
1922 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1923 old_style_transfer_all
, error
);
1924 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1925 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1926 BOOST_ASIO_CHECK(!error
);
1929 s
.next_write_length(10);
1930 error
= boost::system::error_code();
1931 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1932 old_style_transfer_all
, error
);
1933 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1934 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1935 BOOST_ASIO_CHECK(!error
);
1938 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1939 short_transfer
, error
);
1940 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1941 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1942 BOOST_ASIO_CHECK(!error
);
1945 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1946 short_transfer
, error
);
1947 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1948 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1949 BOOST_ASIO_CHECK(!error
);
1952 s
.next_write_length(1);
1953 error
= boost::system::error_code();
1954 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1955 short_transfer
, error
);
1956 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1957 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1958 BOOST_ASIO_CHECK(!error
);
1961 s
.next_write_length(1);
1962 error
= boost::system::error_code();
1963 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1964 short_transfer
, error
);
1965 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1966 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1967 BOOST_ASIO_CHECK(!error
);
1970 s
.next_write_length(10);
1971 error
= boost::system::error_code();
1972 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1973 short_transfer
, error
);
1974 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1975 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1976 BOOST_ASIO_CHECK(!error
);
1979 s
.next_write_length(10);
1980 error
= boost::system::error_code();
1981 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1982 short_transfer
, error
);
1983 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1984 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1985 BOOST_ASIO_CHECK(!error
);
1988 void test_5_arg_mutable_buffer_write_at()
1990 boost::asio::io_context ioc
;
1991 test_random_access_device
s(ioc
);
1992 boost::asio::mutable_buffer buffers
1993 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
1996 boost::system::error_code error
;
1997 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1998 boost::asio::transfer_all(), error
);
1999 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2000 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2001 BOOST_ASIO_CHECK(!error
);
2004 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2005 boost::asio::transfer_all(), error
);
2006 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2007 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2008 BOOST_ASIO_CHECK(!error
);
2011 s
.next_write_length(1);
2012 error
= boost::system::error_code();
2013 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2014 boost::asio::transfer_all(), error
);
2015 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2016 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2017 BOOST_ASIO_CHECK(!error
);
2020 s
.next_write_length(1);
2021 error
= boost::system::error_code();
2022 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2023 boost::asio::transfer_all(), error
);
2024 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2025 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2026 BOOST_ASIO_CHECK(!error
);
2029 s
.next_write_length(10);
2030 error
= boost::system::error_code();
2031 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2032 boost::asio::transfer_all(), error
);
2033 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2034 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2035 BOOST_ASIO_CHECK(!error
);
2038 s
.next_write_length(10);
2039 error
= boost::system::error_code();
2040 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2041 boost::asio::transfer_all(), error
);
2042 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2043 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2044 BOOST_ASIO_CHECK(!error
);
2047 error
= boost::system::error_code();
2048 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2049 boost::asio::transfer_at_least(1), error
);
2050 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2051 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2052 BOOST_ASIO_CHECK(!error
);
2055 error
= boost::system::error_code();
2056 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2057 boost::asio::transfer_at_least(1), error
);
2058 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2059 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2060 BOOST_ASIO_CHECK(!error
);
2063 s
.next_write_length(1);
2064 error
= boost::system::error_code();
2065 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2066 boost::asio::transfer_at_least(1), error
);
2067 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2068 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2069 BOOST_ASIO_CHECK(!error
);
2072 s
.next_write_length(1);
2073 error
= boost::system::error_code();
2074 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2075 boost::asio::transfer_at_least(1), error
);
2076 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2077 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2078 BOOST_ASIO_CHECK(!error
);
2081 s
.next_write_length(10);
2082 error
= boost::system::error_code();
2083 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2084 boost::asio::transfer_at_least(1), error
);
2085 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2086 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2087 BOOST_ASIO_CHECK(!error
);
2090 s
.next_write_length(10);
2091 error
= boost::system::error_code();
2092 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2093 boost::asio::transfer_at_least(1), error
);
2094 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2095 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2096 BOOST_ASIO_CHECK(!error
);
2099 error
= boost::system::error_code();
2100 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2101 boost::asio::transfer_at_least(10), error
);
2102 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2103 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2104 BOOST_ASIO_CHECK(!error
);
2107 error
= boost::system::error_code();
2108 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2109 boost::asio::transfer_at_least(10), error
);
2110 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2111 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2112 BOOST_ASIO_CHECK(!error
);
2115 s
.next_write_length(1);
2116 error
= boost::system::error_code();
2117 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2118 boost::asio::transfer_at_least(10), error
);
2119 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2120 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2121 BOOST_ASIO_CHECK(!error
);
2124 s
.next_write_length(1);
2125 error
= boost::system::error_code();
2126 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2127 boost::asio::transfer_at_least(10), error
);
2128 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2129 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2130 BOOST_ASIO_CHECK(!error
);
2133 s
.next_write_length(10);
2134 error
= boost::system::error_code();
2135 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2136 boost::asio::transfer_at_least(10), error
);
2137 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2138 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2139 BOOST_ASIO_CHECK(!error
);
2142 s
.next_write_length(10);
2143 error
= boost::system::error_code();
2144 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2145 boost::asio::transfer_at_least(10), error
);
2146 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2147 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2148 BOOST_ASIO_CHECK(!error
);
2151 error
= boost::system::error_code();
2152 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2153 boost::asio::transfer_at_least(42), error
);
2154 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2155 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2156 BOOST_ASIO_CHECK(!error
);
2159 error
= boost::system::error_code();
2160 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2161 boost::asio::transfer_at_least(42), error
);
2162 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2163 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2164 BOOST_ASIO_CHECK(!error
);
2167 s
.next_write_length(1);
2168 error
= boost::system::error_code();
2169 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2170 boost::asio::transfer_at_least(42), error
);
2171 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2172 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2173 BOOST_ASIO_CHECK(!error
);
2176 s
.next_write_length(1);
2177 error
= boost::system::error_code();
2178 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2179 boost::asio::transfer_at_least(42), error
);
2180 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2181 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2182 BOOST_ASIO_CHECK(!error
);
2185 s
.next_write_length(10);
2186 error
= boost::system::error_code();
2187 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2188 boost::asio::transfer_at_least(42), error
);
2189 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2190 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
2191 BOOST_ASIO_CHECK(!error
);
2194 s
.next_write_length(10);
2195 error
= boost::system::error_code();
2196 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2197 boost::asio::transfer_at_least(42), error
);
2198 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2199 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
2200 BOOST_ASIO_CHECK(!error
);
2203 error
= boost::system::error_code();
2204 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2205 boost::asio::transfer_exactly(1), error
);
2206 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2207 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2208 BOOST_ASIO_CHECK(!error
);
2211 error
= boost::system::error_code();
2212 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2213 boost::asio::transfer_exactly(1), error
);
2214 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2215 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2216 BOOST_ASIO_CHECK(!error
);
2219 s
.next_write_length(1);
2220 error
= boost::system::error_code();
2221 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2222 boost::asio::transfer_exactly(1), error
);
2223 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2224 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2225 BOOST_ASIO_CHECK(!error
);
2228 s
.next_write_length(1);
2229 error
= boost::system::error_code();
2230 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2231 boost::asio::transfer_exactly(1), error
);
2232 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2233 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2234 BOOST_ASIO_CHECK(!error
);
2237 s
.next_write_length(10);
2238 error
= boost::system::error_code();
2239 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2240 boost::asio::transfer_exactly(1), error
);
2241 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2242 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2243 BOOST_ASIO_CHECK(!error
);
2246 s
.next_write_length(10);
2247 error
= boost::system::error_code();
2248 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2249 boost::asio::transfer_exactly(1), error
);
2250 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2251 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2252 BOOST_ASIO_CHECK(!error
);
2255 error
= boost::system::error_code();
2256 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2257 boost::asio::transfer_exactly(10), error
);
2258 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2259 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2260 BOOST_ASIO_CHECK(!error
);
2263 error
= boost::system::error_code();
2264 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2265 boost::asio::transfer_exactly(10), error
);
2266 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2267 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2268 BOOST_ASIO_CHECK(!error
);
2271 s
.next_write_length(1);
2272 error
= boost::system::error_code();
2273 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2274 boost::asio::transfer_exactly(10), error
);
2275 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2276 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2277 BOOST_ASIO_CHECK(!error
);
2280 s
.next_write_length(1);
2281 error
= boost::system::error_code();
2282 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2283 boost::asio::transfer_exactly(10), error
);
2284 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2285 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2286 BOOST_ASIO_CHECK(!error
);
2289 s
.next_write_length(10);
2290 error
= boost::system::error_code();
2291 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2292 boost::asio::transfer_exactly(10), error
);
2293 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2294 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2295 BOOST_ASIO_CHECK(!error
);
2298 s
.next_write_length(10);
2299 error
= boost::system::error_code();
2300 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2301 boost::asio::transfer_exactly(10), error
);
2302 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2303 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2304 BOOST_ASIO_CHECK(!error
);
2307 error
= boost::system::error_code();
2308 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2309 boost::asio::transfer_exactly(42), error
);
2310 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2311 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2312 BOOST_ASIO_CHECK(!error
);
2315 error
= boost::system::error_code();
2316 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2317 boost::asio::transfer_exactly(42), error
);
2318 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2319 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2320 BOOST_ASIO_CHECK(!error
);
2323 s
.next_write_length(1);
2324 error
= boost::system::error_code();
2325 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2326 boost::asio::transfer_exactly(42), error
);
2327 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2328 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2329 BOOST_ASIO_CHECK(!error
);
2332 s
.next_write_length(1);
2333 error
= boost::system::error_code();
2334 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2335 boost::asio::transfer_exactly(42), error
);
2336 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2337 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2338 BOOST_ASIO_CHECK(!error
);
2341 s
.next_write_length(10);
2342 error
= boost::system::error_code();
2343 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2344 boost::asio::transfer_exactly(42), error
);
2345 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2346 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2347 BOOST_ASIO_CHECK(!error
);
2350 s
.next_write_length(10);
2351 error
= boost::system::error_code();
2352 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2353 boost::asio::transfer_exactly(42), error
);
2354 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2355 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2356 BOOST_ASIO_CHECK(!error
);
2359 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2360 old_style_transfer_all
, error
);
2361 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2362 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2363 BOOST_ASIO_CHECK(!error
);
2366 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2367 old_style_transfer_all
, error
);
2368 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2369 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2370 BOOST_ASIO_CHECK(!error
);
2373 s
.next_write_length(1);
2374 error
= boost::system::error_code();
2375 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2376 old_style_transfer_all
, error
);
2377 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2378 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2379 BOOST_ASIO_CHECK(!error
);
2382 s
.next_write_length(1);
2383 error
= boost::system::error_code();
2384 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2385 old_style_transfer_all
, error
);
2386 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2387 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2388 BOOST_ASIO_CHECK(!error
);
2391 s
.next_write_length(10);
2392 error
= boost::system::error_code();
2393 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2394 old_style_transfer_all
, error
);
2395 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2396 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2397 BOOST_ASIO_CHECK(!error
);
2400 s
.next_write_length(10);
2401 error
= boost::system::error_code();
2402 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2403 old_style_transfer_all
, error
);
2404 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2405 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2406 BOOST_ASIO_CHECK(!error
);
2409 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2410 short_transfer
, error
);
2411 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2412 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2413 BOOST_ASIO_CHECK(!error
);
2416 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2417 short_transfer
, error
);
2418 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2419 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2420 BOOST_ASIO_CHECK(!error
);
2423 s
.next_write_length(1);
2424 error
= boost::system::error_code();
2425 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2426 short_transfer
, error
);
2427 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2428 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2429 BOOST_ASIO_CHECK(!error
);
2432 s
.next_write_length(1);
2433 error
= boost::system::error_code();
2434 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2435 short_transfer
, error
);
2436 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2437 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2438 BOOST_ASIO_CHECK(!error
);
2441 s
.next_write_length(10);
2442 error
= boost::system::error_code();
2443 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2444 short_transfer
, error
);
2445 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2446 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2447 BOOST_ASIO_CHECK(!error
);
2450 s
.next_write_length(10);
2451 error
= boost::system::error_code();
2452 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2453 short_transfer
, error
);
2454 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2455 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2456 BOOST_ASIO_CHECK(!error
);
2459 void test_5_arg_vector_buffers_write_at()
2461 boost::asio::io_context ioc
;
2462 test_random_access_device
s(ioc
);
2463 std::vector
<boost::asio::const_buffer
> buffers
;
2464 buffers
.push_back(boost::asio::buffer(write_data
, 32));
2465 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
2468 boost::system::error_code error
;
2469 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2470 boost::asio::transfer_all(), error
);
2471 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2472 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2473 BOOST_ASIO_CHECK(!error
);
2476 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2477 boost::asio::transfer_all(), error
);
2478 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2479 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2480 BOOST_ASIO_CHECK(!error
);
2483 s
.next_write_length(1);
2484 error
= boost::system::error_code();
2485 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2486 boost::asio::transfer_all(), error
);
2487 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2488 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2489 BOOST_ASIO_CHECK(!error
);
2492 s
.next_write_length(1);
2493 error
= boost::system::error_code();
2494 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2495 boost::asio::transfer_all(), error
);
2496 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2497 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2498 BOOST_ASIO_CHECK(!error
);
2501 s
.next_write_length(10);
2502 error
= boost::system::error_code();
2503 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2504 boost::asio::transfer_all(), error
);
2505 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2506 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2507 BOOST_ASIO_CHECK(!error
);
2510 s
.next_write_length(10);
2511 error
= boost::system::error_code();
2512 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2513 boost::asio::transfer_all(), error
);
2514 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2515 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2516 BOOST_ASIO_CHECK(!error
);
2519 error
= boost::system::error_code();
2520 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2521 boost::asio::transfer_at_least(1), error
);
2522 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2523 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2524 BOOST_ASIO_CHECK(!error
);
2527 error
= boost::system::error_code();
2528 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2529 boost::asio::transfer_at_least(1), error
);
2530 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2531 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2532 BOOST_ASIO_CHECK(!error
);
2535 s
.next_write_length(1);
2536 error
= boost::system::error_code();
2537 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2538 boost::asio::transfer_at_least(1), error
);
2539 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2540 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2541 BOOST_ASIO_CHECK(!error
);
2544 s
.next_write_length(1);
2545 error
= boost::system::error_code();
2546 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2547 boost::asio::transfer_at_least(1), error
);
2548 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2549 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2550 BOOST_ASIO_CHECK(!error
);
2553 s
.next_write_length(10);
2554 error
= boost::system::error_code();
2555 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2556 boost::asio::transfer_at_least(1), error
);
2557 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2558 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2559 BOOST_ASIO_CHECK(!error
);
2562 s
.next_write_length(10);
2563 error
= boost::system::error_code();
2564 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2565 boost::asio::transfer_at_least(1), error
);
2566 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2567 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2568 BOOST_ASIO_CHECK(!error
);
2571 error
= boost::system::error_code();
2572 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2573 boost::asio::transfer_at_least(10), error
);
2574 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2575 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2576 BOOST_ASIO_CHECK(!error
);
2579 error
= boost::system::error_code();
2580 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2581 boost::asio::transfer_at_least(10), error
);
2582 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2583 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2584 BOOST_ASIO_CHECK(!error
);
2587 s
.next_write_length(1);
2588 error
= boost::system::error_code();
2589 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2590 boost::asio::transfer_at_least(10), error
);
2591 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2592 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2593 BOOST_ASIO_CHECK(!error
);
2596 s
.next_write_length(1);
2597 error
= boost::system::error_code();
2598 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2599 boost::asio::transfer_at_least(10), error
);
2600 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2601 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2602 BOOST_ASIO_CHECK(!error
);
2605 s
.next_write_length(10);
2606 error
= boost::system::error_code();
2607 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2608 boost::asio::transfer_at_least(10), error
);
2609 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2610 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2611 BOOST_ASIO_CHECK(!error
);
2614 s
.next_write_length(10);
2615 error
= boost::system::error_code();
2616 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2617 boost::asio::transfer_at_least(10), error
);
2618 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2619 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2620 BOOST_ASIO_CHECK(!error
);
2623 error
= boost::system::error_code();
2624 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2625 boost::asio::transfer_at_least(42), error
);
2626 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2627 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2628 BOOST_ASIO_CHECK(!error
);
2631 error
= boost::system::error_code();
2632 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2633 boost::asio::transfer_at_least(42), error
);
2634 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2635 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2636 BOOST_ASIO_CHECK(!error
);
2639 s
.next_write_length(1);
2640 error
= boost::system::error_code();
2641 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2642 boost::asio::transfer_at_least(42), error
);
2643 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2644 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2645 BOOST_ASIO_CHECK(!error
);
2648 s
.next_write_length(1);
2649 error
= boost::system::error_code();
2650 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2651 boost::asio::transfer_at_least(42), error
);
2652 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2653 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2654 BOOST_ASIO_CHECK(!error
);
2657 s
.next_write_length(10);
2658 error
= boost::system::error_code();
2659 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2660 boost::asio::transfer_at_least(42), error
);
2661 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2662 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
2663 BOOST_ASIO_CHECK(!error
);
2666 s
.next_write_length(10);
2667 error
= boost::system::error_code();
2668 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2669 boost::asio::transfer_at_least(42), error
);
2670 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2671 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
2672 BOOST_ASIO_CHECK(!error
);
2675 error
= boost::system::error_code();
2676 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2677 boost::asio::transfer_exactly(1), error
);
2678 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2679 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2680 BOOST_ASIO_CHECK(!error
);
2683 error
= boost::system::error_code();
2684 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2685 boost::asio::transfer_exactly(1), error
);
2686 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2687 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2688 BOOST_ASIO_CHECK(!error
);
2691 s
.next_write_length(1);
2692 error
= boost::system::error_code();
2693 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2694 boost::asio::transfer_exactly(1), error
);
2695 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2696 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2697 BOOST_ASIO_CHECK(!error
);
2700 s
.next_write_length(1);
2701 error
= boost::system::error_code();
2702 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2703 boost::asio::transfer_exactly(1), error
);
2704 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2705 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2706 BOOST_ASIO_CHECK(!error
);
2709 s
.next_write_length(10);
2710 error
= boost::system::error_code();
2711 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2712 boost::asio::transfer_exactly(1), error
);
2713 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2714 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2715 BOOST_ASIO_CHECK(!error
);
2718 s
.next_write_length(10);
2719 error
= boost::system::error_code();
2720 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2721 boost::asio::transfer_exactly(1), error
);
2722 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2723 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2724 BOOST_ASIO_CHECK(!error
);
2727 error
= boost::system::error_code();
2728 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2729 boost::asio::transfer_exactly(10), error
);
2730 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2731 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2732 BOOST_ASIO_CHECK(!error
);
2735 error
= boost::system::error_code();
2736 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2737 boost::asio::transfer_exactly(10), error
);
2738 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2739 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2740 BOOST_ASIO_CHECK(!error
);
2743 s
.next_write_length(1);
2744 error
= boost::system::error_code();
2745 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2746 boost::asio::transfer_exactly(10), error
);
2747 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2748 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2749 BOOST_ASIO_CHECK(!error
);
2752 s
.next_write_length(1);
2753 error
= boost::system::error_code();
2754 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2755 boost::asio::transfer_exactly(10), error
);
2756 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2757 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2758 BOOST_ASIO_CHECK(!error
);
2761 s
.next_write_length(10);
2762 error
= boost::system::error_code();
2763 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2764 boost::asio::transfer_exactly(10), error
);
2765 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2766 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2767 BOOST_ASIO_CHECK(!error
);
2770 s
.next_write_length(10);
2771 error
= boost::system::error_code();
2772 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2773 boost::asio::transfer_exactly(10), error
);
2774 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2775 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2776 BOOST_ASIO_CHECK(!error
);
2779 error
= boost::system::error_code();
2780 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2781 boost::asio::transfer_exactly(42), error
);
2782 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2783 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2784 BOOST_ASIO_CHECK(!error
);
2787 error
= boost::system::error_code();
2788 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2789 boost::asio::transfer_exactly(42), error
);
2790 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2791 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2792 BOOST_ASIO_CHECK(!error
);
2795 s
.next_write_length(1);
2796 error
= boost::system::error_code();
2797 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2798 boost::asio::transfer_exactly(42), error
);
2799 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2800 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2801 BOOST_ASIO_CHECK(!error
);
2804 s
.next_write_length(1);
2805 error
= boost::system::error_code();
2806 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2807 boost::asio::transfer_exactly(42), error
);
2808 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2809 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2810 BOOST_ASIO_CHECK(!error
);
2813 s
.next_write_length(10);
2814 error
= boost::system::error_code();
2815 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2816 boost::asio::transfer_exactly(42), error
);
2817 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2818 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2819 BOOST_ASIO_CHECK(!error
);
2822 s
.next_write_length(10);
2823 error
= boost::system::error_code();
2824 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2825 boost::asio::transfer_exactly(42), error
);
2826 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2827 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2828 BOOST_ASIO_CHECK(!error
);
2831 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2832 old_style_transfer_all
, error
);
2833 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2834 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2835 BOOST_ASIO_CHECK(!error
);
2838 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2839 old_style_transfer_all
, error
);
2840 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2841 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2842 BOOST_ASIO_CHECK(!error
);
2845 s
.next_write_length(1);
2846 error
= boost::system::error_code();
2847 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2848 old_style_transfer_all
, error
);
2849 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2850 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2851 BOOST_ASIO_CHECK(!error
);
2854 s
.next_write_length(1);
2855 error
= boost::system::error_code();
2856 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2857 old_style_transfer_all
, error
);
2858 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2859 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2860 BOOST_ASIO_CHECK(!error
);
2863 s
.next_write_length(10);
2864 error
= boost::system::error_code();
2865 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2866 old_style_transfer_all
, error
);
2867 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2868 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2869 BOOST_ASIO_CHECK(!error
);
2872 s
.next_write_length(10);
2873 error
= boost::system::error_code();
2874 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2875 old_style_transfer_all
, error
);
2876 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2877 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2878 BOOST_ASIO_CHECK(!error
);
2881 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2882 short_transfer
, error
);
2883 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2884 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2885 BOOST_ASIO_CHECK(!error
);
2888 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2889 short_transfer
, error
);
2890 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2891 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2892 BOOST_ASIO_CHECK(!error
);
2895 s
.next_write_length(1);
2896 error
= boost::system::error_code();
2897 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2898 short_transfer
, error
);
2899 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2900 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2901 BOOST_ASIO_CHECK(!error
);
2904 s
.next_write_length(1);
2905 error
= boost::system::error_code();
2906 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2907 short_transfer
, error
);
2908 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2909 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2910 BOOST_ASIO_CHECK(!error
);
2913 s
.next_write_length(10);
2914 error
= boost::system::error_code();
2915 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2916 short_transfer
, error
);
2917 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2918 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2919 BOOST_ASIO_CHECK(!error
);
2922 s
.next_write_length(10);
2923 error
= boost::system::error_code();
2924 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2925 short_transfer
, error
);
2926 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2927 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2928 BOOST_ASIO_CHECK(!error
);
2931 void async_write_handler(const boost::system::error_code
& e
,
2932 size_t bytes_transferred
, size_t expected_bytes_transferred
, bool* called
)
2935 BOOST_ASIO_CHECK(!e
);
2936 BOOST_ASIO_CHECK(bytes_transferred
== expected_bytes_transferred
);
2939 void test_4_arg_const_buffer_async_write_at()
2941 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
2942 namespace bindns
= boost
;
2943 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
2944 namespace bindns
= std
;
2945 using std::placeholders::_1
;
2946 using std::placeholders::_2
;
2947 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
2949 boost::asio::io_context ioc
;
2950 test_random_access_device
s(ioc
);
2951 boost::asio::const_buffer buffers
2952 = boost::asio::buffer(write_data
, sizeof(write_data
));
2955 bool called
= false;
2956 boost::asio::async_write_at(s
, 0, buffers
,
2957 bindns::bind(async_write_handler
,
2958 _1
, _2
, sizeof(write_data
), &called
));
2961 BOOST_ASIO_CHECK(called
);
2962 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2966 boost::asio::async_write_at(s
, 1234, buffers
,
2967 bindns::bind(async_write_handler
,
2968 _1
, _2
, sizeof(write_data
), &called
));
2971 BOOST_ASIO_CHECK(called
);
2972 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2975 s
.next_write_length(1);
2977 boost::asio::async_write_at(s
, 0, buffers
,
2978 bindns::bind(async_write_handler
,
2979 _1
, _2
, sizeof(write_data
), &called
));
2982 BOOST_ASIO_CHECK(called
);
2983 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2986 s
.next_write_length(1);
2988 boost::asio::async_write_at(s
, 1234, buffers
,
2989 bindns::bind(async_write_handler
,
2990 _1
, _2
, sizeof(write_data
), &called
));
2993 BOOST_ASIO_CHECK(called
);
2994 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2997 s
.next_write_length(10);
2999 boost::asio::async_write_at(s
, 0, buffers
,
3000 bindns::bind(async_write_handler
,
3001 _1
, _2
, sizeof(write_data
), &called
));
3004 BOOST_ASIO_CHECK(called
);
3005 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3008 s
.next_write_length(10);
3010 boost::asio::async_write_at(s
, 1234, buffers
,
3011 bindns::bind(async_write_handler
,
3012 _1
, _2
, sizeof(write_data
), &called
));
3015 BOOST_ASIO_CHECK(called
);
3016 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3019 s
.next_write_length(10);
3021 boost::asio::async_write_at(s
, 0, buffers
,
3022 bindns::bind(async_write_handler
,
3023 _1
, _2
, sizeof(write_data
), &called
));
3026 BOOST_ASIO_CHECK(called
);
3027 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3030 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3031 archetypes::lazy_handler());
3032 BOOST_ASIO_CHECK(i
== 42);
3035 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3038 void test_4_arg_mutable_buffer_async_write_at()
3040 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3041 namespace bindns
= boost
;
3042 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3043 namespace bindns
= std
;
3044 using std::placeholders::_1
;
3045 using std::placeholders::_2
;
3046 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3048 boost::asio::io_context ioc
;
3049 test_random_access_device
s(ioc
);
3050 boost::asio::mutable_buffer buffers
3051 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
3054 bool called
= false;
3055 boost::asio::async_write_at(s
, 0, buffers
,
3056 bindns::bind(async_write_handler
,
3057 _1
, _2
, sizeof(mutable_write_data
), &called
));
3060 BOOST_ASIO_CHECK(called
);
3061 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3065 boost::asio::async_write_at(s
, 1234, buffers
,
3066 bindns::bind(async_write_handler
,
3067 _1
, _2
, sizeof(mutable_write_data
), &called
));
3070 BOOST_ASIO_CHECK(called
);
3071 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
3074 s
.next_write_length(1);
3076 boost::asio::async_write_at(s
, 0, buffers
,
3077 bindns::bind(async_write_handler
,
3078 _1
, _2
, sizeof(mutable_write_data
), &called
));
3081 BOOST_ASIO_CHECK(called
);
3082 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3085 s
.next_write_length(1);
3087 boost::asio::async_write_at(s
, 1234, buffers
,
3088 bindns::bind(async_write_handler
,
3089 _1
, _2
, sizeof(mutable_write_data
), &called
));
3092 BOOST_ASIO_CHECK(called
);
3093 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
3096 s
.next_write_length(10);
3098 boost::asio::async_write_at(s
, 0, buffers
,
3099 bindns::bind(async_write_handler
,
3100 _1
, _2
, sizeof(mutable_write_data
), &called
));
3103 BOOST_ASIO_CHECK(called
);
3104 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3107 s
.next_write_length(10);
3109 boost::asio::async_write_at(s
, 1234, buffers
,
3110 bindns::bind(async_write_handler
,
3111 _1
, _2
, sizeof(mutable_write_data
), &called
));
3114 BOOST_ASIO_CHECK(called
);
3115 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
3118 s
.next_write_length(10);
3120 boost::asio::async_write_at(s
, 0, buffers
,
3121 bindns::bind(async_write_handler
,
3122 _1
, _2
, sizeof(mutable_write_data
), &called
));
3125 BOOST_ASIO_CHECK(called
);
3126 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3129 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3130 archetypes::lazy_handler());
3131 BOOST_ASIO_CHECK(i
== 42);
3134 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3137 void test_4_arg_boost_array_buffers_async_write_at()
3139 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3140 namespace bindns
= boost
;
3141 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3142 namespace bindns
= std
;
3143 using std::placeholders::_1
;
3144 using std::placeholders::_2
;
3145 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3147 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
3148 boost::asio::io_context ioc
;
3149 test_random_access_device
s(ioc
);
3150 boost::array
<boost::asio::const_buffer
, 2> buffers
= { {
3151 boost::asio::buffer(write_data
, 32),
3152 boost::asio::buffer(write_data
) + 32 } };
3155 bool called
= false;
3156 boost::asio::async_write_at(s
, 0, buffers
,
3157 bindns::bind(async_write_handler
,
3158 _1
, _2
, sizeof(write_data
), &called
));
3161 BOOST_ASIO_CHECK(called
);
3162 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3166 boost::asio::async_write_at(s
, 1234, buffers
,
3167 bindns::bind(async_write_handler
,
3168 _1
, _2
, sizeof(write_data
), &called
));
3171 BOOST_ASIO_CHECK(called
);
3172 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3175 s
.next_write_length(1);
3177 boost::asio::async_write_at(s
, 0, buffers
,
3178 bindns::bind(async_write_handler
,
3179 _1
, _2
, sizeof(write_data
), &called
));
3182 BOOST_ASIO_CHECK(called
);
3183 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3186 s
.next_write_length(1);
3188 boost::asio::async_write_at(s
, 1234, buffers
,
3189 bindns::bind(async_write_handler
,
3190 _1
, _2
, sizeof(write_data
), &called
));
3193 BOOST_ASIO_CHECK(called
);
3194 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3197 s
.next_write_length(10);
3199 boost::asio::async_write_at(s
, 0, buffers
,
3200 bindns::bind(async_write_handler
,
3201 _1
, _2
, sizeof(write_data
), &called
));
3204 BOOST_ASIO_CHECK(called
);
3205 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3208 s
.next_write_length(10);
3210 boost::asio::async_write_at(s
, 1234, buffers
,
3211 bindns::bind(async_write_handler
,
3212 _1
, _2
, sizeof(write_data
), &called
));
3215 BOOST_ASIO_CHECK(called
);
3216 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3219 s
.next_write_length(10);
3221 boost::asio::async_write_at(s
, 0, buffers
,
3222 bindns::bind(async_write_handler
,
3223 _1
, _2
, sizeof(write_data
), &called
));
3226 BOOST_ASIO_CHECK(called
);
3227 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3230 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3231 archetypes::lazy_handler());
3232 BOOST_ASIO_CHECK(i
== 42);
3235 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3236 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
3239 void test_4_arg_std_array_buffers_async_write_at()
3241 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3242 namespace bindns
= boost
;
3243 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3244 namespace bindns
= std
;
3245 using std::placeholders::_1
;
3246 using std::placeholders::_2
;
3247 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3249 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
3250 boost::asio::io_context ioc
;
3251 test_random_access_device
s(ioc
);
3252 std::array
<boost::asio::const_buffer
, 2> buffers
= { {
3253 boost::asio::buffer(write_data
, 32),
3254 boost::asio::buffer(write_data
) + 32 } };
3257 bool called
= false;
3258 boost::asio::async_write_at(s
, 0, buffers
,
3259 bindns::bind(async_write_handler
,
3260 _1
, _2
, sizeof(write_data
), &called
));
3263 BOOST_ASIO_CHECK(called
);
3264 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3268 boost::asio::async_write_at(s
, 1234, buffers
,
3269 bindns::bind(async_write_handler
,
3270 _1
, _2
, sizeof(write_data
), &called
));
3273 BOOST_ASIO_CHECK(called
);
3274 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3277 s
.next_write_length(1);
3279 boost::asio::async_write_at(s
, 0, buffers
,
3280 bindns::bind(async_write_handler
,
3281 _1
, _2
, sizeof(write_data
), &called
));
3284 BOOST_ASIO_CHECK(called
);
3285 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3288 s
.next_write_length(1);
3290 boost::asio::async_write_at(s
, 1234, buffers
,
3291 bindns::bind(async_write_handler
,
3292 _1
, _2
, sizeof(write_data
), &called
));
3295 BOOST_ASIO_CHECK(called
);
3296 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3299 s
.next_write_length(10);
3301 boost::asio::async_write_at(s
, 0, buffers
,
3302 bindns::bind(async_write_handler
,
3303 _1
, _2
, sizeof(write_data
), &called
));
3306 BOOST_ASIO_CHECK(called
);
3307 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3310 s
.next_write_length(10);
3312 boost::asio::async_write_at(s
, 1234, buffers
,
3313 bindns::bind(async_write_handler
,
3314 _1
, _2
, sizeof(write_data
), &called
));
3317 BOOST_ASIO_CHECK(called
);
3318 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3321 s
.next_write_length(10);
3323 boost::asio::async_write_at(s
, 0, buffers
,
3324 bindns::bind(async_write_handler
,
3325 _1
, _2
, sizeof(write_data
), &called
));
3328 BOOST_ASIO_CHECK(called
);
3329 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3332 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3333 archetypes::lazy_handler());
3334 BOOST_ASIO_CHECK(i
== 42);
3337 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3338 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
3341 void test_4_arg_vector_buffers_async_write_at()
3343 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3344 namespace bindns
= boost
;
3345 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3346 namespace bindns
= std
;
3347 using std::placeholders::_1
;
3348 using std::placeholders::_2
;
3349 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3351 boost::asio::io_context ioc
;
3352 test_random_access_device
s(ioc
);
3353 std::vector
<boost::asio::const_buffer
> buffers
;
3354 buffers
.push_back(boost::asio::buffer(write_data
, 32));
3355 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
3358 bool called
= false;
3359 boost::asio::async_write_at(s
, 0, buffers
,
3360 bindns::bind(async_write_handler
,
3361 _1
, _2
, sizeof(write_data
), &called
));
3364 BOOST_ASIO_CHECK(called
);
3365 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3369 boost::asio::async_write_at(s
, 1234, buffers
,
3370 bindns::bind(async_write_handler
,
3371 _1
, _2
, sizeof(write_data
), &called
));
3374 BOOST_ASIO_CHECK(called
);
3375 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3378 s
.next_write_length(1);
3380 boost::asio::async_write_at(s
, 0, buffers
,
3381 bindns::bind(async_write_handler
,
3382 _1
, _2
, sizeof(write_data
), &called
));
3385 BOOST_ASIO_CHECK(called
);
3386 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3389 s
.next_write_length(1);
3391 boost::asio::async_write_at(s
, 1234, buffers
,
3392 bindns::bind(async_write_handler
,
3393 _1
, _2
, sizeof(write_data
), &called
));
3396 BOOST_ASIO_CHECK(called
);
3397 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3400 s
.next_write_length(10);
3402 boost::asio::async_write_at(s
, 0, buffers
,
3403 bindns::bind(async_write_handler
,
3404 _1
, _2
, sizeof(write_data
), &called
));
3407 BOOST_ASIO_CHECK(called
);
3408 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3411 s
.next_write_length(10);
3413 boost::asio::async_write_at(s
, 1234, buffers
,
3414 bindns::bind(async_write_handler
,
3415 _1
, _2
, sizeof(write_data
), &called
));
3418 BOOST_ASIO_CHECK(called
);
3419 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3422 s
.next_write_length(10);
3424 boost::asio::async_write_at(s
, 0, buffers
,
3425 bindns::bind(async_write_handler
,
3426 _1
, _2
, sizeof(write_data
), &called
));
3429 BOOST_ASIO_CHECK(called
);
3430 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3433 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3434 archetypes::lazy_handler());
3435 BOOST_ASIO_CHECK(i
== 42);
3438 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3441 void test_4_arg_streambuf_async_write_at()
3443 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3444 namespace bindns
= boost
;
3445 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3446 namespace bindns
= std
;
3447 using std::placeholders::_1
;
3448 using std::placeholders::_2
;
3449 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3451 boost::asio::io_context ioc
;
3452 test_random_access_device
s(ioc
);
3453 boost::asio::streambuf sb
;
3454 boost::asio::const_buffer buffers
3455 = boost::asio::buffer(write_data
, sizeof(write_data
));
3458 sb
.consume(sb
.size());
3459 sb
.sputn(write_data
, sizeof(write_data
));
3460 bool called
= false;
3461 boost::asio::async_write_at(s
, 0, sb
,
3462 bindns::bind(async_write_handler
,
3463 _1
, _2
, sizeof(write_data
), &called
));
3466 BOOST_ASIO_CHECK(called
);
3467 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3470 sb
.consume(sb
.size());
3471 sb
.sputn(write_data
, sizeof(write_data
));
3473 boost::asio::async_write_at(s
, 1234, sb
,
3474 bindns::bind(async_write_handler
,
3475 _1
, _2
, sizeof(write_data
), &called
));
3478 BOOST_ASIO_CHECK(called
);
3479 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3482 sb
.consume(sb
.size());
3483 sb
.sputn(write_data
, sizeof(write_data
));
3484 s
.next_write_length(1);
3486 boost::asio::async_write_at(s
, 0, sb
,
3487 bindns::bind(async_write_handler
,
3488 _1
, _2
, sizeof(write_data
), &called
));
3491 BOOST_ASIO_CHECK(called
);
3492 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3495 sb
.consume(sb
.size());
3496 sb
.sputn(write_data
, sizeof(write_data
));
3497 s
.next_write_length(1);
3499 boost::asio::async_write_at(s
, 1234, sb
,
3500 bindns::bind(async_write_handler
,
3501 _1
, _2
, sizeof(write_data
), &called
));
3504 BOOST_ASIO_CHECK(called
);
3505 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3508 sb
.consume(sb
.size());
3509 sb
.sputn(write_data
, sizeof(write_data
));
3510 s
.next_write_length(10);
3512 boost::asio::async_write_at(s
, 0, sb
,
3513 bindns::bind(async_write_handler
,
3514 _1
, _2
, sizeof(write_data
), &called
));
3517 BOOST_ASIO_CHECK(called
);
3518 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3521 sb
.consume(sb
.size());
3522 sb
.sputn(write_data
, sizeof(write_data
));
3523 s
.next_write_length(10);
3525 boost::asio::async_write_at(s
, 1234, sb
,
3526 bindns::bind(async_write_handler
,
3527 _1
, _2
, sizeof(write_data
), &called
));
3530 BOOST_ASIO_CHECK(called
);
3531 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3534 sb
.consume(sb
.size());
3535 sb
.sputn(write_data
, sizeof(write_data
));
3536 s
.next_write_length(10);
3538 boost::asio::async_write_at(s
, 0, sb
,
3539 bindns::bind(async_write_handler
,
3540 _1
, _2
, sizeof(write_data
), &called
));
3543 BOOST_ASIO_CHECK(called
);
3544 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3547 sb
.consume(sb
.size());
3548 sb
.sputn(write_data
, sizeof(write_data
));
3549 int i
= boost::asio::async_write_at(s
, 0, sb
,
3550 archetypes::lazy_handler());
3551 BOOST_ASIO_CHECK(i
== 42);
3554 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3557 void test_5_arg_const_buffer_async_write_at()
3559 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3560 namespace bindns
= boost
;
3561 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3562 namespace bindns
= std
;
3563 using std::placeholders::_1
;
3564 using std::placeholders::_2
;
3565 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3567 boost::asio::io_context ioc
;
3568 test_random_access_device
s(ioc
);
3569 boost::asio::const_buffer buffers
3570 = boost::asio::buffer(write_data
, sizeof(write_data
));
3573 bool called
= false;
3574 boost::asio::async_write_at(s
, 0, buffers
,
3575 boost::asio::transfer_all(),
3576 bindns::bind(async_write_handler
,
3577 _1
, _2
, sizeof(write_data
), &called
));
3580 BOOST_ASIO_CHECK(called
);
3581 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3585 boost::asio::async_write_at(s
, 1234, buffers
,
3586 boost::asio::transfer_all(),
3587 bindns::bind(async_write_handler
,
3588 _1
, _2
, sizeof(write_data
), &called
));
3591 BOOST_ASIO_CHECK(called
);
3592 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3595 s
.next_write_length(1);
3597 boost::asio::async_write_at(s
, 0, buffers
,
3598 boost::asio::transfer_all(),
3599 bindns::bind(async_write_handler
,
3600 _1
, _2
, sizeof(write_data
), &called
));
3603 BOOST_ASIO_CHECK(called
);
3604 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3607 s
.next_write_length(1);
3609 boost::asio::async_write_at(s
, 1234, buffers
,
3610 boost::asio::transfer_all(),
3611 bindns::bind(async_write_handler
,
3612 _1
, _2
, sizeof(write_data
), &called
));
3615 BOOST_ASIO_CHECK(called
);
3616 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3619 s
.next_write_length(10);
3621 boost::asio::async_write_at(s
, 0, buffers
,
3622 boost::asio::transfer_all(),
3623 bindns::bind(async_write_handler
,
3624 _1
, _2
, sizeof(write_data
), &called
));
3627 BOOST_ASIO_CHECK(called
);
3628 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3631 s
.next_write_length(10);
3633 boost::asio::async_write_at(s
, 1234, buffers
,
3634 boost::asio::transfer_all(),
3635 bindns::bind(async_write_handler
,
3636 _1
, _2
, sizeof(write_data
), &called
));
3639 BOOST_ASIO_CHECK(called
);
3640 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3644 boost::asio::async_write_at(s
, 0, buffers
,
3645 boost::asio::transfer_at_least(1),
3646 bindns::bind(async_write_handler
,
3647 _1
, _2
, sizeof(write_data
), &called
));
3650 BOOST_ASIO_CHECK(called
);
3651 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3655 boost::asio::async_write_at(s
, 1234, buffers
,
3656 boost::asio::transfer_at_least(1),
3657 bindns::bind(async_write_handler
,
3658 _1
, _2
, sizeof(write_data
), &called
));
3661 BOOST_ASIO_CHECK(called
);
3662 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3665 s
.next_write_length(1);
3667 boost::asio::async_write_at(s
, 0, buffers
,
3668 boost::asio::transfer_at_least(1),
3669 bindns::bind(async_write_handler
,
3670 _1
, _2
, 1, &called
));
3673 BOOST_ASIO_CHECK(called
);
3674 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3677 s
.next_write_length(1);
3679 boost::asio::async_write_at(s
, 1234, buffers
,
3680 boost::asio::transfer_at_least(1),
3681 bindns::bind(async_write_handler
,
3682 _1
, _2
, 1, &called
));
3685 BOOST_ASIO_CHECK(called
);
3686 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3689 s
.next_write_length(10);
3691 boost::asio::async_write_at(s
, 0, buffers
,
3692 boost::asio::transfer_at_least(1),
3693 bindns::bind(async_write_handler
,
3694 _1
, _2
, 10, &called
));
3697 BOOST_ASIO_CHECK(called
);
3698 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3701 s
.next_write_length(10);
3703 boost::asio::async_write_at(s
, 1234, buffers
,
3704 boost::asio::transfer_at_least(1),
3705 bindns::bind(async_write_handler
,
3706 _1
, _2
, 10, &called
));
3709 BOOST_ASIO_CHECK(called
);
3710 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3714 boost::asio::async_write_at(s
, 0, buffers
,
3715 boost::asio::transfer_at_least(10),
3716 bindns::bind(async_write_handler
,
3717 _1
, _2
, sizeof(write_data
), &called
));
3720 BOOST_ASIO_CHECK(called
);
3721 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3725 boost::asio::async_write_at(s
, 1234, buffers
,
3726 boost::asio::transfer_at_least(10),
3727 bindns::bind(async_write_handler
,
3728 _1
, _2
, sizeof(write_data
), &called
));
3731 BOOST_ASIO_CHECK(called
);
3732 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3735 s
.next_write_length(1);
3737 boost::asio::async_write_at(s
, 0, buffers
,
3738 boost::asio::transfer_at_least(10),
3739 bindns::bind(async_write_handler
,
3740 _1
, _2
, 10, &called
));
3743 BOOST_ASIO_CHECK(called
);
3744 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3747 s
.next_write_length(1);
3749 boost::asio::async_write_at(s
, 1234, buffers
,
3750 boost::asio::transfer_at_least(10),
3751 bindns::bind(async_write_handler
,
3752 _1
, _2
, 10, &called
));
3755 BOOST_ASIO_CHECK(called
);
3756 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3759 s
.next_write_length(10);
3761 boost::asio::async_write_at(s
, 0, buffers
,
3762 boost::asio::transfer_at_least(10),
3763 bindns::bind(async_write_handler
,
3764 _1
, _2
, 10, &called
));
3767 BOOST_ASIO_CHECK(called
);
3768 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3771 s
.next_write_length(10);
3773 boost::asio::async_write_at(s
, 1234, buffers
,
3774 boost::asio::transfer_at_least(10),
3775 bindns::bind(async_write_handler
,
3776 _1
, _2
, 10, &called
));
3779 BOOST_ASIO_CHECK(called
);
3780 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3784 boost::asio::async_write_at(s
, 0, buffers
,
3785 boost::asio::transfer_at_least(42),
3786 bindns::bind(async_write_handler
,
3787 _1
, _2
, sizeof(write_data
), &called
));
3790 BOOST_ASIO_CHECK(called
);
3791 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3795 boost::asio::async_write_at(s
, 1234, buffers
,
3796 boost::asio::transfer_at_least(42),
3797 bindns::bind(async_write_handler
,
3798 _1
, _2
, sizeof(write_data
), &called
));
3801 BOOST_ASIO_CHECK(called
);
3802 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3805 s
.next_write_length(1);
3807 boost::asio::async_write_at(s
, 0, buffers
,
3808 boost::asio::transfer_at_least(42),
3809 bindns::bind(async_write_handler
,
3810 _1
, _2
, 42, &called
));
3813 BOOST_ASIO_CHECK(called
);
3814 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
3817 s
.next_write_length(1);
3819 boost::asio::async_write_at(s
, 1234, buffers
,
3820 boost::asio::transfer_at_least(42),
3821 bindns::bind(async_write_handler
,
3822 _1
, _2
, 42, &called
));
3825 BOOST_ASIO_CHECK(called
);
3826 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
3829 s
.next_write_length(10);
3831 boost::asio::async_write_at(s
, 0, buffers
,
3832 boost::asio::transfer_at_least(42),
3833 bindns::bind(async_write_handler
,
3834 _1
, _2
, 50, &called
));
3837 BOOST_ASIO_CHECK(called
);
3838 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
3841 s
.next_write_length(10);
3843 boost::asio::async_write_at(s
, 1234, buffers
,
3844 boost::asio::transfer_at_least(42),
3845 bindns::bind(async_write_handler
,
3846 _1
, _2
, 50, &called
));
3849 BOOST_ASIO_CHECK(called
);
3850 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
3854 boost::asio::async_write_at(s
, 0, buffers
,
3855 boost::asio::transfer_exactly(1),
3856 bindns::bind(async_write_handler
,
3857 _1
, _2
, 1, &called
));
3860 BOOST_ASIO_CHECK(called
);
3861 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3865 boost::asio::async_write_at(s
, 1234, buffers
,
3866 boost::asio::transfer_exactly(1),
3867 bindns::bind(async_write_handler
,
3868 _1
, _2
, 1, &called
));
3871 BOOST_ASIO_CHECK(called
);
3872 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3875 s
.next_write_length(1);
3877 boost::asio::async_write_at(s
, 0, buffers
,
3878 boost::asio::transfer_exactly(1),
3879 bindns::bind(async_write_handler
,
3880 _1
, _2
, 1, &called
));
3883 BOOST_ASIO_CHECK(called
);
3884 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3887 s
.next_write_length(1);
3889 boost::asio::async_write_at(s
, 1234, buffers
,
3890 boost::asio::transfer_exactly(1),
3891 bindns::bind(async_write_handler
,
3892 _1
, _2
, 1, &called
));
3895 BOOST_ASIO_CHECK(called
);
3896 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3899 s
.next_write_length(10);
3901 boost::asio::async_write_at(s
, 0, buffers
,
3902 boost::asio::transfer_exactly(1),
3903 bindns::bind(async_write_handler
,
3904 _1
, _2
, 1, &called
));
3907 BOOST_ASIO_CHECK(called
);
3908 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3911 s
.next_write_length(10);
3913 boost::asio::async_write_at(s
, 1234, buffers
,
3914 boost::asio::transfer_exactly(1),
3915 bindns::bind(async_write_handler
,
3916 _1
, _2
, 1, &called
));
3919 BOOST_ASIO_CHECK(called
);
3920 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3924 boost::asio::async_write_at(s
, 0, buffers
,
3925 boost::asio::transfer_exactly(10),
3926 bindns::bind(async_write_handler
,
3927 _1
, _2
, 10, &called
));
3930 BOOST_ASIO_CHECK(called
);
3931 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3935 boost::asio::async_write_at(s
, 1234, buffers
,
3936 boost::asio::transfer_exactly(10),
3937 bindns::bind(async_write_handler
,
3938 _1
, _2
, 10, &called
));
3941 BOOST_ASIO_CHECK(called
);
3942 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3945 s
.next_write_length(1);
3947 boost::asio::async_write_at(s
, 0, buffers
,
3948 boost::asio::transfer_exactly(10),
3949 bindns::bind(async_write_handler
,
3950 _1
, _2
, 10, &called
));
3953 BOOST_ASIO_CHECK(called
);
3954 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3957 s
.next_write_length(1);
3959 boost::asio::async_write_at(s
, 1234, buffers
,
3960 boost::asio::transfer_exactly(10),
3961 bindns::bind(async_write_handler
,
3962 _1
, _2
, 10, &called
));
3965 BOOST_ASIO_CHECK(called
);
3966 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3969 s
.next_write_length(10);
3971 boost::asio::async_write_at(s
, 0, buffers
,
3972 boost::asio::transfer_exactly(10),
3973 bindns::bind(async_write_handler
,
3974 _1
, _2
, 10, &called
));
3977 BOOST_ASIO_CHECK(called
);
3978 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3981 s
.next_write_length(10);
3983 boost::asio::async_write_at(s
, 1234, buffers
,
3984 boost::asio::transfer_exactly(10),
3985 bindns::bind(async_write_handler
,
3986 _1
, _2
, 10, &called
));
3989 BOOST_ASIO_CHECK(called
);
3990 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3994 boost::asio::async_write_at(s
, 0, buffers
,
3995 boost::asio::transfer_exactly(42),
3996 bindns::bind(async_write_handler
,
3997 _1
, _2
, 42, &called
));
4000 BOOST_ASIO_CHECK(called
);
4001 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4005 boost::asio::async_write_at(s
, 1234, buffers
,
4006 boost::asio::transfer_exactly(42),
4007 bindns::bind(async_write_handler
,
4008 _1
, _2
, 42, &called
));
4011 BOOST_ASIO_CHECK(called
);
4012 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4015 s
.next_write_length(1);
4017 boost::asio::async_write_at(s
, 0, buffers
,
4018 boost::asio::transfer_exactly(42),
4019 bindns::bind(async_write_handler
,
4020 _1
, _2
, 42, &called
));
4023 BOOST_ASIO_CHECK(called
);
4024 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4027 s
.next_write_length(1);
4029 boost::asio::async_write_at(s
, 1234, buffers
,
4030 boost::asio::transfer_exactly(42),
4031 bindns::bind(async_write_handler
,
4032 _1
, _2
, 42, &called
));
4035 BOOST_ASIO_CHECK(called
);
4036 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4039 s
.next_write_length(10);
4041 boost::asio::async_write_at(s
, 0, buffers
,
4042 boost::asio::transfer_exactly(42),
4043 bindns::bind(async_write_handler
,
4044 _1
, _2
, 42, &called
));
4047 BOOST_ASIO_CHECK(called
);
4048 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4051 s
.next_write_length(10);
4053 boost::asio::async_write_at(s
, 1234, buffers
,
4054 boost::asio::transfer_exactly(42),
4055 bindns::bind(async_write_handler
,
4056 _1
, _2
, 42, &called
));
4059 BOOST_ASIO_CHECK(called
);
4060 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4064 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4065 bindns::bind(async_write_handler
,
4066 _1
, _2
, sizeof(write_data
), &called
));
4069 BOOST_ASIO_CHECK(called
);
4070 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4074 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4075 bindns::bind(async_write_handler
,
4076 _1
, _2
, sizeof(write_data
), &called
));
4079 BOOST_ASIO_CHECK(called
);
4080 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4083 s
.next_write_length(1);
4085 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4086 bindns::bind(async_write_handler
,
4087 _1
, _2
, sizeof(write_data
), &called
));
4090 BOOST_ASIO_CHECK(called
);
4091 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4094 s
.next_write_length(1);
4096 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4097 bindns::bind(async_write_handler
,
4098 _1
, _2
, sizeof(write_data
), &called
));
4101 BOOST_ASIO_CHECK(called
);
4102 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4105 s
.next_write_length(10);
4107 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4108 bindns::bind(async_write_handler
,
4109 _1
, _2
, sizeof(write_data
), &called
));
4112 BOOST_ASIO_CHECK(called
);
4113 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4116 s
.next_write_length(10);
4118 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4119 bindns::bind(async_write_handler
,
4120 _1
, _2
, sizeof(write_data
), &called
));
4123 BOOST_ASIO_CHECK(called
);
4124 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4128 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4129 bindns::bind(async_write_handler
,
4130 _1
, _2
, sizeof(write_data
), &called
));
4133 BOOST_ASIO_CHECK(called
);
4134 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4138 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
4139 bindns::bind(async_write_handler
,
4140 _1
, _2
, sizeof(write_data
), &called
));
4143 BOOST_ASIO_CHECK(called
);
4144 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4147 s
.next_write_length(1);
4149 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4150 bindns::bind(async_write_handler
,
4151 _1
, _2
, sizeof(write_data
), &called
));
4154 BOOST_ASIO_CHECK(called
);
4155 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4158 s
.next_write_length(1);
4160 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
4161 bindns::bind(async_write_handler
,
4162 _1
, _2
, sizeof(write_data
), &called
));
4165 BOOST_ASIO_CHECK(called
);
4166 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4169 s
.next_write_length(10);
4171 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4172 bindns::bind(async_write_handler
,
4173 _1
, _2
, sizeof(write_data
), &called
));
4176 BOOST_ASIO_CHECK(called
);
4177 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4180 s
.next_write_length(10);
4182 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
4183 bindns::bind(async_write_handler
,
4184 _1
, _2
, sizeof(write_data
), &called
));
4187 BOOST_ASIO_CHECK(called
);
4188 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4191 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4192 archetypes::lazy_handler());
4193 BOOST_ASIO_CHECK(i
== 42);
4196 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4199 void test_5_arg_mutable_buffer_async_write_at()
4201 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
4202 namespace bindns
= boost
;
4203 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
4204 namespace bindns
= std
;
4205 using std::placeholders::_1
;
4206 using std::placeholders::_2
;
4207 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
4209 boost::asio::io_context ioc
;
4210 test_random_access_device
s(ioc
);
4211 boost::asio::mutable_buffer buffers
4212 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
4215 bool called
= false;
4216 boost::asio::async_write_at(s
, 0, buffers
,
4217 boost::asio::transfer_all(),
4218 bindns::bind(async_write_handler
,
4219 _1
, _2
, sizeof(mutable_write_data
), &called
));
4222 BOOST_ASIO_CHECK(called
);
4223 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4227 boost::asio::async_write_at(s
, 1234, buffers
,
4228 boost::asio::transfer_all(),
4229 bindns::bind(async_write_handler
,
4230 _1
, _2
, sizeof(mutable_write_data
), &called
));
4233 BOOST_ASIO_CHECK(called
);
4234 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4237 s
.next_write_length(1);
4239 boost::asio::async_write_at(s
, 0, buffers
,
4240 boost::asio::transfer_all(),
4241 bindns::bind(async_write_handler
,
4242 _1
, _2
, sizeof(mutable_write_data
), &called
));
4245 BOOST_ASIO_CHECK(called
);
4246 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4249 s
.next_write_length(1);
4251 boost::asio::async_write_at(s
, 1234, buffers
,
4252 boost::asio::transfer_all(),
4253 bindns::bind(async_write_handler
,
4254 _1
, _2
, sizeof(mutable_write_data
), &called
));
4257 BOOST_ASIO_CHECK(called
);
4258 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4261 s
.next_write_length(10);
4263 boost::asio::async_write_at(s
, 0, buffers
,
4264 boost::asio::transfer_all(),
4265 bindns::bind(async_write_handler
,
4266 _1
, _2
, sizeof(mutable_write_data
), &called
));
4269 BOOST_ASIO_CHECK(called
);
4270 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4273 s
.next_write_length(10);
4275 boost::asio::async_write_at(s
, 1234, buffers
,
4276 boost::asio::transfer_all(),
4277 bindns::bind(async_write_handler
,
4278 _1
, _2
, sizeof(mutable_write_data
), &called
));
4281 BOOST_ASIO_CHECK(called
);
4282 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4286 boost::asio::async_write_at(s
, 0, buffers
,
4287 boost::asio::transfer_at_least(1),
4288 bindns::bind(async_write_handler
,
4289 _1
, _2
, sizeof(mutable_write_data
), &called
));
4292 BOOST_ASIO_CHECK(called
);
4293 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4297 boost::asio::async_write_at(s
, 1234, buffers
,
4298 boost::asio::transfer_at_least(1),
4299 bindns::bind(async_write_handler
,
4300 _1
, _2
, sizeof(mutable_write_data
), &called
));
4303 BOOST_ASIO_CHECK(called
);
4304 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4307 s
.next_write_length(1);
4309 boost::asio::async_write_at(s
, 0, buffers
,
4310 boost::asio::transfer_at_least(1),
4311 bindns::bind(async_write_handler
,
4312 _1
, _2
, 1, &called
));
4315 BOOST_ASIO_CHECK(called
);
4316 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4319 s
.next_write_length(1);
4321 boost::asio::async_write_at(s
, 1234, buffers
,
4322 boost::asio::transfer_at_least(1),
4323 bindns::bind(async_write_handler
,
4324 _1
, _2
, 1, &called
));
4327 BOOST_ASIO_CHECK(called
);
4328 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4331 s
.next_write_length(10);
4333 boost::asio::async_write_at(s
, 0, buffers
,
4334 boost::asio::transfer_at_least(1),
4335 bindns::bind(async_write_handler
,
4336 _1
, _2
, 10, &called
));
4339 BOOST_ASIO_CHECK(called
);
4340 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4343 s
.next_write_length(10);
4345 boost::asio::async_write_at(s
, 1234, buffers
,
4346 boost::asio::transfer_at_least(1),
4347 bindns::bind(async_write_handler
,
4348 _1
, _2
, 10, &called
));
4351 BOOST_ASIO_CHECK(called
);
4352 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4356 boost::asio::async_write_at(s
, 0, buffers
,
4357 boost::asio::transfer_at_least(10),
4358 bindns::bind(async_write_handler
,
4359 _1
, _2
, sizeof(mutable_write_data
), &called
));
4362 BOOST_ASIO_CHECK(called
);
4363 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4367 boost::asio::async_write_at(s
, 1234, buffers
,
4368 boost::asio::transfer_at_least(10),
4369 bindns::bind(async_write_handler
,
4370 _1
, _2
, sizeof(mutable_write_data
), &called
));
4373 BOOST_ASIO_CHECK(called
);
4374 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4377 s
.next_write_length(1);
4379 boost::asio::async_write_at(s
, 0, buffers
,
4380 boost::asio::transfer_at_least(10),
4381 bindns::bind(async_write_handler
,
4382 _1
, _2
, 10, &called
));
4385 BOOST_ASIO_CHECK(called
);
4386 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4389 s
.next_write_length(1);
4391 boost::asio::async_write_at(s
, 1234, buffers
,
4392 boost::asio::transfer_at_least(10),
4393 bindns::bind(async_write_handler
,
4394 _1
, _2
, 10, &called
));
4397 BOOST_ASIO_CHECK(called
);
4398 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4401 s
.next_write_length(10);
4403 boost::asio::async_write_at(s
, 0, buffers
,
4404 boost::asio::transfer_at_least(10),
4405 bindns::bind(async_write_handler
,
4406 _1
, _2
, 10, &called
));
4409 BOOST_ASIO_CHECK(called
);
4410 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4413 s
.next_write_length(10);
4415 boost::asio::async_write_at(s
, 1234, buffers
,
4416 boost::asio::transfer_at_least(10),
4417 bindns::bind(async_write_handler
,
4418 _1
, _2
, 10, &called
));
4421 BOOST_ASIO_CHECK(called
);
4422 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4426 boost::asio::async_write_at(s
, 0, buffers
,
4427 boost::asio::transfer_at_least(42),
4428 bindns::bind(async_write_handler
,
4429 _1
, _2
, sizeof(mutable_write_data
), &called
));
4432 BOOST_ASIO_CHECK(called
);
4433 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4437 boost::asio::async_write_at(s
, 1234, buffers
,
4438 boost::asio::transfer_at_least(42),
4439 bindns::bind(async_write_handler
,
4440 _1
, _2
, sizeof(mutable_write_data
), &called
));
4443 BOOST_ASIO_CHECK(called
);
4444 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4447 s
.next_write_length(1);
4449 boost::asio::async_write_at(s
, 0, buffers
,
4450 boost::asio::transfer_at_least(42),
4451 bindns::bind(async_write_handler
,
4452 _1
, _2
, 42, &called
));
4455 BOOST_ASIO_CHECK(called
);
4456 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4459 s
.next_write_length(1);
4461 boost::asio::async_write_at(s
, 1234, buffers
,
4462 boost::asio::transfer_at_least(42),
4463 bindns::bind(async_write_handler
,
4464 _1
, _2
, 42, &called
));
4467 BOOST_ASIO_CHECK(called
);
4468 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4471 s
.next_write_length(10);
4473 boost::asio::async_write_at(s
, 0, buffers
,
4474 boost::asio::transfer_at_least(42),
4475 bindns::bind(async_write_handler
,
4476 _1
, _2
, 50, &called
));
4479 BOOST_ASIO_CHECK(called
);
4480 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
4483 s
.next_write_length(10);
4485 boost::asio::async_write_at(s
, 1234, buffers
,
4486 boost::asio::transfer_at_least(42),
4487 bindns::bind(async_write_handler
,
4488 _1
, _2
, 50, &called
));
4491 BOOST_ASIO_CHECK(called
);
4492 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
4496 boost::asio::async_write_at(s
, 0, buffers
,
4497 boost::asio::transfer_exactly(1),
4498 bindns::bind(async_write_handler
,
4499 _1
, _2
, 1, &called
));
4502 BOOST_ASIO_CHECK(called
);
4503 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4507 boost::asio::async_write_at(s
, 1234, buffers
,
4508 boost::asio::transfer_exactly(1),
4509 bindns::bind(async_write_handler
,
4510 _1
, _2
, 1, &called
));
4513 BOOST_ASIO_CHECK(called
);
4514 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4517 s
.next_write_length(1);
4519 boost::asio::async_write_at(s
, 0, buffers
,
4520 boost::asio::transfer_exactly(1),
4521 bindns::bind(async_write_handler
,
4522 _1
, _2
, 1, &called
));
4525 BOOST_ASIO_CHECK(called
);
4526 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4529 s
.next_write_length(1);
4531 boost::asio::async_write_at(s
, 1234, buffers
,
4532 boost::asio::transfer_exactly(1),
4533 bindns::bind(async_write_handler
,
4534 _1
, _2
, 1, &called
));
4537 BOOST_ASIO_CHECK(called
);
4538 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4541 s
.next_write_length(10);
4543 boost::asio::async_write_at(s
, 0, buffers
,
4544 boost::asio::transfer_exactly(1),
4545 bindns::bind(async_write_handler
,
4546 _1
, _2
, 1, &called
));
4549 BOOST_ASIO_CHECK(called
);
4550 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4553 s
.next_write_length(10);
4555 boost::asio::async_write_at(s
, 1234, buffers
,
4556 boost::asio::transfer_exactly(1),
4557 bindns::bind(async_write_handler
,
4558 _1
, _2
, 1, &called
));
4561 BOOST_ASIO_CHECK(called
);
4562 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4566 boost::asio::async_write_at(s
, 0, buffers
,
4567 boost::asio::transfer_exactly(10),
4568 bindns::bind(async_write_handler
,
4569 _1
, _2
, 10, &called
));
4572 BOOST_ASIO_CHECK(called
);
4573 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4577 boost::asio::async_write_at(s
, 1234, buffers
,
4578 boost::asio::transfer_exactly(10),
4579 bindns::bind(async_write_handler
,
4580 _1
, _2
, 10, &called
));
4583 BOOST_ASIO_CHECK(called
);
4584 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4587 s
.next_write_length(1);
4589 boost::asio::async_write_at(s
, 0, buffers
,
4590 boost::asio::transfer_exactly(10),
4591 bindns::bind(async_write_handler
,
4592 _1
, _2
, 10, &called
));
4595 BOOST_ASIO_CHECK(called
);
4596 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4599 s
.next_write_length(1);
4601 boost::asio::async_write_at(s
, 1234, buffers
,
4602 boost::asio::transfer_exactly(10),
4603 bindns::bind(async_write_handler
,
4604 _1
, _2
, 10, &called
));
4607 BOOST_ASIO_CHECK(called
);
4608 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4611 s
.next_write_length(10);
4613 boost::asio::async_write_at(s
, 0, buffers
,
4614 boost::asio::transfer_exactly(10),
4615 bindns::bind(async_write_handler
,
4616 _1
, _2
, 10, &called
));
4619 BOOST_ASIO_CHECK(called
);
4620 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4623 s
.next_write_length(10);
4625 boost::asio::async_write_at(s
, 1234, buffers
,
4626 boost::asio::transfer_exactly(10),
4627 bindns::bind(async_write_handler
,
4628 _1
, _2
, 10, &called
));
4631 BOOST_ASIO_CHECK(called
);
4632 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4636 boost::asio::async_write_at(s
, 0, buffers
,
4637 boost::asio::transfer_exactly(42),
4638 bindns::bind(async_write_handler
,
4639 _1
, _2
, 42, &called
));
4642 BOOST_ASIO_CHECK(called
);
4643 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4647 boost::asio::async_write_at(s
, 1234, buffers
,
4648 boost::asio::transfer_exactly(42),
4649 bindns::bind(async_write_handler
,
4650 _1
, _2
, 42, &called
));
4653 BOOST_ASIO_CHECK(called
);
4654 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4657 s
.next_write_length(1);
4659 boost::asio::async_write_at(s
, 0, buffers
,
4660 boost::asio::transfer_exactly(42),
4661 bindns::bind(async_write_handler
,
4662 _1
, _2
, 42, &called
));
4665 BOOST_ASIO_CHECK(called
);
4666 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4669 s
.next_write_length(1);
4671 boost::asio::async_write_at(s
, 1234, buffers
,
4672 boost::asio::transfer_exactly(42),
4673 bindns::bind(async_write_handler
,
4674 _1
, _2
, 42, &called
));
4677 BOOST_ASIO_CHECK(called
);
4678 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4681 s
.next_write_length(10);
4683 boost::asio::async_write_at(s
, 0, buffers
,
4684 boost::asio::transfer_exactly(42),
4685 bindns::bind(async_write_handler
,
4686 _1
, _2
, 42, &called
));
4689 BOOST_ASIO_CHECK(called
);
4690 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4693 s
.next_write_length(10);
4695 boost::asio::async_write_at(s
, 1234, buffers
,
4696 boost::asio::transfer_exactly(42),
4697 bindns::bind(async_write_handler
,
4698 _1
, _2
, 42, &called
));
4701 BOOST_ASIO_CHECK(called
);
4702 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4706 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4707 bindns::bind(async_write_handler
,
4708 _1
, _2
, sizeof(mutable_write_data
), &called
));
4711 BOOST_ASIO_CHECK(called
);
4712 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4716 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4717 bindns::bind(async_write_handler
,
4718 _1
, _2
, sizeof(mutable_write_data
), &called
));
4721 BOOST_ASIO_CHECK(called
);
4722 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4725 s
.next_write_length(1);
4727 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4728 bindns::bind(async_write_handler
,
4729 _1
, _2
, sizeof(mutable_write_data
), &called
));
4732 BOOST_ASIO_CHECK(called
);
4733 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4736 s
.next_write_length(1);
4738 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4739 bindns::bind(async_write_handler
,
4740 _1
, _2
, sizeof(mutable_write_data
), &called
));
4743 BOOST_ASIO_CHECK(called
);
4744 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4747 s
.next_write_length(10);
4749 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4750 bindns::bind(async_write_handler
,
4751 _1
, _2
, sizeof(mutable_write_data
), &called
));
4754 BOOST_ASIO_CHECK(called
);
4755 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4758 s
.next_write_length(10);
4760 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4761 bindns::bind(async_write_handler
,
4762 _1
, _2
, sizeof(mutable_write_data
), &called
));
4765 BOOST_ASIO_CHECK(called
);
4766 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4770 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4771 bindns::bind(async_write_handler
,
4772 _1
, _2
, sizeof(mutable_write_data
), &called
));
4775 BOOST_ASIO_CHECK(called
);
4776 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4780 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
4781 bindns::bind(async_write_handler
,
4782 _1
, _2
, sizeof(mutable_write_data
), &called
));
4785 BOOST_ASIO_CHECK(called
);
4786 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4789 s
.next_write_length(1);
4791 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4792 bindns::bind(async_write_handler
,
4793 _1
, _2
, sizeof(mutable_write_data
), &called
));
4796 BOOST_ASIO_CHECK(called
);
4797 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4800 s
.next_write_length(1);
4802 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
4803 bindns::bind(async_write_handler
,
4804 _1
, _2
, sizeof(mutable_write_data
), &called
));
4807 BOOST_ASIO_CHECK(called
);
4808 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4811 s
.next_write_length(10);
4813 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4814 bindns::bind(async_write_handler
,
4815 _1
, _2
, sizeof(mutable_write_data
), &called
));
4818 BOOST_ASIO_CHECK(called
);
4819 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4822 s
.next_write_length(10);
4824 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
4825 bindns::bind(async_write_handler
,
4826 _1
, _2
, sizeof(mutable_write_data
), &called
));
4829 BOOST_ASIO_CHECK(called
);
4830 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4833 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
4834 archetypes::lazy_handler());
4835 BOOST_ASIO_CHECK(i
== 42);
4838 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4841 void test_5_arg_boost_array_buffers_async_write_at()
4843 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
4844 namespace bindns
= boost
;
4845 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
4846 namespace bindns
= std
;
4847 using std::placeholders::_1
;
4848 using std::placeholders::_2
;
4849 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
4851 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
4852 boost::asio::io_context ioc
;
4853 test_random_access_device
s(ioc
);
4854 boost::array
<boost::asio::const_buffer
, 2> buffers
= { {
4855 boost::asio::buffer(write_data
, 32),
4856 boost::asio::buffer(write_data
) + 32 } };
4859 bool called
= false;
4860 boost::asio::async_write_at(s
, 0, buffers
,
4861 boost::asio::transfer_all(),
4862 bindns::bind(async_write_handler
,
4863 _1
, _2
, sizeof(write_data
), &called
));
4866 BOOST_ASIO_CHECK(called
);
4867 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4871 boost::asio::async_write_at(s
, 1234, buffers
,
4872 boost::asio::transfer_all(),
4873 bindns::bind(async_write_handler
,
4874 _1
, _2
, sizeof(write_data
), &called
));
4877 BOOST_ASIO_CHECK(called
);
4878 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4881 s
.next_write_length(1);
4883 boost::asio::async_write_at(s
, 0, buffers
,
4884 boost::asio::transfer_all(),
4885 bindns::bind(async_write_handler
,
4886 _1
, _2
, sizeof(write_data
), &called
));
4889 BOOST_ASIO_CHECK(called
);
4890 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4893 s
.next_write_length(1);
4895 boost::asio::async_write_at(s
, 1234, buffers
,
4896 boost::asio::transfer_all(),
4897 bindns::bind(async_write_handler
,
4898 _1
, _2
, sizeof(write_data
), &called
));
4901 BOOST_ASIO_CHECK(called
);
4902 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4905 s
.next_write_length(10);
4907 boost::asio::async_write_at(s
, 0, buffers
,
4908 boost::asio::transfer_all(),
4909 bindns::bind(async_write_handler
,
4910 _1
, _2
, sizeof(write_data
), &called
));
4913 BOOST_ASIO_CHECK(called
);
4914 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4917 s
.next_write_length(10);
4919 boost::asio::async_write_at(s
, 1234, buffers
,
4920 boost::asio::transfer_all(),
4921 bindns::bind(async_write_handler
,
4922 _1
, _2
, sizeof(write_data
), &called
));
4925 BOOST_ASIO_CHECK(called
);
4926 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4930 boost::asio::async_write_at(s
, 0, buffers
,
4931 boost::asio::transfer_at_least(1),
4932 bindns::bind(async_write_handler
,
4933 _1
, _2
, sizeof(write_data
), &called
));
4936 BOOST_ASIO_CHECK(called
);
4937 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4941 boost::asio::async_write_at(s
, 1234, buffers
,
4942 boost::asio::transfer_at_least(1),
4943 bindns::bind(async_write_handler
,
4944 _1
, _2
, sizeof(write_data
), &called
));
4947 BOOST_ASIO_CHECK(called
);
4948 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4951 s
.next_write_length(1);
4953 boost::asio::async_write_at(s
, 0, buffers
,
4954 boost::asio::transfer_at_least(1),
4955 bindns::bind(async_write_handler
,
4956 _1
, _2
, 1, &called
));
4959 BOOST_ASIO_CHECK(called
);
4960 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4963 s
.next_write_length(1);
4965 boost::asio::async_write_at(s
, 1234, buffers
,
4966 boost::asio::transfer_at_least(1),
4967 bindns::bind(async_write_handler
,
4968 _1
, _2
, 1, &called
));
4971 BOOST_ASIO_CHECK(called
);
4972 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4975 s
.next_write_length(10);
4977 boost::asio::async_write_at(s
, 0, buffers
,
4978 boost::asio::transfer_at_least(1),
4979 bindns::bind(async_write_handler
,
4980 _1
, _2
, 10, &called
));
4983 BOOST_ASIO_CHECK(called
);
4984 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4987 s
.next_write_length(10);
4989 boost::asio::async_write_at(s
, 1234, buffers
,
4990 boost::asio::transfer_at_least(1),
4991 bindns::bind(async_write_handler
,
4992 _1
, _2
, 10, &called
));
4995 BOOST_ASIO_CHECK(called
);
4996 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5000 boost::asio::async_write_at(s
, 0, buffers
,
5001 boost::asio::transfer_at_least(10),
5002 bindns::bind(async_write_handler
,
5003 _1
, _2
, sizeof(write_data
), &called
));
5006 BOOST_ASIO_CHECK(called
);
5007 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5011 boost::asio::async_write_at(s
, 1234, buffers
,
5012 boost::asio::transfer_at_least(10),
5013 bindns::bind(async_write_handler
,
5014 _1
, _2
, sizeof(write_data
), &called
));
5017 BOOST_ASIO_CHECK(called
);
5018 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5021 s
.next_write_length(1);
5023 boost::asio::async_write_at(s
, 0, buffers
,
5024 boost::asio::transfer_at_least(10),
5025 bindns::bind(async_write_handler
,
5026 _1
, _2
, 10, &called
));
5029 BOOST_ASIO_CHECK(called
);
5030 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5033 s
.next_write_length(1);
5035 boost::asio::async_write_at(s
, 1234, buffers
,
5036 boost::asio::transfer_at_least(10),
5037 bindns::bind(async_write_handler
,
5038 _1
, _2
, 10, &called
));
5041 BOOST_ASIO_CHECK(called
);
5042 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5045 s
.next_write_length(10);
5047 boost::asio::async_write_at(s
, 0, buffers
,
5048 boost::asio::transfer_at_least(10),
5049 bindns::bind(async_write_handler
,
5050 _1
, _2
, 10, &called
));
5053 BOOST_ASIO_CHECK(called
);
5054 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5057 s
.next_write_length(10);
5059 boost::asio::async_write_at(s
, 1234, buffers
,
5060 boost::asio::transfer_at_least(10),
5061 bindns::bind(async_write_handler
,
5062 _1
, _2
, 10, &called
));
5065 BOOST_ASIO_CHECK(called
);
5066 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5070 boost::asio::async_write_at(s
, 0, buffers
,
5071 boost::asio::transfer_at_least(42),
5072 bindns::bind(async_write_handler
,
5073 _1
, _2
, sizeof(write_data
), &called
));
5076 BOOST_ASIO_CHECK(called
);
5077 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5081 boost::asio::async_write_at(s
, 1234, buffers
,
5082 boost::asio::transfer_at_least(42),
5083 bindns::bind(async_write_handler
,
5084 _1
, _2
, sizeof(write_data
), &called
));
5087 BOOST_ASIO_CHECK(called
);
5088 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5091 s
.next_write_length(1);
5093 boost::asio::async_write_at(s
, 0, buffers
,
5094 boost::asio::transfer_at_least(42),
5095 bindns::bind(async_write_handler
,
5096 _1
, _2
, 42, &called
));
5099 BOOST_ASIO_CHECK(called
);
5100 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5103 s
.next_write_length(1);
5105 boost::asio::async_write_at(s
, 1234, buffers
,
5106 boost::asio::transfer_at_least(42),
5107 bindns::bind(async_write_handler
,
5108 _1
, _2
, 42, &called
));
5111 BOOST_ASIO_CHECK(called
);
5112 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5115 s
.next_write_length(10);
5117 boost::asio::async_write_at(s
, 0, buffers
,
5118 boost::asio::transfer_at_least(42),
5119 bindns::bind(async_write_handler
,
5120 _1
, _2
, 50, &called
));
5123 BOOST_ASIO_CHECK(called
);
5124 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
5127 s
.next_write_length(10);
5129 boost::asio::async_write_at(s
, 1234, buffers
,
5130 boost::asio::transfer_at_least(42),
5131 bindns::bind(async_write_handler
,
5132 _1
, _2
, 50, &called
));
5135 BOOST_ASIO_CHECK(called
);
5136 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
5140 boost::asio::async_write_at(s
, 0, buffers
,
5141 boost::asio::transfer_exactly(1),
5142 bindns::bind(async_write_handler
,
5143 _1
, _2
, 1, &called
));
5146 BOOST_ASIO_CHECK(called
);
5147 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5151 boost::asio::async_write_at(s
, 1234, buffers
,
5152 boost::asio::transfer_exactly(1),
5153 bindns::bind(async_write_handler
,
5154 _1
, _2
, 1, &called
));
5157 BOOST_ASIO_CHECK(called
);
5158 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5161 s
.next_write_length(1);
5163 boost::asio::async_write_at(s
, 0, buffers
,
5164 boost::asio::transfer_exactly(1),
5165 bindns::bind(async_write_handler
,
5166 _1
, _2
, 1, &called
));
5169 BOOST_ASIO_CHECK(called
);
5170 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5173 s
.next_write_length(1);
5175 boost::asio::async_write_at(s
, 1234, buffers
,
5176 boost::asio::transfer_exactly(1),
5177 bindns::bind(async_write_handler
,
5178 _1
, _2
, 1, &called
));
5181 BOOST_ASIO_CHECK(called
);
5182 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5185 s
.next_write_length(10);
5187 boost::asio::async_write_at(s
, 0, buffers
,
5188 boost::asio::transfer_exactly(1),
5189 bindns::bind(async_write_handler
,
5190 _1
, _2
, 1, &called
));
5193 BOOST_ASIO_CHECK(called
);
5194 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5197 s
.next_write_length(10);
5199 boost::asio::async_write_at(s
, 1234, buffers
,
5200 boost::asio::transfer_exactly(1),
5201 bindns::bind(async_write_handler
,
5202 _1
, _2
, 1, &called
));
5205 BOOST_ASIO_CHECK(called
);
5206 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5210 boost::asio::async_write_at(s
, 0, buffers
,
5211 boost::asio::transfer_exactly(10),
5212 bindns::bind(async_write_handler
,
5213 _1
, _2
, 10, &called
));
5216 BOOST_ASIO_CHECK(called
);
5217 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5221 boost::asio::async_write_at(s
, 1234, buffers
,
5222 boost::asio::transfer_exactly(10),
5223 bindns::bind(async_write_handler
,
5224 _1
, _2
, 10, &called
));
5227 BOOST_ASIO_CHECK(called
);
5228 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5231 s
.next_write_length(1);
5233 boost::asio::async_write_at(s
, 0, buffers
,
5234 boost::asio::transfer_exactly(10),
5235 bindns::bind(async_write_handler
,
5236 _1
, _2
, 10, &called
));
5239 BOOST_ASIO_CHECK(called
);
5240 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5243 s
.next_write_length(1);
5245 boost::asio::async_write_at(s
, 1234, buffers
,
5246 boost::asio::transfer_exactly(10),
5247 bindns::bind(async_write_handler
,
5248 _1
, _2
, 10, &called
));
5251 BOOST_ASIO_CHECK(called
);
5252 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5255 s
.next_write_length(10);
5257 boost::asio::async_write_at(s
, 0, buffers
,
5258 boost::asio::transfer_exactly(10),
5259 bindns::bind(async_write_handler
,
5260 _1
, _2
, 10, &called
));
5263 BOOST_ASIO_CHECK(called
);
5264 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5267 s
.next_write_length(10);
5269 boost::asio::async_write_at(s
, 1234, buffers
,
5270 boost::asio::transfer_exactly(10),
5271 bindns::bind(async_write_handler
,
5272 _1
, _2
, 10, &called
));
5275 BOOST_ASIO_CHECK(called
);
5276 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5280 boost::asio::async_write_at(s
, 0, buffers
,
5281 boost::asio::transfer_exactly(42),
5282 bindns::bind(async_write_handler
,
5283 _1
, _2
, 42, &called
));
5286 BOOST_ASIO_CHECK(called
);
5287 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5291 boost::asio::async_write_at(s
, 1234, buffers
,
5292 boost::asio::transfer_exactly(42),
5293 bindns::bind(async_write_handler
,
5294 _1
, _2
, 42, &called
));
5297 BOOST_ASIO_CHECK(called
);
5298 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5301 s
.next_write_length(1);
5303 boost::asio::async_write_at(s
, 0, buffers
,
5304 boost::asio::transfer_exactly(42),
5305 bindns::bind(async_write_handler
,
5306 _1
, _2
, 42, &called
));
5309 BOOST_ASIO_CHECK(called
);
5310 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5313 s
.next_write_length(1);
5315 boost::asio::async_write_at(s
, 1234, buffers
,
5316 boost::asio::transfer_exactly(42),
5317 bindns::bind(async_write_handler
,
5318 _1
, _2
, 42, &called
));
5321 BOOST_ASIO_CHECK(called
);
5322 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5325 s
.next_write_length(10);
5327 boost::asio::async_write_at(s
, 0, buffers
,
5328 boost::asio::transfer_exactly(42),
5329 bindns::bind(async_write_handler
,
5330 _1
, _2
, 42, &called
));
5333 BOOST_ASIO_CHECK(called
);
5334 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5337 s
.next_write_length(10);
5339 boost::asio::async_write_at(s
, 1234, buffers
,
5340 boost::asio::transfer_exactly(42),
5341 bindns::bind(async_write_handler
,
5342 _1
, _2
, 42, &called
));
5345 BOOST_ASIO_CHECK(called
);
5346 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5350 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5351 bindns::bind(async_write_handler
,
5352 _1
, _2
, sizeof(write_data
), &called
));
5355 BOOST_ASIO_CHECK(called
);
5356 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5360 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
5361 bindns::bind(async_write_handler
,
5362 _1
, _2
, sizeof(write_data
), &called
));
5365 BOOST_ASIO_CHECK(called
);
5366 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5369 s
.next_write_length(1);
5371 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5372 bindns::bind(async_write_handler
,
5373 _1
, _2
, sizeof(write_data
), &called
));
5376 BOOST_ASIO_CHECK(called
);
5377 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5380 s
.next_write_length(1);
5382 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
5383 bindns::bind(async_write_handler
,
5384 _1
, _2
, sizeof(write_data
), &called
));
5387 BOOST_ASIO_CHECK(called
);
5388 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5391 s
.next_write_length(10);
5393 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5394 bindns::bind(async_write_handler
,
5395 _1
, _2
, sizeof(write_data
), &called
));
5398 BOOST_ASIO_CHECK(called
);
5399 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5402 s
.next_write_length(10);
5404 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
5405 bindns::bind(async_write_handler
,
5406 _1
, _2
, sizeof(write_data
), &called
));
5409 BOOST_ASIO_CHECK(called
);
5410 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5414 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
5415 bindns::bind(async_write_handler
,
5416 _1
, _2
, sizeof(write_data
), &called
));
5419 BOOST_ASIO_CHECK(called
);
5420 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5424 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
5425 bindns::bind(async_write_handler
,
5426 _1
, _2
, sizeof(write_data
), &called
));
5429 BOOST_ASIO_CHECK(called
);
5430 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5433 s
.next_write_length(1);
5435 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
5436 bindns::bind(async_write_handler
,
5437 _1
, _2
, sizeof(write_data
), &called
));
5440 BOOST_ASIO_CHECK(called
);
5441 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5444 s
.next_write_length(1);
5446 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
5447 bindns::bind(async_write_handler
,
5448 _1
, _2
, sizeof(write_data
), &called
));
5451 BOOST_ASIO_CHECK(called
);
5452 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5455 s
.next_write_length(10);
5457 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
5458 bindns::bind(async_write_handler
,
5459 _1
, _2
, sizeof(write_data
), &called
));
5462 BOOST_ASIO_CHECK(called
);
5463 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5466 s
.next_write_length(10);
5468 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
5469 bindns::bind(async_write_handler
,
5470 _1
, _2
, sizeof(write_data
), &called
));
5473 BOOST_ASIO_CHECK(called
);
5474 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5477 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
5478 archetypes::lazy_handler());
5479 BOOST_ASIO_CHECK(i
== 42);
5482 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5483 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
5486 void test_5_arg_std_array_buffers_async_write_at()
5488 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
5489 namespace bindns
= boost
;
5490 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
5491 namespace bindns
= std
;
5492 using std::placeholders::_1
;
5493 using std::placeholders::_2
;
5494 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
5496 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
5497 boost::asio::io_context ioc
;
5498 test_random_access_device
s(ioc
);
5499 std::array
<boost::asio::const_buffer
, 2> buffers
= { {
5500 boost::asio::buffer(write_data
, 32),
5501 boost::asio::buffer(write_data
) + 32 } };
5504 bool called
= false;
5505 boost::asio::async_write_at(s
, 0, buffers
,
5506 boost::asio::transfer_all(),
5507 bindns::bind(async_write_handler
,
5508 _1
, _2
, sizeof(write_data
), &called
));
5511 BOOST_ASIO_CHECK(called
);
5512 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5516 boost::asio::async_write_at(s
, 1234, buffers
,
5517 boost::asio::transfer_all(),
5518 bindns::bind(async_write_handler
,
5519 _1
, _2
, sizeof(write_data
), &called
));
5522 BOOST_ASIO_CHECK(called
);
5523 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5526 s
.next_write_length(1);
5528 boost::asio::async_write_at(s
, 0, buffers
,
5529 boost::asio::transfer_all(),
5530 bindns::bind(async_write_handler
,
5531 _1
, _2
, sizeof(write_data
), &called
));
5534 BOOST_ASIO_CHECK(called
);
5535 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5538 s
.next_write_length(1);
5540 boost::asio::async_write_at(s
, 1234, buffers
,
5541 boost::asio::transfer_all(),
5542 bindns::bind(async_write_handler
,
5543 _1
, _2
, sizeof(write_data
), &called
));
5546 BOOST_ASIO_CHECK(called
);
5547 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5550 s
.next_write_length(10);
5552 boost::asio::async_write_at(s
, 0, buffers
,
5553 boost::asio::transfer_all(),
5554 bindns::bind(async_write_handler
,
5555 _1
, _2
, sizeof(write_data
), &called
));
5558 BOOST_ASIO_CHECK(called
);
5559 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5562 s
.next_write_length(10);
5564 boost::asio::async_write_at(s
, 1234, buffers
,
5565 boost::asio::transfer_all(),
5566 bindns::bind(async_write_handler
,
5567 _1
, _2
, sizeof(write_data
), &called
));
5570 BOOST_ASIO_CHECK(called
);
5571 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5575 boost::asio::async_write_at(s
, 0, buffers
,
5576 boost::asio::transfer_at_least(1),
5577 bindns::bind(async_write_handler
,
5578 _1
, _2
, sizeof(write_data
), &called
));
5581 BOOST_ASIO_CHECK(called
);
5582 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5586 boost::asio::async_write_at(s
, 1234, buffers
,
5587 boost::asio::transfer_at_least(1),
5588 bindns::bind(async_write_handler
,
5589 _1
, _2
, sizeof(write_data
), &called
));
5592 BOOST_ASIO_CHECK(called
);
5593 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5596 s
.next_write_length(1);
5598 boost::asio::async_write_at(s
, 0, buffers
,
5599 boost::asio::transfer_at_least(1),
5600 bindns::bind(async_write_handler
,
5601 _1
, _2
, 1, &called
));
5604 BOOST_ASIO_CHECK(called
);
5605 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5608 s
.next_write_length(1);
5610 boost::asio::async_write_at(s
, 1234, buffers
,
5611 boost::asio::transfer_at_least(1),
5612 bindns::bind(async_write_handler
,
5613 _1
, _2
, 1, &called
));
5616 BOOST_ASIO_CHECK(called
);
5617 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5620 s
.next_write_length(10);
5622 boost::asio::async_write_at(s
, 0, buffers
,
5623 boost::asio::transfer_at_least(1),
5624 bindns::bind(async_write_handler
,
5625 _1
, _2
, 10, &called
));
5628 BOOST_ASIO_CHECK(called
);
5629 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5632 s
.next_write_length(10);
5634 boost::asio::async_write_at(s
, 1234, buffers
,
5635 boost::asio::transfer_at_least(1),
5636 bindns::bind(async_write_handler
,
5637 _1
, _2
, 10, &called
));
5640 BOOST_ASIO_CHECK(called
);
5641 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5645 boost::asio::async_write_at(s
, 0, buffers
,
5646 boost::asio::transfer_at_least(10),
5647 bindns::bind(async_write_handler
,
5648 _1
, _2
, sizeof(write_data
), &called
));
5651 BOOST_ASIO_CHECK(called
);
5652 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5656 boost::asio::async_write_at(s
, 1234, buffers
,
5657 boost::asio::transfer_at_least(10),
5658 bindns::bind(async_write_handler
,
5659 _1
, _2
, sizeof(write_data
), &called
));
5662 BOOST_ASIO_CHECK(called
);
5663 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5666 s
.next_write_length(1);
5668 boost::asio::async_write_at(s
, 0, buffers
,
5669 boost::asio::transfer_at_least(10),
5670 bindns::bind(async_write_handler
,
5671 _1
, _2
, 10, &called
));
5674 BOOST_ASIO_CHECK(called
);
5675 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5678 s
.next_write_length(1);
5680 boost::asio::async_write_at(s
, 1234, buffers
,
5681 boost::asio::transfer_at_least(10),
5682 bindns::bind(async_write_handler
,
5683 _1
, _2
, 10, &called
));
5686 BOOST_ASIO_CHECK(called
);
5687 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5690 s
.next_write_length(10);
5692 boost::asio::async_write_at(s
, 0, buffers
,
5693 boost::asio::transfer_at_least(10),
5694 bindns::bind(async_write_handler
,
5695 _1
, _2
, 10, &called
));
5698 BOOST_ASIO_CHECK(called
);
5699 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5702 s
.next_write_length(10);
5704 boost::asio::async_write_at(s
, 1234, buffers
,
5705 boost::asio::transfer_at_least(10),
5706 bindns::bind(async_write_handler
,
5707 _1
, _2
, 10, &called
));
5710 BOOST_ASIO_CHECK(called
);
5711 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5715 boost::asio::async_write_at(s
, 0, buffers
,
5716 boost::asio::transfer_at_least(42),
5717 bindns::bind(async_write_handler
,
5718 _1
, _2
, sizeof(write_data
), &called
));
5721 BOOST_ASIO_CHECK(called
);
5722 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5726 boost::asio::async_write_at(s
, 1234, buffers
,
5727 boost::asio::transfer_at_least(42),
5728 bindns::bind(async_write_handler
,
5729 _1
, _2
, sizeof(write_data
), &called
));
5732 BOOST_ASIO_CHECK(called
);
5733 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5736 s
.next_write_length(1);
5738 boost::asio::async_write_at(s
, 0, buffers
,
5739 boost::asio::transfer_at_least(42),
5740 bindns::bind(async_write_handler
,
5741 _1
, _2
, 42, &called
));
5744 BOOST_ASIO_CHECK(called
);
5745 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5748 s
.next_write_length(1);
5750 boost::asio::async_write_at(s
, 1234, buffers
,
5751 boost::asio::transfer_at_least(42),
5752 bindns::bind(async_write_handler
,
5753 _1
, _2
, 42, &called
));
5756 BOOST_ASIO_CHECK(called
);
5757 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5760 s
.next_write_length(10);
5762 boost::asio::async_write_at(s
, 0, buffers
,
5763 boost::asio::transfer_at_least(42),
5764 bindns::bind(async_write_handler
,
5765 _1
, _2
, 50, &called
));
5768 BOOST_ASIO_CHECK(called
);
5769 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
5772 s
.next_write_length(10);
5774 boost::asio::async_write_at(s
, 1234, buffers
,
5775 boost::asio::transfer_at_least(42),
5776 bindns::bind(async_write_handler
,
5777 _1
, _2
, 50, &called
));
5780 BOOST_ASIO_CHECK(called
);
5781 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
5785 boost::asio::async_write_at(s
, 0, buffers
,
5786 boost::asio::transfer_exactly(1),
5787 bindns::bind(async_write_handler
,
5788 _1
, _2
, 1, &called
));
5791 BOOST_ASIO_CHECK(called
);
5792 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5796 boost::asio::async_write_at(s
, 1234, buffers
,
5797 boost::asio::transfer_exactly(1),
5798 bindns::bind(async_write_handler
,
5799 _1
, _2
, 1, &called
));
5802 BOOST_ASIO_CHECK(called
);
5803 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5806 s
.next_write_length(1);
5808 boost::asio::async_write_at(s
, 0, buffers
,
5809 boost::asio::transfer_exactly(1),
5810 bindns::bind(async_write_handler
,
5811 _1
, _2
, 1, &called
));
5814 BOOST_ASIO_CHECK(called
);
5815 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5818 s
.next_write_length(1);
5820 boost::asio::async_write_at(s
, 1234, buffers
,
5821 boost::asio::transfer_exactly(1),
5822 bindns::bind(async_write_handler
,
5823 _1
, _2
, 1, &called
));
5826 BOOST_ASIO_CHECK(called
);
5827 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5830 s
.next_write_length(10);
5832 boost::asio::async_write_at(s
, 0, buffers
,
5833 boost::asio::transfer_exactly(1),
5834 bindns::bind(async_write_handler
,
5835 _1
, _2
, 1, &called
));
5838 BOOST_ASIO_CHECK(called
);
5839 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5842 s
.next_write_length(10);
5844 boost::asio::async_write_at(s
, 1234, buffers
,
5845 boost::asio::transfer_exactly(1),
5846 bindns::bind(async_write_handler
,
5847 _1
, _2
, 1, &called
));
5850 BOOST_ASIO_CHECK(called
);
5851 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5855 boost::asio::async_write_at(s
, 0, buffers
,
5856 boost::asio::transfer_exactly(10),
5857 bindns::bind(async_write_handler
,
5858 _1
, _2
, 10, &called
));
5861 BOOST_ASIO_CHECK(called
);
5862 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5866 boost::asio::async_write_at(s
, 1234, buffers
,
5867 boost::asio::transfer_exactly(10),
5868 bindns::bind(async_write_handler
,
5869 _1
, _2
, 10, &called
));
5872 BOOST_ASIO_CHECK(called
);
5873 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5876 s
.next_write_length(1);
5878 boost::asio::async_write_at(s
, 0, buffers
,
5879 boost::asio::transfer_exactly(10),
5880 bindns::bind(async_write_handler
,
5881 _1
, _2
, 10, &called
));
5884 BOOST_ASIO_CHECK(called
);
5885 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5888 s
.next_write_length(1);
5890 boost::asio::async_write_at(s
, 1234, buffers
,
5891 boost::asio::transfer_exactly(10),
5892 bindns::bind(async_write_handler
,
5893 _1
, _2
, 10, &called
));
5896 BOOST_ASIO_CHECK(called
);
5897 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5900 s
.next_write_length(10);
5902 boost::asio::async_write_at(s
, 0, buffers
,
5903 boost::asio::transfer_exactly(10),
5904 bindns::bind(async_write_handler
,
5905 _1
, _2
, 10, &called
));
5908 BOOST_ASIO_CHECK(called
);
5909 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5912 s
.next_write_length(10);
5914 boost::asio::async_write_at(s
, 1234, buffers
,
5915 boost::asio::transfer_exactly(10),
5916 bindns::bind(async_write_handler
,
5917 _1
, _2
, 10, &called
));
5920 BOOST_ASIO_CHECK(called
);
5921 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5925 boost::asio::async_write_at(s
, 0, buffers
,
5926 boost::asio::transfer_exactly(42),
5927 bindns::bind(async_write_handler
,
5928 _1
, _2
, 42, &called
));
5931 BOOST_ASIO_CHECK(called
);
5932 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5936 boost::asio::async_write_at(s
, 1234, buffers
,
5937 boost::asio::transfer_exactly(42),
5938 bindns::bind(async_write_handler
,
5939 _1
, _2
, 42, &called
));
5942 BOOST_ASIO_CHECK(called
);
5943 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5946 s
.next_write_length(1);
5948 boost::asio::async_write_at(s
, 0, buffers
,
5949 boost::asio::transfer_exactly(42),
5950 bindns::bind(async_write_handler
,
5951 _1
, _2
, 42, &called
));
5954 BOOST_ASIO_CHECK(called
);
5955 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5958 s
.next_write_length(1);
5960 boost::asio::async_write_at(s
, 1234, buffers
,
5961 boost::asio::transfer_exactly(42),
5962 bindns::bind(async_write_handler
,
5963 _1
, _2
, 42, &called
));
5966 BOOST_ASIO_CHECK(called
);
5967 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5970 s
.next_write_length(10);
5972 boost::asio::async_write_at(s
, 0, buffers
,
5973 boost::asio::transfer_exactly(42),
5974 bindns::bind(async_write_handler
,
5975 _1
, _2
, 42, &called
));
5978 BOOST_ASIO_CHECK(called
);
5979 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5982 s
.next_write_length(10);
5984 boost::asio::async_write_at(s
, 1234, buffers
,
5985 boost::asio::transfer_exactly(42),
5986 bindns::bind(async_write_handler
,
5987 _1
, _2
, 42, &called
));
5990 BOOST_ASIO_CHECK(called
);
5991 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5995 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5996 bindns::bind(async_write_handler
,
5997 _1
, _2
, sizeof(write_data
), &called
));
6000 BOOST_ASIO_CHECK(called
);
6001 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6005 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6006 bindns::bind(async_write_handler
,
6007 _1
, _2
, sizeof(write_data
), &called
));
6010 BOOST_ASIO_CHECK(called
);
6011 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6014 s
.next_write_length(1);
6016 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6017 bindns::bind(async_write_handler
,
6018 _1
, _2
, sizeof(write_data
), &called
));
6021 BOOST_ASIO_CHECK(called
);
6022 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6025 s
.next_write_length(1);
6027 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6028 bindns::bind(async_write_handler
,
6029 _1
, _2
, sizeof(write_data
), &called
));
6032 BOOST_ASIO_CHECK(called
);
6033 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6036 s
.next_write_length(10);
6038 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6039 bindns::bind(async_write_handler
,
6040 _1
, _2
, sizeof(write_data
), &called
));
6043 BOOST_ASIO_CHECK(called
);
6044 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6047 s
.next_write_length(10);
6049 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6050 bindns::bind(async_write_handler
,
6051 _1
, _2
, sizeof(write_data
), &called
));
6054 BOOST_ASIO_CHECK(called
);
6055 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6059 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6060 bindns::bind(async_write_handler
,
6061 _1
, _2
, sizeof(write_data
), &called
));
6064 BOOST_ASIO_CHECK(called
);
6065 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6069 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
6070 bindns::bind(async_write_handler
,
6071 _1
, _2
, sizeof(write_data
), &called
));
6074 BOOST_ASIO_CHECK(called
);
6075 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6078 s
.next_write_length(1);
6080 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6081 bindns::bind(async_write_handler
,
6082 _1
, _2
, sizeof(write_data
), &called
));
6085 BOOST_ASIO_CHECK(called
);
6086 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6089 s
.next_write_length(1);
6091 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
6092 bindns::bind(async_write_handler
,
6093 _1
, _2
, sizeof(write_data
), &called
));
6096 BOOST_ASIO_CHECK(called
);
6097 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6100 s
.next_write_length(10);
6102 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6103 bindns::bind(async_write_handler
,
6104 _1
, _2
, sizeof(write_data
), &called
));
6107 BOOST_ASIO_CHECK(called
);
6108 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6111 s
.next_write_length(10);
6113 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
6114 bindns::bind(async_write_handler
,
6115 _1
, _2
, sizeof(write_data
), &called
));
6118 BOOST_ASIO_CHECK(called
);
6119 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6122 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6123 archetypes::lazy_handler());
6124 BOOST_ASIO_CHECK(i
== 42);
6127 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6128 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
6131 void test_5_arg_vector_buffers_async_write_at()
6133 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
6134 namespace bindns
= boost
;
6135 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
6136 namespace bindns
= std
;
6137 using std::placeholders::_1
;
6138 using std::placeholders::_2
;
6139 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
6141 boost::asio::io_context ioc
;
6142 test_random_access_device
s(ioc
);
6143 std::vector
<boost::asio::const_buffer
> buffers
;
6144 buffers
.push_back(boost::asio::buffer(write_data
, 32));
6145 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
6148 bool called
= false;
6149 boost::asio::async_write_at(s
, 0, buffers
,
6150 boost::asio::transfer_all(),
6151 bindns::bind(async_write_handler
,
6152 _1
, _2
, sizeof(write_data
), &called
));
6155 BOOST_ASIO_CHECK(called
);
6156 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6160 boost::asio::async_write_at(s
, 1234, buffers
,
6161 boost::asio::transfer_all(),
6162 bindns::bind(async_write_handler
,
6163 _1
, _2
, sizeof(write_data
), &called
));
6166 BOOST_ASIO_CHECK(called
);
6167 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6170 s
.next_write_length(1);
6172 boost::asio::async_write_at(s
, 0, buffers
,
6173 boost::asio::transfer_all(),
6174 bindns::bind(async_write_handler
,
6175 _1
, _2
, sizeof(write_data
), &called
));
6178 BOOST_ASIO_CHECK(called
);
6179 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6182 s
.next_write_length(1);
6184 boost::asio::async_write_at(s
, 1234, buffers
,
6185 boost::asio::transfer_all(),
6186 bindns::bind(async_write_handler
,
6187 _1
, _2
, sizeof(write_data
), &called
));
6190 BOOST_ASIO_CHECK(called
);
6191 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6194 s
.next_write_length(10);
6196 boost::asio::async_write_at(s
, 0, buffers
,
6197 boost::asio::transfer_all(),
6198 bindns::bind(async_write_handler
,
6199 _1
, _2
, sizeof(write_data
), &called
));
6202 BOOST_ASIO_CHECK(called
);
6203 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6206 s
.next_write_length(10);
6208 boost::asio::async_write_at(s
, 1234, buffers
,
6209 boost::asio::transfer_all(),
6210 bindns::bind(async_write_handler
,
6211 _1
, _2
, sizeof(write_data
), &called
));
6214 BOOST_ASIO_CHECK(called
);
6215 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6219 boost::asio::async_write_at(s
, 0, buffers
,
6220 boost::asio::transfer_at_least(1),
6221 bindns::bind(async_write_handler
,
6222 _1
, _2
, sizeof(write_data
), &called
));
6225 BOOST_ASIO_CHECK(called
);
6226 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6230 boost::asio::async_write_at(s
, 1234, buffers
,
6231 boost::asio::transfer_at_least(1),
6232 bindns::bind(async_write_handler
,
6233 _1
, _2
, sizeof(write_data
), &called
));
6236 BOOST_ASIO_CHECK(called
);
6237 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6240 s
.next_write_length(1);
6242 boost::asio::async_write_at(s
, 0, buffers
,
6243 boost::asio::transfer_at_least(1),
6244 bindns::bind(async_write_handler
,
6245 _1
, _2
, 1, &called
));
6248 BOOST_ASIO_CHECK(called
);
6249 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6252 s
.next_write_length(1);
6254 boost::asio::async_write_at(s
, 1234, buffers
,
6255 boost::asio::transfer_at_least(1),
6256 bindns::bind(async_write_handler
,
6257 _1
, _2
, 1, &called
));
6260 BOOST_ASIO_CHECK(called
);
6261 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6264 s
.next_write_length(10);
6266 boost::asio::async_write_at(s
, 0, buffers
,
6267 boost::asio::transfer_at_least(1),
6268 bindns::bind(async_write_handler
,
6269 _1
, _2
, 10, &called
));
6272 BOOST_ASIO_CHECK(called
);
6273 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6276 s
.next_write_length(10);
6278 boost::asio::async_write_at(s
, 1234, buffers
,
6279 boost::asio::transfer_at_least(1),
6280 bindns::bind(async_write_handler
,
6281 _1
, _2
, 10, &called
));
6284 BOOST_ASIO_CHECK(called
);
6285 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6289 boost::asio::async_write_at(s
, 0, buffers
,
6290 boost::asio::transfer_at_least(10),
6291 bindns::bind(async_write_handler
,
6292 _1
, _2
, sizeof(write_data
), &called
));
6295 BOOST_ASIO_CHECK(called
);
6296 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6300 boost::asio::async_write_at(s
, 1234, buffers
,
6301 boost::asio::transfer_at_least(10),
6302 bindns::bind(async_write_handler
,
6303 _1
, _2
, sizeof(write_data
), &called
));
6306 BOOST_ASIO_CHECK(called
);
6307 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6310 s
.next_write_length(1);
6312 boost::asio::async_write_at(s
, 0, buffers
,
6313 boost::asio::transfer_at_least(10),
6314 bindns::bind(async_write_handler
,
6315 _1
, _2
, 10, &called
));
6318 BOOST_ASIO_CHECK(called
);
6319 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6322 s
.next_write_length(1);
6324 boost::asio::async_write_at(s
, 1234, buffers
,
6325 boost::asio::transfer_at_least(10),
6326 bindns::bind(async_write_handler
,
6327 _1
, _2
, 10, &called
));
6330 BOOST_ASIO_CHECK(called
);
6331 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6334 s
.next_write_length(10);
6336 boost::asio::async_write_at(s
, 0, buffers
,
6337 boost::asio::transfer_at_least(10),
6338 bindns::bind(async_write_handler
,
6339 _1
, _2
, 10, &called
));
6342 BOOST_ASIO_CHECK(called
);
6343 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6346 s
.next_write_length(10);
6348 boost::asio::async_write_at(s
, 1234, buffers
,
6349 boost::asio::transfer_at_least(10),
6350 bindns::bind(async_write_handler
,
6351 _1
, _2
, 10, &called
));
6354 BOOST_ASIO_CHECK(called
);
6355 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6359 boost::asio::async_write_at(s
, 0, buffers
,
6360 boost::asio::transfer_at_least(42),
6361 bindns::bind(async_write_handler
,
6362 _1
, _2
, sizeof(write_data
), &called
));
6365 BOOST_ASIO_CHECK(called
);
6366 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6370 boost::asio::async_write_at(s
, 1234, buffers
,
6371 boost::asio::transfer_at_least(42),
6372 bindns::bind(async_write_handler
,
6373 _1
, _2
, sizeof(write_data
), &called
));
6376 BOOST_ASIO_CHECK(called
);
6377 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6380 s
.next_write_length(1);
6382 boost::asio::async_write_at(s
, 0, buffers
,
6383 boost::asio::transfer_at_least(42),
6384 bindns::bind(async_write_handler
,
6385 _1
, _2
, 42, &called
));
6388 BOOST_ASIO_CHECK(called
);
6389 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6392 s
.next_write_length(1);
6394 boost::asio::async_write_at(s
, 1234, buffers
,
6395 boost::asio::transfer_at_least(42),
6396 bindns::bind(async_write_handler
,
6397 _1
, _2
, 42, &called
));
6400 BOOST_ASIO_CHECK(called
);
6401 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6404 s
.next_write_length(10);
6406 boost::asio::async_write_at(s
, 0, buffers
,
6407 boost::asio::transfer_at_least(42),
6408 bindns::bind(async_write_handler
,
6409 _1
, _2
, 50, &called
));
6412 BOOST_ASIO_CHECK(called
);
6413 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
6416 s
.next_write_length(10);
6418 boost::asio::async_write_at(s
, 1234, buffers
,
6419 boost::asio::transfer_at_least(42),
6420 bindns::bind(async_write_handler
,
6421 _1
, _2
, 50, &called
));
6424 BOOST_ASIO_CHECK(called
);
6425 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
6429 boost::asio::async_write_at(s
, 0, buffers
,
6430 boost::asio::transfer_exactly(1),
6431 bindns::bind(async_write_handler
,
6432 _1
, _2
, 1, &called
));
6435 BOOST_ASIO_CHECK(called
);
6436 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6440 boost::asio::async_write_at(s
, 1234, buffers
,
6441 boost::asio::transfer_exactly(1),
6442 bindns::bind(async_write_handler
,
6443 _1
, _2
, 1, &called
));
6446 BOOST_ASIO_CHECK(called
);
6447 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6450 s
.next_write_length(1);
6452 boost::asio::async_write_at(s
, 0, buffers
,
6453 boost::asio::transfer_exactly(1),
6454 bindns::bind(async_write_handler
,
6455 _1
, _2
, 1, &called
));
6458 BOOST_ASIO_CHECK(called
);
6459 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6462 s
.next_write_length(1);
6464 boost::asio::async_write_at(s
, 1234, buffers
,
6465 boost::asio::transfer_exactly(1),
6466 bindns::bind(async_write_handler
,
6467 _1
, _2
, 1, &called
));
6470 BOOST_ASIO_CHECK(called
);
6471 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6474 s
.next_write_length(10);
6476 boost::asio::async_write_at(s
, 0, buffers
,
6477 boost::asio::transfer_exactly(1),
6478 bindns::bind(async_write_handler
,
6479 _1
, _2
, 1, &called
));
6482 BOOST_ASIO_CHECK(called
);
6483 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6486 s
.next_write_length(10);
6488 boost::asio::async_write_at(s
, 1234, buffers
,
6489 boost::asio::transfer_exactly(1),
6490 bindns::bind(async_write_handler
,
6491 _1
, _2
, 1, &called
));
6494 BOOST_ASIO_CHECK(called
);
6495 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6499 boost::asio::async_write_at(s
, 0, buffers
,
6500 boost::asio::transfer_exactly(10),
6501 bindns::bind(async_write_handler
,
6502 _1
, _2
, 10, &called
));
6505 BOOST_ASIO_CHECK(called
);
6506 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6510 boost::asio::async_write_at(s
, 1234, buffers
,
6511 boost::asio::transfer_exactly(10),
6512 bindns::bind(async_write_handler
,
6513 _1
, _2
, 10, &called
));
6516 BOOST_ASIO_CHECK(called
);
6517 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6520 s
.next_write_length(1);
6522 boost::asio::async_write_at(s
, 0, buffers
,
6523 boost::asio::transfer_exactly(10),
6524 bindns::bind(async_write_handler
,
6525 _1
, _2
, 10, &called
));
6528 BOOST_ASIO_CHECK(called
);
6529 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6532 s
.next_write_length(1);
6534 boost::asio::async_write_at(s
, 1234, buffers
,
6535 boost::asio::transfer_exactly(10),
6536 bindns::bind(async_write_handler
,
6537 _1
, _2
, 10, &called
));
6540 BOOST_ASIO_CHECK(called
);
6541 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6544 s
.next_write_length(10);
6546 boost::asio::async_write_at(s
, 0, buffers
,
6547 boost::asio::transfer_exactly(10),
6548 bindns::bind(async_write_handler
,
6549 _1
, _2
, 10, &called
));
6552 BOOST_ASIO_CHECK(called
);
6553 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6556 s
.next_write_length(10);
6558 boost::asio::async_write_at(s
, 1234, buffers
,
6559 boost::asio::transfer_exactly(10),
6560 bindns::bind(async_write_handler
,
6561 _1
, _2
, 10, &called
));
6564 BOOST_ASIO_CHECK(called
);
6565 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6569 boost::asio::async_write_at(s
, 0, buffers
,
6570 boost::asio::transfer_exactly(42),
6571 bindns::bind(async_write_handler
,
6572 _1
, _2
, 42, &called
));
6575 BOOST_ASIO_CHECK(called
);
6576 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6580 boost::asio::async_write_at(s
, 1234, buffers
,
6581 boost::asio::transfer_exactly(42),
6582 bindns::bind(async_write_handler
,
6583 _1
, _2
, 42, &called
));
6586 BOOST_ASIO_CHECK(called
);
6587 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6590 s
.next_write_length(1);
6592 boost::asio::async_write_at(s
, 0, buffers
,
6593 boost::asio::transfer_exactly(42),
6594 bindns::bind(async_write_handler
,
6595 _1
, _2
, 42, &called
));
6598 BOOST_ASIO_CHECK(called
);
6599 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6602 s
.next_write_length(1);
6604 boost::asio::async_write_at(s
, 1234, buffers
,
6605 boost::asio::transfer_exactly(42),
6606 bindns::bind(async_write_handler
,
6607 _1
, _2
, 42, &called
));
6610 BOOST_ASIO_CHECK(called
);
6611 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6614 s
.next_write_length(10);
6616 boost::asio::async_write_at(s
, 0, buffers
,
6617 boost::asio::transfer_exactly(42),
6618 bindns::bind(async_write_handler
,
6619 _1
, _2
, 42, &called
));
6622 BOOST_ASIO_CHECK(called
);
6623 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6626 s
.next_write_length(10);
6628 boost::asio::async_write_at(s
, 1234, buffers
,
6629 boost::asio::transfer_exactly(42),
6630 bindns::bind(async_write_handler
,
6631 _1
, _2
, 42, &called
));
6634 BOOST_ASIO_CHECK(called
);
6635 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6639 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6640 bindns::bind(async_write_handler
,
6641 _1
, _2
, sizeof(write_data
), &called
));
6644 BOOST_ASIO_CHECK(called
);
6645 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6649 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6650 bindns::bind(async_write_handler
,
6651 _1
, _2
, sizeof(write_data
), &called
));
6654 BOOST_ASIO_CHECK(called
);
6655 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6658 s
.next_write_length(1);
6660 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6661 bindns::bind(async_write_handler
,
6662 _1
, _2
, sizeof(write_data
), &called
));
6665 BOOST_ASIO_CHECK(called
);
6666 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6669 s
.next_write_length(1);
6671 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6672 bindns::bind(async_write_handler
,
6673 _1
, _2
, sizeof(write_data
), &called
));
6676 BOOST_ASIO_CHECK(called
);
6677 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6680 s
.next_write_length(10);
6682 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6683 bindns::bind(async_write_handler
,
6684 _1
, _2
, sizeof(write_data
), &called
));
6687 BOOST_ASIO_CHECK(called
);
6688 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6691 s
.next_write_length(10);
6693 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6694 bindns::bind(async_write_handler
,
6695 _1
, _2
, sizeof(write_data
), &called
));
6698 BOOST_ASIO_CHECK(called
);
6699 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6703 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6704 bindns::bind(async_write_handler
,
6705 _1
, _2
, sizeof(write_data
), &called
));
6708 BOOST_ASIO_CHECK(called
);
6709 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6713 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
6714 bindns::bind(async_write_handler
,
6715 _1
, _2
, sizeof(write_data
), &called
));
6718 BOOST_ASIO_CHECK(called
);
6719 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6722 s
.next_write_length(1);
6724 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6725 bindns::bind(async_write_handler
,
6726 _1
, _2
, sizeof(write_data
), &called
));
6729 BOOST_ASIO_CHECK(called
);
6730 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6733 s
.next_write_length(1);
6735 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
6736 bindns::bind(async_write_handler
,
6737 _1
, _2
, sizeof(write_data
), &called
));
6740 BOOST_ASIO_CHECK(called
);
6741 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6744 s
.next_write_length(10);
6746 boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6747 bindns::bind(async_write_handler
,
6748 _1
, _2
, sizeof(write_data
), &called
));
6751 BOOST_ASIO_CHECK(called
);
6752 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6755 s
.next_write_length(10);
6757 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer
,
6758 bindns::bind(async_write_handler
,
6759 _1
, _2
, sizeof(write_data
), &called
));
6762 BOOST_ASIO_CHECK(called
);
6763 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6766 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer
,
6767 archetypes::lazy_handler());
6768 BOOST_ASIO_CHECK(i
== 42);
6771 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6774 void test_5_arg_streambuf_async_write_at()
6776 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
6777 namespace bindns
= boost
;
6778 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
6779 namespace bindns
= std
;
6780 using std::placeholders::_1
;
6781 using std::placeholders::_2
;
6782 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
6784 boost::asio::io_context ioc
;
6785 test_random_access_device
s(ioc
);
6786 boost::asio::streambuf sb
;
6787 boost::asio::const_buffer buffers
6788 = boost::asio::buffer(write_data
, sizeof(write_data
));
6791 sb
.consume(sb
.size());
6792 sb
.sputn(write_data
, sizeof(write_data
));
6793 bool called
= false;
6794 boost::asio::async_write_at(s
, 0, sb
,
6795 boost::asio::transfer_all(),
6796 bindns::bind(async_write_handler
,
6797 _1
, _2
, sizeof(write_data
), &called
));
6800 BOOST_ASIO_CHECK(called
);
6801 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6804 sb
.consume(sb
.size());
6805 sb
.sputn(write_data
, sizeof(write_data
));
6807 boost::asio::async_write_at(s
, 1234, sb
,
6808 boost::asio::transfer_all(),
6809 bindns::bind(async_write_handler
,
6810 _1
, _2
, sizeof(write_data
), &called
));
6813 BOOST_ASIO_CHECK(called
);
6814 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6817 sb
.consume(sb
.size());
6818 sb
.sputn(write_data
, sizeof(write_data
));
6819 s
.next_write_length(1);
6821 boost::asio::async_write_at(s
, 0, sb
,
6822 boost::asio::transfer_all(),
6823 bindns::bind(async_write_handler
,
6824 _1
, _2
, sizeof(write_data
), &called
));
6827 BOOST_ASIO_CHECK(called
);
6828 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6831 sb
.consume(sb
.size());
6832 sb
.sputn(write_data
, sizeof(write_data
));
6833 s
.next_write_length(1);
6835 boost::asio::async_write_at(s
, 1234, sb
,
6836 boost::asio::transfer_all(),
6837 bindns::bind(async_write_handler
,
6838 _1
, _2
, sizeof(write_data
), &called
));
6841 BOOST_ASIO_CHECK(called
);
6842 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6845 sb
.consume(sb
.size());
6846 sb
.sputn(write_data
, sizeof(write_data
));
6847 s
.next_write_length(10);
6849 boost::asio::async_write_at(s
, 0, sb
,
6850 boost::asio::transfer_all(),
6851 bindns::bind(async_write_handler
,
6852 _1
, _2
, sizeof(write_data
), &called
));
6855 BOOST_ASIO_CHECK(called
);
6856 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6859 sb
.consume(sb
.size());
6860 sb
.sputn(write_data
, sizeof(write_data
));
6861 s
.next_write_length(10);
6863 boost::asio::async_write_at(s
, 1234, sb
,
6864 boost::asio::transfer_all(),
6865 bindns::bind(async_write_handler
,
6866 _1
, _2
, sizeof(write_data
), &called
));
6869 BOOST_ASIO_CHECK(called
);
6870 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6873 sb
.consume(sb
.size());
6874 sb
.sputn(write_data
, sizeof(write_data
));
6876 boost::asio::async_write_at(s
, 0, sb
,
6877 boost::asio::transfer_at_least(1),
6878 bindns::bind(async_write_handler
,
6879 _1
, _2
, sizeof(write_data
), &called
));
6882 BOOST_ASIO_CHECK(called
);
6883 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6886 sb
.consume(sb
.size());
6887 sb
.sputn(write_data
, sizeof(write_data
));
6889 boost::asio::async_write_at(s
, 1234, sb
,
6890 boost::asio::transfer_at_least(1),
6891 bindns::bind(async_write_handler
,
6892 _1
, _2
, sizeof(write_data
), &called
));
6895 BOOST_ASIO_CHECK(called
);
6896 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6899 sb
.consume(sb
.size());
6900 sb
.sputn(write_data
, sizeof(write_data
));
6901 s
.next_write_length(1);
6903 boost::asio::async_write_at(s
, 0, sb
,
6904 boost::asio::transfer_at_least(1),
6905 bindns::bind(async_write_handler
,
6906 _1
, _2
, 1, &called
));
6909 BOOST_ASIO_CHECK(called
);
6910 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6913 sb
.consume(sb
.size());
6914 sb
.sputn(write_data
, sizeof(write_data
));
6915 s
.next_write_length(1);
6917 boost::asio::async_write_at(s
, 1234, sb
,
6918 boost::asio::transfer_at_least(1),
6919 bindns::bind(async_write_handler
,
6920 _1
, _2
, 1, &called
));
6923 BOOST_ASIO_CHECK(called
);
6924 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6927 sb
.consume(sb
.size());
6928 sb
.sputn(write_data
, sizeof(write_data
));
6929 s
.next_write_length(10);
6931 boost::asio::async_write_at(s
, 0, sb
,
6932 boost::asio::transfer_at_least(1),
6933 bindns::bind(async_write_handler
,
6934 _1
, _2
, 10, &called
));
6937 BOOST_ASIO_CHECK(called
);
6938 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6941 sb
.consume(sb
.size());
6942 sb
.sputn(write_data
, sizeof(write_data
));
6943 s
.next_write_length(10);
6945 boost::asio::async_write_at(s
, 1234, sb
,
6946 boost::asio::transfer_at_least(1),
6947 bindns::bind(async_write_handler
,
6948 _1
, _2
, 10, &called
));
6951 BOOST_ASIO_CHECK(called
);
6952 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6955 sb
.consume(sb
.size());
6956 sb
.sputn(write_data
, sizeof(write_data
));
6958 boost::asio::async_write_at(s
, 0, sb
,
6959 boost::asio::transfer_at_least(10),
6960 bindns::bind(async_write_handler
,
6961 _1
, _2
, sizeof(write_data
), &called
));
6964 BOOST_ASIO_CHECK(called
);
6965 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6968 sb
.consume(sb
.size());
6969 sb
.sputn(write_data
, sizeof(write_data
));
6971 boost::asio::async_write_at(s
, 1234, sb
,
6972 boost::asio::transfer_at_least(10),
6973 bindns::bind(async_write_handler
,
6974 _1
, _2
, sizeof(write_data
), &called
));
6977 BOOST_ASIO_CHECK(called
);
6978 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6981 sb
.consume(sb
.size());
6982 sb
.sputn(write_data
, sizeof(write_data
));
6983 s
.next_write_length(1);
6985 boost::asio::async_write_at(s
, 0, sb
,
6986 boost::asio::transfer_at_least(10),
6987 bindns::bind(async_write_handler
,
6988 _1
, _2
, 10, &called
));
6991 BOOST_ASIO_CHECK(called
);
6992 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6995 sb
.consume(sb
.size());
6996 sb
.sputn(write_data
, sizeof(write_data
));
6997 s
.next_write_length(1);
6999 boost::asio::async_write_at(s
, 1234, sb
,
7000 boost::asio::transfer_at_least(10),
7001 bindns::bind(async_write_handler
,
7002 _1
, _2
, 10, &called
));
7005 BOOST_ASIO_CHECK(called
);
7006 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7009 sb
.consume(sb
.size());
7010 sb
.sputn(write_data
, sizeof(write_data
));
7011 s
.next_write_length(10);
7013 boost::asio::async_write_at(s
, 0, sb
,
7014 boost::asio::transfer_at_least(10),
7015 bindns::bind(async_write_handler
,
7016 _1
, _2
, 10, &called
));
7019 BOOST_ASIO_CHECK(called
);
7020 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7023 sb
.consume(sb
.size());
7024 sb
.sputn(write_data
, sizeof(write_data
));
7025 s
.next_write_length(10);
7027 boost::asio::async_write_at(s
, 1234, sb
,
7028 boost::asio::transfer_at_least(10),
7029 bindns::bind(async_write_handler
,
7030 _1
, _2
, 10, &called
));
7033 BOOST_ASIO_CHECK(called
);
7034 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7037 sb
.consume(sb
.size());
7038 sb
.sputn(write_data
, sizeof(write_data
));
7040 boost::asio::async_write_at(s
, 0, sb
,
7041 boost::asio::transfer_at_least(42),
7042 bindns::bind(async_write_handler
,
7043 _1
, _2
, sizeof(write_data
), &called
));
7046 BOOST_ASIO_CHECK(called
);
7047 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7050 sb
.consume(sb
.size());
7051 sb
.sputn(write_data
, sizeof(write_data
));
7053 boost::asio::async_write_at(s
, 1234, sb
,
7054 boost::asio::transfer_at_least(42),
7055 bindns::bind(async_write_handler
,
7056 _1
, _2
, sizeof(write_data
), &called
));
7059 BOOST_ASIO_CHECK(called
);
7060 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7063 sb
.consume(sb
.size());
7064 sb
.sputn(write_data
, sizeof(write_data
));
7065 s
.next_write_length(1);
7067 boost::asio::async_write_at(s
, 0, sb
,
7068 boost::asio::transfer_at_least(42),
7069 bindns::bind(async_write_handler
,
7070 _1
, _2
, 42, &called
));
7073 BOOST_ASIO_CHECK(called
);
7074 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7077 sb
.consume(sb
.size());
7078 sb
.sputn(write_data
, sizeof(write_data
));
7079 s
.next_write_length(1);
7081 boost::asio::async_write_at(s
, 1234, sb
,
7082 boost::asio::transfer_at_least(42),
7083 bindns::bind(async_write_handler
,
7084 _1
, _2
, 42, &called
));
7087 BOOST_ASIO_CHECK(called
);
7088 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7091 sb
.consume(sb
.size());
7092 sb
.sputn(write_data
, sizeof(write_data
));
7093 s
.next_write_length(10);
7095 boost::asio::async_write_at(s
, 0, sb
,
7096 boost::asio::transfer_at_least(42),
7097 bindns::bind(async_write_handler
,
7098 _1
, _2
, 50, &called
));
7101 BOOST_ASIO_CHECK(called
);
7102 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
7105 sb
.consume(sb
.size());
7106 sb
.sputn(write_data
, sizeof(write_data
));
7107 s
.next_write_length(10);
7109 boost::asio::async_write_at(s
, 1234, sb
,
7110 boost::asio::transfer_at_least(42),
7111 bindns::bind(async_write_handler
,
7112 _1
, _2
, 50, &called
));
7115 BOOST_ASIO_CHECK(called
);
7116 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
7119 sb
.consume(sb
.size());
7120 sb
.sputn(write_data
, sizeof(write_data
));
7122 boost::asio::async_write_at(s
, 0, sb
,
7123 boost::asio::transfer_exactly(1),
7124 bindns::bind(async_write_handler
,
7125 _1
, _2
, 1, &called
));
7128 BOOST_ASIO_CHECK(called
);
7129 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
7132 sb
.consume(sb
.size());
7133 sb
.sputn(write_data
, sizeof(write_data
));
7135 boost::asio::async_write_at(s
, 1234, sb
,
7136 boost::asio::transfer_exactly(1),
7137 bindns::bind(async_write_handler
,
7138 _1
, _2
, 1, &called
));
7141 BOOST_ASIO_CHECK(called
);
7142 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
7145 sb
.consume(sb
.size());
7146 sb
.sputn(write_data
, sizeof(write_data
));
7147 s
.next_write_length(1);
7149 boost::asio::async_write_at(s
, 0, sb
,
7150 boost::asio::transfer_exactly(1),
7151 bindns::bind(async_write_handler
,
7152 _1
, _2
, 1, &called
));
7155 BOOST_ASIO_CHECK(called
);
7156 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
7159 sb
.consume(sb
.size());
7160 sb
.sputn(write_data
, sizeof(write_data
));
7161 s
.next_write_length(1);
7163 boost::asio::async_write_at(s
, 1234, sb
,
7164 boost::asio::transfer_exactly(1),
7165 bindns::bind(async_write_handler
,
7166 _1
, _2
, 1, &called
));
7169 BOOST_ASIO_CHECK(called
);
7170 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
7173 sb
.consume(sb
.size());
7174 sb
.sputn(write_data
, sizeof(write_data
));
7175 s
.next_write_length(10);
7177 boost::asio::async_write_at(s
, 0, sb
,
7178 boost::asio::transfer_exactly(1),
7179 bindns::bind(async_write_handler
,
7180 _1
, _2
, 1, &called
));
7183 BOOST_ASIO_CHECK(called
);
7184 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
7187 sb
.consume(sb
.size());
7188 sb
.sputn(write_data
, sizeof(write_data
));
7189 s
.next_write_length(10);
7191 boost::asio::async_write_at(s
, 1234, sb
,
7192 boost::asio::transfer_exactly(1),
7193 bindns::bind(async_write_handler
,
7194 _1
, _2
, 1, &called
));
7197 BOOST_ASIO_CHECK(called
);
7198 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
7201 sb
.consume(sb
.size());
7202 sb
.sputn(write_data
, sizeof(write_data
));
7204 boost::asio::async_write_at(s
, 0, sb
,
7205 boost::asio::transfer_exactly(10),
7206 bindns::bind(async_write_handler
,
7207 _1
, _2
, 10, &called
));
7210 BOOST_ASIO_CHECK(called
);
7211 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7214 sb
.consume(sb
.size());
7215 sb
.sputn(write_data
, sizeof(write_data
));
7217 boost::asio::async_write_at(s
, 1234, sb
,
7218 boost::asio::transfer_exactly(10),
7219 bindns::bind(async_write_handler
,
7220 _1
, _2
, 10, &called
));
7223 BOOST_ASIO_CHECK(called
);
7224 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7227 sb
.consume(sb
.size());
7228 sb
.sputn(write_data
, sizeof(write_data
));
7229 s
.next_write_length(1);
7231 boost::asio::async_write_at(s
, 0, sb
,
7232 boost::asio::transfer_exactly(10),
7233 bindns::bind(async_write_handler
,
7234 _1
, _2
, 10, &called
));
7237 BOOST_ASIO_CHECK(called
);
7238 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7241 sb
.consume(sb
.size());
7242 sb
.sputn(write_data
, sizeof(write_data
));
7243 s
.next_write_length(1);
7245 boost::asio::async_write_at(s
, 1234, sb
,
7246 boost::asio::transfer_exactly(10),
7247 bindns::bind(async_write_handler
,
7248 _1
, _2
, 10, &called
));
7251 BOOST_ASIO_CHECK(called
);
7252 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7255 sb
.consume(sb
.size());
7256 sb
.sputn(write_data
, sizeof(write_data
));
7257 s
.next_write_length(10);
7259 boost::asio::async_write_at(s
, 0, sb
,
7260 boost::asio::transfer_exactly(10),
7261 bindns::bind(async_write_handler
,
7262 _1
, _2
, 10, &called
));
7265 BOOST_ASIO_CHECK(called
);
7266 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7269 sb
.consume(sb
.size());
7270 sb
.sputn(write_data
, sizeof(write_data
));
7271 s
.next_write_length(10);
7273 boost::asio::async_write_at(s
, 1234, sb
,
7274 boost::asio::transfer_exactly(10),
7275 bindns::bind(async_write_handler
,
7276 _1
, _2
, 10, &called
));
7279 BOOST_ASIO_CHECK(called
);
7280 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7283 sb
.consume(sb
.size());
7284 sb
.sputn(write_data
, sizeof(write_data
));
7286 boost::asio::async_write_at(s
, 0, sb
,
7287 boost::asio::transfer_exactly(42),
7288 bindns::bind(async_write_handler
,
7289 _1
, _2
, 42, &called
));
7292 BOOST_ASIO_CHECK(called
);
7293 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7296 sb
.consume(sb
.size());
7297 sb
.sputn(write_data
, sizeof(write_data
));
7299 boost::asio::async_write_at(s
, 1234, sb
,
7300 boost::asio::transfer_exactly(42),
7301 bindns::bind(async_write_handler
,
7302 _1
, _2
, 42, &called
));
7305 BOOST_ASIO_CHECK(called
);
7306 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7309 sb
.consume(sb
.size());
7310 sb
.sputn(write_data
, sizeof(write_data
));
7311 s
.next_write_length(1);
7313 boost::asio::async_write_at(s
, 0, sb
,
7314 boost::asio::transfer_exactly(42),
7315 bindns::bind(async_write_handler
,
7316 _1
, _2
, 42, &called
));
7319 BOOST_ASIO_CHECK(called
);
7320 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7323 sb
.consume(sb
.size());
7324 sb
.sputn(write_data
, sizeof(write_data
));
7325 s
.next_write_length(1);
7327 boost::asio::async_write_at(s
, 1234, sb
,
7328 boost::asio::transfer_exactly(42),
7329 bindns::bind(async_write_handler
,
7330 _1
, _2
, 42, &called
));
7333 BOOST_ASIO_CHECK(called
);
7334 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7337 sb
.consume(sb
.size());
7338 sb
.sputn(write_data
, sizeof(write_data
));
7339 s
.next_write_length(10);
7341 boost::asio::async_write_at(s
, 0, sb
,
7342 boost::asio::transfer_exactly(42),
7343 bindns::bind(async_write_handler
,
7344 _1
, _2
, 42, &called
));
7347 BOOST_ASIO_CHECK(called
);
7348 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7351 sb
.consume(sb
.size());
7352 sb
.sputn(write_data
, sizeof(write_data
));
7353 s
.next_write_length(10);
7355 boost::asio::async_write_at(s
, 1234, sb
,
7356 boost::asio::transfer_exactly(42),
7357 bindns::bind(async_write_handler
,
7358 _1
, _2
, 42, &called
));
7361 BOOST_ASIO_CHECK(called
);
7362 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7365 sb
.consume(sb
.size());
7366 sb
.sputn(write_data
, sizeof(write_data
));
7368 boost::asio::async_write_at(s
, 0, sb
, old_style_transfer_all
,
7369 bindns::bind(async_write_handler
,
7370 _1
, _2
, sizeof(write_data
), &called
));
7373 BOOST_ASIO_CHECK(called
);
7374 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7377 sb
.consume(sb
.size());
7378 sb
.sputn(write_data
, sizeof(write_data
));
7380 boost::asio::async_write_at(s
, 1234, sb
, old_style_transfer_all
,
7381 bindns::bind(async_write_handler
,
7382 _1
, _2
, sizeof(write_data
), &called
));
7385 BOOST_ASIO_CHECK(called
);
7386 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7389 sb
.consume(sb
.size());
7390 sb
.sputn(write_data
, sizeof(write_data
));
7391 s
.next_write_length(1);
7393 boost::asio::async_write_at(s
, 0, sb
, old_style_transfer_all
,
7394 bindns::bind(async_write_handler
,
7395 _1
, _2
, sizeof(write_data
), &called
));
7398 BOOST_ASIO_CHECK(called
);
7399 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7402 sb
.consume(sb
.size());
7403 sb
.sputn(write_data
, sizeof(write_data
));
7404 s
.next_write_length(1);
7406 boost::asio::async_write_at(s
, 1234, sb
, old_style_transfer_all
,
7407 bindns::bind(async_write_handler
,
7408 _1
, _2
, sizeof(write_data
), &called
));
7411 BOOST_ASIO_CHECK(called
);
7412 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7415 sb
.consume(sb
.size());
7416 sb
.sputn(write_data
, sizeof(write_data
));
7417 s
.next_write_length(10);
7419 boost::asio::async_write_at(s
, 0, sb
, old_style_transfer_all
,
7420 bindns::bind(async_write_handler
,
7421 _1
, _2
, sizeof(write_data
), &called
));
7424 BOOST_ASIO_CHECK(called
);
7425 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7428 sb
.consume(sb
.size());
7429 sb
.sputn(write_data
, sizeof(write_data
));
7430 s
.next_write_length(10);
7432 boost::asio::async_write_at(s
, 1234, sb
, old_style_transfer_all
,
7433 bindns::bind(async_write_handler
,
7434 _1
, _2
, sizeof(write_data
), &called
));
7437 BOOST_ASIO_CHECK(called
);
7438 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7441 sb
.consume(sb
.size());
7442 sb
.sputn(write_data
, sizeof(write_data
));
7444 boost::asio::async_write_at(s
, 0, sb
, short_transfer
,
7445 bindns::bind(async_write_handler
,
7446 _1
, _2
, sizeof(write_data
), &called
));
7449 BOOST_ASIO_CHECK(called
);
7450 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7453 sb
.consume(sb
.size());
7454 sb
.sputn(write_data
, sizeof(write_data
));
7456 boost::asio::async_write_at(s
, 1234, sb
, short_transfer
,
7457 bindns::bind(async_write_handler
,
7458 _1
, _2
, sizeof(write_data
), &called
));
7461 BOOST_ASIO_CHECK(called
);
7462 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7465 sb
.consume(sb
.size());
7466 sb
.sputn(write_data
, sizeof(write_data
));
7467 s
.next_write_length(1);
7469 boost::asio::async_write_at(s
, 0, sb
, short_transfer
,
7470 bindns::bind(async_write_handler
,
7471 _1
, _2
, sizeof(write_data
), &called
));
7474 BOOST_ASIO_CHECK(called
);
7475 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7478 sb
.consume(sb
.size());
7479 sb
.sputn(write_data
, sizeof(write_data
));
7480 s
.next_write_length(1);
7482 boost::asio::async_write_at(s
, 1234, sb
, short_transfer
,
7483 bindns::bind(async_write_handler
,
7484 _1
, _2
, sizeof(write_data
), &called
));
7487 BOOST_ASIO_CHECK(called
);
7488 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7491 sb
.consume(sb
.size());
7492 sb
.sputn(write_data
, sizeof(write_data
));
7493 s
.next_write_length(10);
7495 boost::asio::async_write_at(s
, 0, sb
, short_transfer
,
7496 bindns::bind(async_write_handler
,
7497 _1
, _2
, sizeof(write_data
), &called
));
7500 BOOST_ASIO_CHECK(called
);
7501 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7504 sb
.consume(sb
.size());
7505 sb
.sputn(write_data
, sizeof(write_data
));
7506 s
.next_write_length(10);
7508 boost::asio::async_write_at(s
, 1234, sb
, short_transfer
,
7509 bindns::bind(async_write_handler
,
7510 _1
, _2
, sizeof(write_data
), &called
));
7513 BOOST_ASIO_CHECK(called
);
7514 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7517 sb
.consume(sb
.size());
7518 sb
.sputn(write_data
, sizeof(write_data
));
7519 int i
= boost::asio::async_write_at(s
, 0, sb
, short_transfer
,
7520 archetypes::lazy_handler());
7521 BOOST_ASIO_CHECK(i
== 42);
7524 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7527 BOOST_ASIO_TEST_SUITE
7530 BOOST_ASIO_TEST_CASE(test_3_arg_const_buffer_write_at
)
7531 BOOST_ASIO_TEST_CASE(test_3_arg_mutable_buffer_write_at
)
7532 BOOST_ASIO_TEST_CASE(test_3_arg_vector_buffers_write_at
)
7533 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_const_buffer_write_at
)
7534 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_mutable_buffer_write_at
)
7535 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_vector_buffers_write_at
)
7536 BOOST_ASIO_TEST_CASE(test_4_arg_const_buffer_write_at
)
7537 BOOST_ASIO_TEST_CASE(test_4_arg_mutable_buffer_write_at
)
7538 BOOST_ASIO_TEST_CASE(test_4_arg_vector_buffers_write_at
)
7539 BOOST_ASIO_TEST_CASE(test_5_arg_const_buffer_write_at
)
7540 BOOST_ASIO_TEST_CASE(test_5_arg_mutable_buffer_write_at
)
7541 BOOST_ASIO_TEST_CASE(test_5_arg_vector_buffers_write_at
)
7542 BOOST_ASIO_TEST_CASE(test_4_arg_const_buffer_async_write_at
)
7543 BOOST_ASIO_TEST_CASE(test_4_arg_mutable_buffer_async_write_at
)
7544 BOOST_ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_write_at
)
7545 BOOST_ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_write_at
)
7546 BOOST_ASIO_TEST_CASE(test_4_arg_vector_buffers_async_write_at
)
7547 BOOST_ASIO_TEST_CASE(test_4_arg_streambuf_async_write_at
)
7548 BOOST_ASIO_TEST_CASE(test_5_arg_const_buffer_async_write_at
)
7549 BOOST_ASIO_TEST_CASE(test_5_arg_mutable_buffer_async_write_at
)
7550 BOOST_ASIO_TEST_CASE(test_5_arg_boost_array_buffers_async_write_at
)
7551 BOOST_ASIO_TEST_CASE(test_5_arg_std_array_buffers_async_write_at
)
7552 BOOST_ASIO_TEST_CASE(test_5_arg_vector_buffers_async_write_at
)
7553 BOOST_ASIO_TEST_CASE(test_5_arg_streambuf_async_write_at
)