5 // Copyright (c) 2003-2019 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
, BOOST_ASIO_MOVE_ARG(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 struct short_transfer
427 #if defined(BOOST_ASIO_HAS_MOVE)
428 short_transfer(short_transfer
&&) {}
429 #else // defined(BOOST_ASIO_HAS_MOVE)
430 short_transfer(const short_transfer
&) {}
431 #endif // defined(BOOST_ASIO_HAS_MOVE)
432 size_t operator()(const boost::system::error_code
& ec
,
433 size_t /*bytes_transferred*/)
439 void test_4_arg_const_buffer_write_at()
441 boost::asio::io_context ioc
;
442 test_random_access_device
s(ioc
);
443 boost::asio::const_buffer buffers
444 = boost::asio::buffer(write_data
, sizeof(write_data
));
447 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
448 boost::asio::transfer_all());
449 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
450 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
453 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
454 boost::asio::transfer_all());
455 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
456 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
459 s
.next_write_length(1);
460 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
461 boost::asio::transfer_all());
462 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
463 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
466 s
.next_write_length(1);
467 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
468 boost::asio::transfer_all());
469 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
470 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
473 s
.next_write_length(10);
474 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
475 boost::asio::transfer_all());
476 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
477 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
480 s
.next_write_length(10);
481 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
482 boost::asio::transfer_all());
483 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
484 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
487 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
488 boost::asio::transfer_at_least(1));
489 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
490 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
493 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
494 boost::asio::transfer_at_least(1));
495 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
496 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
499 s
.next_write_length(1);
500 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
501 boost::asio::transfer_at_least(1));
502 BOOST_ASIO_CHECK(bytes_transferred
== 1);
503 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
506 s
.next_write_length(1);
507 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
508 boost::asio::transfer_at_least(1));
509 BOOST_ASIO_CHECK(bytes_transferred
== 1);
510 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
513 s
.next_write_length(10);
514 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
515 boost::asio::transfer_at_least(1));
516 BOOST_ASIO_CHECK(bytes_transferred
== 10);
517 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
520 s
.next_write_length(10);
521 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
522 boost::asio::transfer_at_least(1));
523 BOOST_ASIO_CHECK(bytes_transferred
== 10);
524 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
527 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
528 boost::asio::transfer_at_least(10));
529 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
530 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
533 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
534 boost::asio::transfer_at_least(10));
535 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
536 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
539 s
.next_write_length(1);
540 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
541 boost::asio::transfer_at_least(10));
542 BOOST_ASIO_CHECK(bytes_transferred
== 10);
543 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
546 s
.next_write_length(1);
547 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
548 boost::asio::transfer_at_least(10));
549 BOOST_ASIO_CHECK(bytes_transferred
== 10);
550 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
553 s
.next_write_length(10);
554 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
555 boost::asio::transfer_at_least(10));
556 BOOST_ASIO_CHECK(bytes_transferred
== 10);
557 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
560 s
.next_write_length(10);
561 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
562 boost::asio::transfer_at_least(10));
563 BOOST_ASIO_CHECK(bytes_transferred
== 10);
564 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
567 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
568 boost::asio::transfer_at_least(42));
569 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
570 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
573 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
574 boost::asio::transfer_at_least(42));
575 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
576 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
579 s
.next_write_length(1);
580 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
581 boost::asio::transfer_at_least(42));
582 BOOST_ASIO_CHECK(bytes_transferred
== 42);
583 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
586 s
.next_write_length(1);
587 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
588 boost::asio::transfer_at_least(42));
589 BOOST_ASIO_CHECK(bytes_transferred
== 42);
590 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
593 s
.next_write_length(10);
594 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
595 boost::asio::transfer_at_least(42));
596 BOOST_ASIO_CHECK(bytes_transferred
== 50);
597 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
600 s
.next_write_length(10);
601 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
602 boost::asio::transfer_at_least(42));
603 BOOST_ASIO_CHECK(bytes_transferred
== 50);
604 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
607 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
608 boost::asio::transfer_exactly(1));
609 BOOST_ASIO_CHECK(bytes_transferred
== 1);
610 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
613 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
614 boost::asio::transfer_exactly(1));
615 BOOST_ASIO_CHECK(bytes_transferred
== 1);
616 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
619 s
.next_write_length(1);
620 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
621 boost::asio::transfer_exactly(1));
622 BOOST_ASIO_CHECK(bytes_transferred
== 1);
623 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
626 s
.next_write_length(1);
627 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
628 boost::asio::transfer_exactly(1));
629 BOOST_ASIO_CHECK(bytes_transferred
== 1);
630 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
633 s
.next_write_length(10);
634 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
635 boost::asio::transfer_exactly(1));
636 BOOST_ASIO_CHECK(bytes_transferred
== 1);
637 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
640 s
.next_write_length(10);
641 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
642 boost::asio::transfer_exactly(1));
643 BOOST_ASIO_CHECK(bytes_transferred
== 1);
644 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
647 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
648 boost::asio::transfer_exactly(10));
649 BOOST_ASIO_CHECK(bytes_transferred
== 10);
650 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
653 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
654 boost::asio::transfer_exactly(10));
655 BOOST_ASIO_CHECK(bytes_transferred
== 10);
656 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
659 s
.next_write_length(1);
660 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
661 boost::asio::transfer_exactly(10));
662 BOOST_ASIO_CHECK(bytes_transferred
== 10);
663 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
666 s
.next_write_length(1);
667 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
668 boost::asio::transfer_exactly(10));
669 BOOST_ASIO_CHECK(bytes_transferred
== 10);
670 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
673 s
.next_write_length(10);
674 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
675 boost::asio::transfer_exactly(10));
676 BOOST_ASIO_CHECK(bytes_transferred
== 10);
677 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
680 s
.next_write_length(10);
681 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
682 boost::asio::transfer_exactly(10));
683 BOOST_ASIO_CHECK(bytes_transferred
== 10);
684 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
687 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
688 boost::asio::transfer_exactly(42));
689 BOOST_ASIO_CHECK(bytes_transferred
== 42);
690 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
693 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
694 boost::asio::transfer_exactly(42));
695 BOOST_ASIO_CHECK(bytes_transferred
== 42);
696 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
699 s
.next_write_length(1);
700 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
701 boost::asio::transfer_exactly(42));
702 BOOST_ASIO_CHECK(bytes_transferred
== 42);
703 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
706 s
.next_write_length(1);
707 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
708 boost::asio::transfer_exactly(42));
709 BOOST_ASIO_CHECK(bytes_transferred
== 42);
710 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
713 s
.next_write_length(10);
714 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
715 boost::asio::transfer_exactly(42));
716 BOOST_ASIO_CHECK(bytes_transferred
== 42);
717 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
720 s
.next_write_length(10);
721 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
722 boost::asio::transfer_exactly(42));
723 BOOST_ASIO_CHECK(bytes_transferred
== 42);
724 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
727 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
728 old_style_transfer_all
);
729 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
730 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
733 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
734 old_style_transfer_all
);
735 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
736 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
739 s
.next_write_length(1);
740 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
741 old_style_transfer_all
);
742 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
743 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
746 s
.next_write_length(1);
747 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
748 old_style_transfer_all
);
749 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
750 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
753 s
.next_write_length(10);
754 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
755 old_style_transfer_all
);
756 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
757 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
760 s
.next_write_length(10);
761 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
762 old_style_transfer_all
);
763 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
764 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
767 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
768 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
769 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
772 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
773 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
774 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
777 s
.next_write_length(1);
778 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
779 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
780 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
783 s
.next_write_length(1);
784 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
785 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
786 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
789 s
.next_write_length(10);
790 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
791 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
792 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
795 s
.next_write_length(10);
796 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
797 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
798 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
801 void test_4_arg_mutable_buffer_write_at()
803 boost::asio::io_context ioc
;
804 test_random_access_device
s(ioc
);
805 boost::asio::mutable_buffer buffers
806 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
809 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
810 boost::asio::transfer_all());
811 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
812 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
815 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
816 boost::asio::transfer_all());
817 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
818 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
821 s
.next_write_length(1);
822 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
823 boost::asio::transfer_all());
824 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
825 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
828 s
.next_write_length(1);
829 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
830 boost::asio::transfer_all());
831 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
832 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
835 s
.next_write_length(10);
836 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
837 boost::asio::transfer_all());
838 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
839 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
842 s
.next_write_length(10);
843 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
844 boost::asio::transfer_all());
845 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
846 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
849 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
850 boost::asio::transfer_at_least(1));
851 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
852 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
855 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
856 boost::asio::transfer_at_least(1));
857 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
858 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
861 s
.next_write_length(1);
862 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
863 boost::asio::transfer_at_least(1));
864 BOOST_ASIO_CHECK(bytes_transferred
== 1);
865 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
868 s
.next_write_length(1);
869 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
870 boost::asio::transfer_at_least(1));
871 BOOST_ASIO_CHECK(bytes_transferred
== 1);
872 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
875 s
.next_write_length(10);
876 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
877 boost::asio::transfer_at_least(1));
878 BOOST_ASIO_CHECK(bytes_transferred
== 10);
879 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
882 s
.next_write_length(10);
883 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
884 boost::asio::transfer_at_least(1));
885 BOOST_ASIO_CHECK(bytes_transferred
== 10);
886 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
889 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
890 boost::asio::transfer_at_least(10));
891 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
892 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
895 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
896 boost::asio::transfer_at_least(10));
897 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
898 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
901 s
.next_write_length(1);
902 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
903 boost::asio::transfer_at_least(10));
904 BOOST_ASIO_CHECK(bytes_transferred
== 10);
905 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
908 s
.next_write_length(1);
909 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
910 boost::asio::transfer_at_least(10));
911 BOOST_ASIO_CHECK(bytes_transferred
== 10);
912 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
915 s
.next_write_length(10);
916 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
917 boost::asio::transfer_at_least(10));
918 BOOST_ASIO_CHECK(bytes_transferred
== 10);
919 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
922 s
.next_write_length(10);
923 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
924 boost::asio::transfer_at_least(10));
925 BOOST_ASIO_CHECK(bytes_transferred
== 10);
926 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
929 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
930 boost::asio::transfer_at_least(42));
931 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
932 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
935 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
936 boost::asio::transfer_at_least(42));
937 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
938 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
941 s
.next_write_length(1);
942 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
943 boost::asio::transfer_at_least(42));
944 BOOST_ASIO_CHECK(bytes_transferred
== 42);
945 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
948 s
.next_write_length(1);
949 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
950 boost::asio::transfer_at_least(42));
951 BOOST_ASIO_CHECK(bytes_transferred
== 42);
952 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
955 s
.next_write_length(10);
956 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
957 boost::asio::transfer_at_least(42));
958 BOOST_ASIO_CHECK(bytes_transferred
== 50);
959 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
962 s
.next_write_length(10);
963 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
964 boost::asio::transfer_at_least(42));
965 BOOST_ASIO_CHECK(bytes_transferred
== 50);
966 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
969 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
970 boost::asio::transfer_exactly(1));
971 BOOST_ASIO_CHECK(bytes_transferred
== 1);
972 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
975 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
976 boost::asio::transfer_exactly(1));
977 BOOST_ASIO_CHECK(bytes_transferred
== 1);
978 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
981 s
.next_write_length(1);
982 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
983 boost::asio::transfer_exactly(1));
984 BOOST_ASIO_CHECK(bytes_transferred
== 1);
985 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
988 s
.next_write_length(1);
989 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
990 boost::asio::transfer_exactly(1));
991 BOOST_ASIO_CHECK(bytes_transferred
== 1);
992 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
995 s
.next_write_length(10);
996 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
997 boost::asio::transfer_exactly(1));
998 BOOST_ASIO_CHECK(bytes_transferred
== 1);
999 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1002 s
.next_write_length(10);
1003 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1004 boost::asio::transfer_exactly(1));
1005 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1006 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1009 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1010 boost::asio::transfer_exactly(10));
1011 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1012 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1015 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1016 boost::asio::transfer_exactly(10));
1017 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1018 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1021 s
.next_write_length(1);
1022 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1023 boost::asio::transfer_exactly(10));
1024 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1025 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1028 s
.next_write_length(1);
1029 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1030 boost::asio::transfer_exactly(10));
1031 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1032 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1035 s
.next_write_length(10);
1036 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1037 boost::asio::transfer_exactly(10));
1038 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1039 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1042 s
.next_write_length(10);
1043 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1044 boost::asio::transfer_exactly(10));
1045 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1046 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1049 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1050 boost::asio::transfer_exactly(42));
1051 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1052 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1055 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1056 boost::asio::transfer_exactly(42));
1057 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1058 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1061 s
.next_write_length(1);
1062 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1063 boost::asio::transfer_exactly(42));
1064 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1065 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1068 s
.next_write_length(1);
1069 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1070 boost::asio::transfer_exactly(42));
1071 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1072 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1075 s
.next_write_length(10);
1076 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1077 boost::asio::transfer_exactly(42));
1078 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1079 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1082 s
.next_write_length(10);
1083 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1084 boost::asio::transfer_exactly(42));
1085 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1086 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1089 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1090 old_style_transfer_all
);
1091 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1092 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1095 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1096 old_style_transfer_all
);
1097 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1098 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1101 s
.next_write_length(1);
1102 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1103 old_style_transfer_all
);
1104 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1105 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1108 s
.next_write_length(1);
1109 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1110 old_style_transfer_all
);
1111 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1112 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1115 s
.next_write_length(10);
1116 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1117 old_style_transfer_all
);
1118 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1119 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1122 s
.next_write_length(10);
1123 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1124 old_style_transfer_all
);
1125 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1126 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1129 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
1130 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1131 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1134 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
1135 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1136 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1139 s
.next_write_length(1);
1140 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
1141 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1142 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1145 s
.next_write_length(1);
1146 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
1147 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1148 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1151 s
.next_write_length(10);
1152 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
1153 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1154 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
1157 s
.next_write_length(10);
1158 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
1159 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
1160 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
1163 void test_4_arg_vector_buffers_write_at()
1165 boost::asio::io_context ioc
;
1166 test_random_access_device
s(ioc
);
1167 std::vector
<boost::asio::const_buffer
> buffers
;
1168 buffers
.push_back(boost::asio::buffer(write_data
, 32));
1169 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
1172 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1173 boost::asio::transfer_all());
1174 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1175 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1178 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1179 boost::asio::transfer_all());
1180 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1181 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1184 s
.next_write_length(1);
1185 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1186 boost::asio::transfer_all());
1187 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1188 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1191 s
.next_write_length(1);
1192 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1193 boost::asio::transfer_all());
1194 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1195 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1198 s
.next_write_length(10);
1199 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1200 boost::asio::transfer_all());
1201 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1202 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1205 s
.next_write_length(10);
1206 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1207 boost::asio::transfer_all());
1208 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1209 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1212 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1213 boost::asio::transfer_at_least(1));
1214 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1215 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1218 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1219 boost::asio::transfer_at_least(1));
1220 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1221 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1224 s
.next_write_length(1);
1225 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1226 boost::asio::transfer_at_least(1));
1227 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1228 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1231 s
.next_write_length(1);
1232 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1233 boost::asio::transfer_at_least(1));
1234 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1235 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1238 s
.next_write_length(10);
1239 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1240 boost::asio::transfer_at_least(1));
1241 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1242 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1245 s
.next_write_length(10);
1246 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1247 boost::asio::transfer_at_least(1));
1248 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1249 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1252 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1253 boost::asio::transfer_at_least(10));
1254 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1255 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1258 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1259 boost::asio::transfer_at_least(10));
1260 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1261 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1264 s
.next_write_length(1);
1265 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1266 boost::asio::transfer_at_least(10));
1267 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1268 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1271 s
.next_write_length(1);
1272 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1273 boost::asio::transfer_at_least(10));
1274 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1275 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1278 s
.next_write_length(10);
1279 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1280 boost::asio::transfer_at_least(10));
1281 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1282 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1285 s
.next_write_length(10);
1286 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1287 boost::asio::transfer_at_least(10));
1288 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1289 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1292 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1293 boost::asio::transfer_at_least(42));
1294 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1295 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1298 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1299 boost::asio::transfer_at_least(42));
1300 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1301 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1304 s
.next_write_length(1);
1305 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1306 boost::asio::transfer_at_least(42));
1307 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1308 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1311 s
.next_write_length(1);
1312 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1313 boost::asio::transfer_at_least(42));
1314 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1315 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1318 s
.next_write_length(10);
1319 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1320 boost::asio::transfer_at_least(42));
1321 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1322 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
1325 s
.next_write_length(10);
1326 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1327 boost::asio::transfer_at_least(42));
1328 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1329 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
1332 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1333 boost::asio::transfer_exactly(1));
1334 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1335 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1338 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1339 boost::asio::transfer_exactly(1));
1340 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1341 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1344 s
.next_write_length(1);
1345 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1346 boost::asio::transfer_exactly(1));
1347 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1348 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1351 s
.next_write_length(1);
1352 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1353 boost::asio::transfer_exactly(1));
1354 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1355 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1358 s
.next_write_length(10);
1359 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1360 boost::asio::transfer_exactly(1));
1361 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1362 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1365 s
.next_write_length(10);
1366 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1367 boost::asio::transfer_exactly(1));
1368 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1369 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1372 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1373 boost::asio::transfer_exactly(10));
1374 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1375 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1378 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1379 boost::asio::transfer_exactly(10));
1380 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1381 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1384 s
.next_write_length(1);
1385 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1386 boost::asio::transfer_exactly(10));
1387 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1388 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1391 s
.next_write_length(1);
1392 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1393 boost::asio::transfer_exactly(10));
1394 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1395 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1398 s
.next_write_length(10);
1399 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1400 boost::asio::transfer_exactly(10));
1401 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1402 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1405 s
.next_write_length(10);
1406 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1407 boost::asio::transfer_exactly(10));
1408 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1409 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1412 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1413 boost::asio::transfer_exactly(42));
1414 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1415 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1418 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1419 boost::asio::transfer_exactly(42));
1420 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1421 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1424 s
.next_write_length(1);
1425 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1426 boost::asio::transfer_exactly(42));
1427 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1428 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1431 s
.next_write_length(1);
1432 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1433 boost::asio::transfer_exactly(42));
1434 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1435 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1438 s
.next_write_length(10);
1439 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1440 boost::asio::transfer_exactly(42));
1441 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1442 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1445 s
.next_write_length(10);
1446 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1447 boost::asio::transfer_exactly(42));
1448 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1449 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1452 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1453 old_style_transfer_all
);
1454 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1455 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1458 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1459 old_style_transfer_all
);
1460 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1461 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1464 s
.next_write_length(1);
1465 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1466 old_style_transfer_all
);
1467 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1468 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1471 s
.next_write_length(1);
1472 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1473 old_style_transfer_all
);
1474 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1475 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1478 s
.next_write_length(10);
1479 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1480 old_style_transfer_all
);
1481 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1482 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1485 s
.next_write_length(10);
1486 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1487 old_style_transfer_all
);
1488 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1489 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1492 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
1493 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1494 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1497 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
1498 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1499 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1502 s
.next_write_length(1);
1503 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
1504 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1505 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1508 s
.next_write_length(1);
1509 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
1510 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1511 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1514 s
.next_write_length(10);
1515 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
, short_transfer());
1516 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1517 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1520 s
.next_write_length(10);
1521 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
, short_transfer());
1522 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1523 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1526 void test_5_arg_const_buffer_write_at()
1528 boost::asio::io_context ioc
;
1529 test_random_access_device
s(ioc
);
1530 boost::asio::const_buffer buffers
1531 = boost::asio::buffer(write_data
, sizeof(write_data
));
1534 boost::system::error_code error
;
1535 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1536 boost::asio::transfer_all(), error
);
1537 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1538 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1539 BOOST_ASIO_CHECK(!error
);
1542 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1543 boost::asio::transfer_all(), error
);
1544 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1545 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1552 boost::asio::transfer_all(), error
);
1553 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1554 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1555 BOOST_ASIO_CHECK(!error
);
1558 s
.next_write_length(1);
1559 error
= boost::system::error_code();
1560 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1561 boost::asio::transfer_all(), error
);
1562 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1563 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1570 boost::asio::transfer_all(), error
);
1571 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1572 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1573 BOOST_ASIO_CHECK(!error
);
1576 s
.next_write_length(10);
1577 error
= boost::system::error_code();
1578 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1579 boost::asio::transfer_all(), error
);
1580 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1581 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1582 BOOST_ASIO_CHECK(!error
);
1585 error
= boost::system::error_code();
1586 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1587 boost::asio::transfer_at_least(1), error
);
1588 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1589 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1590 BOOST_ASIO_CHECK(!error
);
1593 error
= boost::system::error_code();
1594 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1595 boost::asio::transfer_at_least(1), error
);
1596 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1597 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
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
, 0, buffers
,
1604 boost::asio::transfer_at_least(1), error
);
1605 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1606 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1607 BOOST_ASIO_CHECK(!error
);
1610 s
.next_write_length(1);
1611 error
= boost::system::error_code();
1612 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1613 boost::asio::transfer_at_least(1), error
);
1614 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1615 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
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
, 0, buffers
,
1622 boost::asio::transfer_at_least(1), error
);
1623 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1624 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1625 BOOST_ASIO_CHECK(!error
);
1628 s
.next_write_length(10);
1629 error
= boost::system::error_code();
1630 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1631 boost::asio::transfer_at_least(1), error
);
1632 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1633 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1634 BOOST_ASIO_CHECK(!error
);
1637 error
= boost::system::error_code();
1638 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1639 boost::asio::transfer_at_least(10), error
);
1640 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1641 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1642 BOOST_ASIO_CHECK(!error
);
1645 error
= boost::system::error_code();
1646 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1647 boost::asio::transfer_at_least(10), error
);
1648 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1649 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
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
, 0, buffers
,
1656 boost::asio::transfer_at_least(10), error
);
1657 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1658 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1659 BOOST_ASIO_CHECK(!error
);
1662 s
.next_write_length(1);
1663 error
= boost::system::error_code();
1664 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1665 boost::asio::transfer_at_least(10), error
);
1666 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1667 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1674 boost::asio::transfer_at_least(10), error
);
1675 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1676 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1677 BOOST_ASIO_CHECK(!error
);
1680 s
.next_write_length(10);
1681 error
= boost::system::error_code();
1682 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1683 boost::asio::transfer_at_least(10), error
);
1684 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1685 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1686 BOOST_ASIO_CHECK(!error
);
1689 error
= boost::system::error_code();
1690 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1691 boost::asio::transfer_at_least(42), error
);
1692 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1693 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1694 BOOST_ASIO_CHECK(!error
);
1697 error
= boost::system::error_code();
1698 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1699 boost::asio::transfer_at_least(42), error
);
1700 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1701 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
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
, 0, buffers
,
1708 boost::asio::transfer_at_least(42), error
);
1709 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1710 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1711 BOOST_ASIO_CHECK(!error
);
1714 s
.next_write_length(1);
1715 error
= boost::system::error_code();
1716 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1717 boost::asio::transfer_at_least(42), error
);
1718 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1719 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
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
, 0, buffers
,
1726 boost::asio::transfer_at_least(42), error
);
1727 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1728 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
1729 BOOST_ASIO_CHECK(!error
);
1732 s
.next_write_length(10);
1733 error
= boost::system::error_code();
1734 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1735 boost::asio::transfer_at_least(42), error
);
1736 BOOST_ASIO_CHECK(bytes_transferred
== 50);
1737 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
1738 BOOST_ASIO_CHECK(!error
);
1741 error
= boost::system::error_code();
1742 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1743 boost::asio::transfer_exactly(1), error
);
1744 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1745 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1746 BOOST_ASIO_CHECK(!error
);
1749 error
= boost::system::error_code();
1750 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1751 boost::asio::transfer_exactly(1), error
);
1752 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1753 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1760 boost::asio::transfer_exactly(1), error
);
1761 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1762 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1763 BOOST_ASIO_CHECK(!error
);
1766 s
.next_write_length(1);
1767 error
= boost::system::error_code();
1768 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1769 boost::asio::transfer_exactly(1), error
);
1770 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1771 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1778 boost::asio::transfer_exactly(1), error
);
1779 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1780 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
1781 BOOST_ASIO_CHECK(!error
);
1784 s
.next_write_length(10);
1785 error
= boost::system::error_code();
1786 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1787 boost::asio::transfer_exactly(1), error
);
1788 BOOST_ASIO_CHECK(bytes_transferred
== 1);
1789 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
1790 BOOST_ASIO_CHECK(!error
);
1793 error
= boost::system::error_code();
1794 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1795 boost::asio::transfer_exactly(10), error
);
1796 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1797 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1798 BOOST_ASIO_CHECK(!error
);
1801 error
= boost::system::error_code();
1802 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1803 boost::asio::transfer_exactly(10), error
);
1804 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1805 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1812 boost::asio::transfer_exactly(10), error
);
1813 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1814 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1815 BOOST_ASIO_CHECK(!error
);
1818 s
.next_write_length(1);
1819 error
= boost::system::error_code();
1820 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1821 boost::asio::transfer_exactly(10), error
);
1822 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1823 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1830 boost::asio::transfer_exactly(10), error
);
1831 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1832 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
1833 BOOST_ASIO_CHECK(!error
);
1836 s
.next_write_length(10);
1837 error
= boost::system::error_code();
1838 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1839 boost::asio::transfer_exactly(10), error
);
1840 BOOST_ASIO_CHECK(bytes_transferred
== 10);
1841 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
1842 BOOST_ASIO_CHECK(!error
);
1845 error
= boost::system::error_code();
1846 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1847 boost::asio::transfer_exactly(42), error
);
1848 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1849 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1850 BOOST_ASIO_CHECK(!error
);
1853 error
= boost::system::error_code();
1854 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1855 boost::asio::transfer_exactly(42), error
);
1856 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1857 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1864 boost::asio::transfer_exactly(42), error
);
1865 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1866 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1867 BOOST_ASIO_CHECK(!error
);
1870 s
.next_write_length(1);
1871 error
= boost::system::error_code();
1872 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1873 boost::asio::transfer_exactly(42), error
);
1874 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1875 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1882 boost::asio::transfer_exactly(42), error
);
1883 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1884 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
1885 BOOST_ASIO_CHECK(!error
);
1888 s
.next_write_length(10);
1889 error
= boost::system::error_code();
1890 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1891 boost::asio::transfer_exactly(42), error
);
1892 BOOST_ASIO_CHECK(bytes_transferred
== 42);
1893 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
1894 BOOST_ASIO_CHECK(!error
);
1897 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1898 old_style_transfer_all
, error
);
1899 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1900 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1901 BOOST_ASIO_CHECK(!error
);
1904 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1905 old_style_transfer_all
, error
);
1906 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1907 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1914 old_style_transfer_all
, error
);
1915 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1916 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1917 BOOST_ASIO_CHECK(!error
);
1920 s
.next_write_length(1);
1921 error
= boost::system::error_code();
1922 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1923 old_style_transfer_all
, error
);
1924 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1925 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1932 old_style_transfer_all
, error
);
1933 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1934 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1935 BOOST_ASIO_CHECK(!error
);
1938 s
.next_write_length(10);
1939 error
= boost::system::error_code();
1940 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1941 old_style_transfer_all
, error
);
1942 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1943 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1944 BOOST_ASIO_CHECK(!error
);
1947 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
1948 short_transfer(), error
);
1949 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1950 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1951 BOOST_ASIO_CHECK(!error
);
1954 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1955 short_transfer(), error
);
1956 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1957 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1964 short_transfer(), error
);
1965 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1966 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1967 BOOST_ASIO_CHECK(!error
);
1970 s
.next_write_length(1);
1971 error
= boost::system::error_code();
1972 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1973 short_transfer(), error
);
1974 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1975 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
1982 short_transfer(), error
);
1983 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1984 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
1985 BOOST_ASIO_CHECK(!error
);
1988 s
.next_write_length(10);
1989 error
= boost::system::error_code();
1990 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
1991 short_transfer(), error
);
1992 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
1993 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
1994 BOOST_ASIO_CHECK(!error
);
1997 void test_5_arg_mutable_buffer_write_at()
1999 boost::asio::io_context ioc
;
2000 test_random_access_device
s(ioc
);
2001 boost::asio::mutable_buffer buffers
2002 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
2005 boost::system::error_code error
;
2006 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2007 boost::asio::transfer_all(), error
);
2008 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2009 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2010 BOOST_ASIO_CHECK(!error
);
2013 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2014 boost::asio::transfer_all(), error
);
2015 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2016 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2023 boost::asio::transfer_all(), error
);
2024 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2025 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2026 BOOST_ASIO_CHECK(!error
);
2029 s
.next_write_length(1);
2030 error
= boost::system::error_code();
2031 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2032 boost::asio::transfer_all(), error
);
2033 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2034 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2041 boost::asio::transfer_all(), error
);
2042 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2043 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2044 BOOST_ASIO_CHECK(!error
);
2047 s
.next_write_length(10);
2048 error
= boost::system::error_code();
2049 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2050 boost::asio::transfer_all(), error
);
2051 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2052 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2053 BOOST_ASIO_CHECK(!error
);
2056 error
= boost::system::error_code();
2057 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2058 boost::asio::transfer_at_least(1), error
);
2059 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2060 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2061 BOOST_ASIO_CHECK(!error
);
2064 error
= boost::system::error_code();
2065 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2066 boost::asio::transfer_at_least(1), error
);
2067 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2068 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
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
, 0, buffers
,
2075 boost::asio::transfer_at_least(1), error
);
2076 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2077 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2078 BOOST_ASIO_CHECK(!error
);
2081 s
.next_write_length(1);
2082 error
= boost::system::error_code();
2083 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2084 boost::asio::transfer_at_least(1), error
);
2085 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2086 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
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
, 0, buffers
,
2093 boost::asio::transfer_at_least(1), error
);
2094 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2095 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2096 BOOST_ASIO_CHECK(!error
);
2099 s
.next_write_length(10);
2100 error
= boost::system::error_code();
2101 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2102 boost::asio::transfer_at_least(1), error
);
2103 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2104 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2105 BOOST_ASIO_CHECK(!error
);
2108 error
= boost::system::error_code();
2109 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2110 boost::asio::transfer_at_least(10), error
);
2111 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2112 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2113 BOOST_ASIO_CHECK(!error
);
2116 error
= boost::system::error_code();
2117 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2118 boost::asio::transfer_at_least(10), error
);
2119 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2120 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
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
, 0, buffers
,
2127 boost::asio::transfer_at_least(10), error
);
2128 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2129 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2130 BOOST_ASIO_CHECK(!error
);
2133 s
.next_write_length(1);
2134 error
= boost::system::error_code();
2135 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2136 boost::asio::transfer_at_least(10), error
);
2137 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2138 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2145 boost::asio::transfer_at_least(10), error
);
2146 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2147 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2148 BOOST_ASIO_CHECK(!error
);
2151 s
.next_write_length(10);
2152 error
= boost::system::error_code();
2153 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2154 boost::asio::transfer_at_least(10), error
);
2155 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2156 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2157 BOOST_ASIO_CHECK(!error
);
2160 error
= boost::system::error_code();
2161 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2162 boost::asio::transfer_at_least(42), error
);
2163 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2164 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2165 BOOST_ASIO_CHECK(!error
);
2168 error
= boost::system::error_code();
2169 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2170 boost::asio::transfer_at_least(42), error
);
2171 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2172 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
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
, 0, buffers
,
2179 boost::asio::transfer_at_least(42), error
);
2180 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2181 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2182 BOOST_ASIO_CHECK(!error
);
2185 s
.next_write_length(1);
2186 error
= boost::system::error_code();
2187 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2188 boost::asio::transfer_at_least(42), error
);
2189 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2190 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
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
, 0, buffers
,
2197 boost::asio::transfer_at_least(42), error
);
2198 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2199 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
2200 BOOST_ASIO_CHECK(!error
);
2203 s
.next_write_length(10);
2204 error
= boost::system::error_code();
2205 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2206 boost::asio::transfer_at_least(42), error
);
2207 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2208 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
2209 BOOST_ASIO_CHECK(!error
);
2212 error
= boost::system::error_code();
2213 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2214 boost::asio::transfer_exactly(1), error
);
2215 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2216 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2217 BOOST_ASIO_CHECK(!error
);
2220 error
= boost::system::error_code();
2221 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2222 boost::asio::transfer_exactly(1), error
);
2223 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2224 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2231 boost::asio::transfer_exactly(1), error
);
2232 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2233 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2234 BOOST_ASIO_CHECK(!error
);
2237 s
.next_write_length(1);
2238 error
= boost::system::error_code();
2239 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2240 boost::asio::transfer_exactly(1), error
);
2241 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2242 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2249 boost::asio::transfer_exactly(1), error
);
2250 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2251 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2252 BOOST_ASIO_CHECK(!error
);
2255 s
.next_write_length(10);
2256 error
= boost::system::error_code();
2257 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2258 boost::asio::transfer_exactly(1), error
);
2259 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2260 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2261 BOOST_ASIO_CHECK(!error
);
2264 error
= boost::system::error_code();
2265 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2266 boost::asio::transfer_exactly(10), error
);
2267 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2268 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2269 BOOST_ASIO_CHECK(!error
);
2272 error
= boost::system::error_code();
2273 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2274 boost::asio::transfer_exactly(10), error
);
2275 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2276 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2283 boost::asio::transfer_exactly(10), error
);
2284 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2285 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2286 BOOST_ASIO_CHECK(!error
);
2289 s
.next_write_length(1);
2290 error
= boost::system::error_code();
2291 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2292 boost::asio::transfer_exactly(10), error
);
2293 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2294 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2301 boost::asio::transfer_exactly(10), error
);
2302 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2303 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2304 BOOST_ASIO_CHECK(!error
);
2307 s
.next_write_length(10);
2308 error
= boost::system::error_code();
2309 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2310 boost::asio::transfer_exactly(10), error
);
2311 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2312 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2313 BOOST_ASIO_CHECK(!error
);
2316 error
= boost::system::error_code();
2317 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2318 boost::asio::transfer_exactly(42), error
);
2319 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2320 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2321 BOOST_ASIO_CHECK(!error
);
2324 error
= boost::system::error_code();
2325 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2326 boost::asio::transfer_exactly(42), error
);
2327 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2328 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2335 boost::asio::transfer_exactly(42), error
);
2336 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2337 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2338 BOOST_ASIO_CHECK(!error
);
2341 s
.next_write_length(1);
2342 error
= boost::system::error_code();
2343 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2344 boost::asio::transfer_exactly(42), error
);
2345 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2346 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2353 boost::asio::transfer_exactly(42), error
);
2354 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2355 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2356 BOOST_ASIO_CHECK(!error
);
2359 s
.next_write_length(10);
2360 error
= boost::system::error_code();
2361 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2362 boost::asio::transfer_exactly(42), error
);
2363 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2364 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2365 BOOST_ASIO_CHECK(!error
);
2368 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2369 old_style_transfer_all
, error
);
2370 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2371 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2372 BOOST_ASIO_CHECK(!error
);
2375 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2376 old_style_transfer_all
, error
);
2377 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2378 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2385 old_style_transfer_all
, error
);
2386 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2387 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2388 BOOST_ASIO_CHECK(!error
);
2391 s
.next_write_length(1);
2392 error
= boost::system::error_code();
2393 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2394 old_style_transfer_all
, error
);
2395 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2396 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2403 old_style_transfer_all
, error
);
2404 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2405 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2406 BOOST_ASIO_CHECK(!error
);
2409 s
.next_write_length(10);
2410 error
= boost::system::error_code();
2411 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2412 old_style_transfer_all
, error
);
2413 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2414 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2415 BOOST_ASIO_CHECK(!error
);
2418 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2419 short_transfer(), error
);
2420 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2421 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2422 BOOST_ASIO_CHECK(!error
);
2425 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2426 short_transfer(), error
);
2427 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2428 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2435 short_transfer(), error
);
2436 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2437 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2438 BOOST_ASIO_CHECK(!error
);
2441 s
.next_write_length(1);
2442 error
= boost::system::error_code();
2443 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2444 short_transfer(), error
);
2445 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2446 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2453 short_transfer(), error
);
2454 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2455 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
2456 BOOST_ASIO_CHECK(!error
);
2459 s
.next_write_length(10);
2460 error
= boost::system::error_code();
2461 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2462 short_transfer(), error
);
2463 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(mutable_write_data
));
2464 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
2465 BOOST_ASIO_CHECK(!error
);
2468 void test_5_arg_vector_buffers_write_at()
2470 boost::asio::io_context ioc
;
2471 test_random_access_device
s(ioc
);
2472 std::vector
<boost::asio::const_buffer
> buffers
;
2473 buffers
.push_back(boost::asio::buffer(write_data
, 32));
2474 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
2477 boost::system::error_code error
;
2478 size_t bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2479 boost::asio::transfer_all(), error
);
2480 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2481 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2482 BOOST_ASIO_CHECK(!error
);
2485 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2486 boost::asio::transfer_all(), error
);
2487 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2488 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2495 boost::asio::transfer_all(), error
);
2496 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2497 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2498 BOOST_ASIO_CHECK(!error
);
2501 s
.next_write_length(1);
2502 error
= boost::system::error_code();
2503 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2504 boost::asio::transfer_all(), error
);
2505 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2506 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2513 boost::asio::transfer_all(), error
);
2514 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2515 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2516 BOOST_ASIO_CHECK(!error
);
2519 s
.next_write_length(10);
2520 error
= boost::system::error_code();
2521 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2522 boost::asio::transfer_all(), error
);
2523 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2524 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2525 BOOST_ASIO_CHECK(!error
);
2528 error
= boost::system::error_code();
2529 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2530 boost::asio::transfer_at_least(1), error
);
2531 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2532 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2533 BOOST_ASIO_CHECK(!error
);
2536 error
= boost::system::error_code();
2537 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2538 boost::asio::transfer_at_least(1), error
);
2539 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2540 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
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
, 0, buffers
,
2547 boost::asio::transfer_at_least(1), error
);
2548 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2549 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2550 BOOST_ASIO_CHECK(!error
);
2553 s
.next_write_length(1);
2554 error
= boost::system::error_code();
2555 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2556 boost::asio::transfer_at_least(1), error
);
2557 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2558 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
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
, 0, buffers
,
2565 boost::asio::transfer_at_least(1), error
);
2566 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2567 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2568 BOOST_ASIO_CHECK(!error
);
2571 s
.next_write_length(10);
2572 error
= boost::system::error_code();
2573 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2574 boost::asio::transfer_at_least(1), error
);
2575 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2576 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2577 BOOST_ASIO_CHECK(!error
);
2580 error
= boost::system::error_code();
2581 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2582 boost::asio::transfer_at_least(10), error
);
2583 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2584 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2585 BOOST_ASIO_CHECK(!error
);
2588 error
= boost::system::error_code();
2589 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2590 boost::asio::transfer_at_least(10), error
);
2591 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2592 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
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
, 0, buffers
,
2599 boost::asio::transfer_at_least(10), error
);
2600 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2601 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2602 BOOST_ASIO_CHECK(!error
);
2605 s
.next_write_length(1);
2606 error
= boost::system::error_code();
2607 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2608 boost::asio::transfer_at_least(10), error
);
2609 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2610 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2617 boost::asio::transfer_at_least(10), error
);
2618 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2619 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2620 BOOST_ASIO_CHECK(!error
);
2623 s
.next_write_length(10);
2624 error
= boost::system::error_code();
2625 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2626 boost::asio::transfer_at_least(10), error
);
2627 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2628 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2629 BOOST_ASIO_CHECK(!error
);
2632 error
= boost::system::error_code();
2633 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2634 boost::asio::transfer_at_least(42), error
);
2635 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2636 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2637 BOOST_ASIO_CHECK(!error
);
2640 error
= boost::system::error_code();
2641 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2642 boost::asio::transfer_at_least(42), error
);
2643 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2644 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
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
, 0, buffers
,
2651 boost::asio::transfer_at_least(42), error
);
2652 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2653 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2654 BOOST_ASIO_CHECK(!error
);
2657 s
.next_write_length(1);
2658 error
= boost::system::error_code();
2659 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2660 boost::asio::transfer_at_least(42), error
);
2661 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2662 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
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
, 0, buffers
,
2669 boost::asio::transfer_at_least(42), error
);
2670 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2671 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
2672 BOOST_ASIO_CHECK(!error
);
2675 s
.next_write_length(10);
2676 error
= boost::system::error_code();
2677 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2678 boost::asio::transfer_at_least(42), error
);
2679 BOOST_ASIO_CHECK(bytes_transferred
== 50);
2680 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
2681 BOOST_ASIO_CHECK(!error
);
2684 error
= boost::system::error_code();
2685 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2686 boost::asio::transfer_exactly(1), error
);
2687 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2688 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2689 BOOST_ASIO_CHECK(!error
);
2692 error
= boost::system::error_code();
2693 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2694 boost::asio::transfer_exactly(1), error
);
2695 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2696 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2703 boost::asio::transfer_exactly(1), error
);
2704 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2705 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2706 BOOST_ASIO_CHECK(!error
);
2709 s
.next_write_length(1);
2710 error
= boost::system::error_code();
2711 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2712 boost::asio::transfer_exactly(1), error
);
2713 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2714 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2721 boost::asio::transfer_exactly(1), error
);
2722 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2723 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
2724 BOOST_ASIO_CHECK(!error
);
2727 s
.next_write_length(10);
2728 error
= boost::system::error_code();
2729 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2730 boost::asio::transfer_exactly(1), error
);
2731 BOOST_ASIO_CHECK(bytes_transferred
== 1);
2732 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
2733 BOOST_ASIO_CHECK(!error
);
2736 error
= boost::system::error_code();
2737 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2738 boost::asio::transfer_exactly(10), error
);
2739 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2740 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2741 BOOST_ASIO_CHECK(!error
);
2744 error
= boost::system::error_code();
2745 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2746 boost::asio::transfer_exactly(10), error
);
2747 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2748 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2755 boost::asio::transfer_exactly(10), error
);
2756 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2757 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2758 BOOST_ASIO_CHECK(!error
);
2761 s
.next_write_length(1);
2762 error
= boost::system::error_code();
2763 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2764 boost::asio::transfer_exactly(10), error
);
2765 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2766 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2773 boost::asio::transfer_exactly(10), error
);
2774 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2775 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
2776 BOOST_ASIO_CHECK(!error
);
2779 s
.next_write_length(10);
2780 error
= boost::system::error_code();
2781 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2782 boost::asio::transfer_exactly(10), error
);
2783 BOOST_ASIO_CHECK(bytes_transferred
== 10);
2784 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
2785 BOOST_ASIO_CHECK(!error
);
2788 error
= boost::system::error_code();
2789 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2790 boost::asio::transfer_exactly(42), error
);
2791 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2792 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2793 BOOST_ASIO_CHECK(!error
);
2796 error
= boost::system::error_code();
2797 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2798 boost::asio::transfer_exactly(42), error
);
2799 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2800 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2807 boost::asio::transfer_exactly(42), error
);
2808 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2809 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2810 BOOST_ASIO_CHECK(!error
);
2813 s
.next_write_length(1);
2814 error
= boost::system::error_code();
2815 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2816 boost::asio::transfer_exactly(42), error
);
2817 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2818 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2825 boost::asio::transfer_exactly(42), error
);
2826 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2827 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
2828 BOOST_ASIO_CHECK(!error
);
2831 s
.next_write_length(10);
2832 error
= boost::system::error_code();
2833 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2834 boost::asio::transfer_exactly(42), error
);
2835 BOOST_ASIO_CHECK(bytes_transferred
== 42);
2836 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
2837 BOOST_ASIO_CHECK(!error
);
2840 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2841 old_style_transfer_all
, error
);
2842 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2843 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2844 BOOST_ASIO_CHECK(!error
);
2847 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2848 old_style_transfer_all
, error
);
2849 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2850 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2857 old_style_transfer_all
, error
);
2858 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2859 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2860 BOOST_ASIO_CHECK(!error
);
2863 s
.next_write_length(1);
2864 error
= boost::system::error_code();
2865 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2866 old_style_transfer_all
, error
);
2867 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2868 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2875 old_style_transfer_all
, error
);
2876 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2877 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2878 BOOST_ASIO_CHECK(!error
);
2881 s
.next_write_length(10);
2882 error
= boost::system::error_code();
2883 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2884 old_style_transfer_all
, error
);
2885 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2886 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2887 BOOST_ASIO_CHECK(!error
);
2890 bytes_transferred
= boost::asio::write_at(s
, 0, buffers
,
2891 short_transfer(), error
);
2892 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2893 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2894 BOOST_ASIO_CHECK(!error
);
2897 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2898 short_transfer(), error
);
2899 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2900 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2907 short_transfer(), error
);
2908 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2909 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2910 BOOST_ASIO_CHECK(!error
);
2913 s
.next_write_length(1);
2914 error
= boost::system::error_code();
2915 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2916 short_transfer(), error
);
2917 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2918 BOOST_ASIO_CHECK(s
.check_buffers(1234, 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
, 0, buffers
,
2925 short_transfer(), error
);
2926 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2927 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2928 BOOST_ASIO_CHECK(!error
);
2931 s
.next_write_length(10);
2932 error
= boost::system::error_code();
2933 bytes_transferred
= boost::asio::write_at(s
, 1234, buffers
,
2934 short_transfer(), error
);
2935 BOOST_ASIO_CHECK(bytes_transferred
== sizeof(write_data
));
2936 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2937 BOOST_ASIO_CHECK(!error
);
2940 void async_write_handler(const boost::system::error_code
& e
,
2941 size_t bytes_transferred
, size_t expected_bytes_transferred
, bool* called
)
2944 BOOST_ASIO_CHECK(!e
);
2945 BOOST_ASIO_CHECK(bytes_transferred
== expected_bytes_transferred
);
2948 void test_4_arg_const_buffer_async_write_at()
2950 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
2951 namespace bindns
= boost
;
2952 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
2953 namespace bindns
= std
;
2954 using std::placeholders::_1
;
2955 using std::placeholders::_2
;
2956 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
2958 boost::asio::io_context ioc
;
2959 test_random_access_device
s(ioc
);
2960 boost::asio::const_buffer buffers
2961 = boost::asio::buffer(write_data
, sizeof(write_data
));
2964 bool called
= false;
2965 boost::asio::async_write_at(s
, 0, buffers
,
2966 bindns::bind(async_write_handler
,
2967 _1
, _2
, sizeof(write_data
), &called
));
2970 BOOST_ASIO_CHECK(called
);
2971 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2975 boost::asio::async_write_at(s
, 1234, buffers
,
2976 bindns::bind(async_write_handler
,
2977 _1
, _2
, sizeof(write_data
), &called
));
2980 BOOST_ASIO_CHECK(called
);
2981 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
2984 s
.next_write_length(1);
2986 boost::asio::async_write_at(s
, 0, buffers
,
2987 bindns::bind(async_write_handler
,
2988 _1
, _2
, sizeof(write_data
), &called
));
2991 BOOST_ASIO_CHECK(called
);
2992 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
2995 s
.next_write_length(1);
2997 boost::asio::async_write_at(s
, 1234, buffers
,
2998 bindns::bind(async_write_handler
,
2999 _1
, _2
, sizeof(write_data
), &called
));
3002 BOOST_ASIO_CHECK(called
);
3003 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3006 s
.next_write_length(10);
3008 boost::asio::async_write_at(s
, 0, buffers
,
3009 bindns::bind(async_write_handler
,
3010 _1
, _2
, sizeof(write_data
), &called
));
3013 BOOST_ASIO_CHECK(called
);
3014 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3017 s
.next_write_length(10);
3019 boost::asio::async_write_at(s
, 1234, buffers
,
3020 bindns::bind(async_write_handler
,
3021 _1
, _2
, sizeof(write_data
), &called
));
3024 BOOST_ASIO_CHECK(called
);
3025 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3028 s
.next_write_length(10);
3030 boost::asio::async_write_at(s
, 0, buffers
,
3031 bindns::bind(async_write_handler
,
3032 _1
, _2
, sizeof(write_data
), &called
));
3035 BOOST_ASIO_CHECK(called
);
3036 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3039 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3040 archetypes::lazy_handler());
3041 BOOST_ASIO_CHECK(i
== 42);
3044 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3047 void test_4_arg_mutable_buffer_async_write_at()
3049 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3050 namespace bindns
= boost
;
3051 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3052 namespace bindns
= std
;
3053 using std::placeholders::_1
;
3054 using std::placeholders::_2
;
3055 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3057 boost::asio::io_context ioc
;
3058 test_random_access_device
s(ioc
);
3059 boost::asio::mutable_buffer buffers
3060 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
3063 bool called
= false;
3064 boost::asio::async_write_at(s
, 0, buffers
,
3065 bindns::bind(async_write_handler
,
3066 _1
, _2
, sizeof(mutable_write_data
), &called
));
3069 BOOST_ASIO_CHECK(called
);
3070 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3074 boost::asio::async_write_at(s
, 1234, buffers
,
3075 bindns::bind(async_write_handler
,
3076 _1
, _2
, sizeof(mutable_write_data
), &called
));
3079 BOOST_ASIO_CHECK(called
);
3080 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
3083 s
.next_write_length(1);
3085 boost::asio::async_write_at(s
, 0, buffers
,
3086 bindns::bind(async_write_handler
,
3087 _1
, _2
, sizeof(mutable_write_data
), &called
));
3090 BOOST_ASIO_CHECK(called
);
3091 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3094 s
.next_write_length(1);
3096 boost::asio::async_write_at(s
, 1234, buffers
,
3097 bindns::bind(async_write_handler
,
3098 _1
, _2
, sizeof(mutable_write_data
), &called
));
3101 BOOST_ASIO_CHECK(called
);
3102 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
3105 s
.next_write_length(10);
3107 boost::asio::async_write_at(s
, 0, buffers
,
3108 bindns::bind(async_write_handler
,
3109 _1
, _2
, sizeof(mutable_write_data
), &called
));
3112 BOOST_ASIO_CHECK(called
);
3113 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3116 s
.next_write_length(10);
3118 boost::asio::async_write_at(s
, 1234, buffers
,
3119 bindns::bind(async_write_handler
,
3120 _1
, _2
, sizeof(mutable_write_data
), &called
));
3123 BOOST_ASIO_CHECK(called
);
3124 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
3127 s
.next_write_length(10);
3129 boost::asio::async_write_at(s
, 0, buffers
,
3130 bindns::bind(async_write_handler
,
3131 _1
, _2
, sizeof(mutable_write_data
), &called
));
3134 BOOST_ASIO_CHECK(called
);
3135 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
3138 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3139 archetypes::lazy_handler());
3140 BOOST_ASIO_CHECK(i
== 42);
3143 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3146 void test_4_arg_boost_array_buffers_async_write_at()
3148 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3149 namespace bindns
= boost
;
3150 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3151 namespace bindns
= std
;
3152 using std::placeholders::_1
;
3153 using std::placeholders::_2
;
3154 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3156 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
3157 boost::asio::io_context ioc
;
3158 test_random_access_device
s(ioc
);
3159 boost::array
<boost::asio::const_buffer
, 2> buffers
= { {
3160 boost::asio::buffer(write_data
, 32),
3161 boost::asio::buffer(write_data
) + 32 } };
3164 bool called
= false;
3165 boost::asio::async_write_at(s
, 0, buffers
,
3166 bindns::bind(async_write_handler
,
3167 _1
, _2
, sizeof(write_data
), &called
));
3170 BOOST_ASIO_CHECK(called
);
3171 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3175 boost::asio::async_write_at(s
, 1234, buffers
,
3176 bindns::bind(async_write_handler
,
3177 _1
, _2
, sizeof(write_data
), &called
));
3180 BOOST_ASIO_CHECK(called
);
3181 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3184 s
.next_write_length(1);
3186 boost::asio::async_write_at(s
, 0, buffers
,
3187 bindns::bind(async_write_handler
,
3188 _1
, _2
, sizeof(write_data
), &called
));
3191 BOOST_ASIO_CHECK(called
);
3192 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3195 s
.next_write_length(1);
3197 boost::asio::async_write_at(s
, 1234, buffers
,
3198 bindns::bind(async_write_handler
,
3199 _1
, _2
, sizeof(write_data
), &called
));
3202 BOOST_ASIO_CHECK(called
);
3203 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3206 s
.next_write_length(10);
3208 boost::asio::async_write_at(s
, 0, buffers
,
3209 bindns::bind(async_write_handler
,
3210 _1
, _2
, sizeof(write_data
), &called
));
3213 BOOST_ASIO_CHECK(called
);
3214 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3217 s
.next_write_length(10);
3219 boost::asio::async_write_at(s
, 1234, buffers
,
3220 bindns::bind(async_write_handler
,
3221 _1
, _2
, sizeof(write_data
), &called
));
3224 BOOST_ASIO_CHECK(called
);
3225 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3228 s
.next_write_length(10);
3230 boost::asio::async_write_at(s
, 0, buffers
,
3231 bindns::bind(async_write_handler
,
3232 _1
, _2
, sizeof(write_data
), &called
));
3235 BOOST_ASIO_CHECK(called
);
3236 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3239 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3240 archetypes::lazy_handler());
3241 BOOST_ASIO_CHECK(i
== 42);
3244 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3245 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
3248 void test_4_arg_std_array_buffers_async_write_at()
3250 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3251 namespace bindns
= boost
;
3252 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3253 namespace bindns
= std
;
3254 using std::placeholders::_1
;
3255 using std::placeholders::_2
;
3256 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3258 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
3259 boost::asio::io_context ioc
;
3260 test_random_access_device
s(ioc
);
3261 std::array
<boost::asio::const_buffer
, 2> buffers
= { {
3262 boost::asio::buffer(write_data
, 32),
3263 boost::asio::buffer(write_data
) + 32 } };
3266 bool called
= false;
3267 boost::asio::async_write_at(s
, 0, buffers
,
3268 bindns::bind(async_write_handler
,
3269 _1
, _2
, sizeof(write_data
), &called
));
3272 BOOST_ASIO_CHECK(called
);
3273 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3277 boost::asio::async_write_at(s
, 1234, buffers
,
3278 bindns::bind(async_write_handler
,
3279 _1
, _2
, sizeof(write_data
), &called
));
3282 BOOST_ASIO_CHECK(called
);
3283 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3286 s
.next_write_length(1);
3288 boost::asio::async_write_at(s
, 0, buffers
,
3289 bindns::bind(async_write_handler
,
3290 _1
, _2
, sizeof(write_data
), &called
));
3293 BOOST_ASIO_CHECK(called
);
3294 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3297 s
.next_write_length(1);
3299 boost::asio::async_write_at(s
, 1234, buffers
,
3300 bindns::bind(async_write_handler
,
3301 _1
, _2
, sizeof(write_data
), &called
));
3304 BOOST_ASIO_CHECK(called
);
3305 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3308 s
.next_write_length(10);
3310 boost::asio::async_write_at(s
, 0, buffers
,
3311 bindns::bind(async_write_handler
,
3312 _1
, _2
, sizeof(write_data
), &called
));
3315 BOOST_ASIO_CHECK(called
);
3316 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3319 s
.next_write_length(10);
3321 boost::asio::async_write_at(s
, 1234, buffers
,
3322 bindns::bind(async_write_handler
,
3323 _1
, _2
, sizeof(write_data
), &called
));
3326 BOOST_ASIO_CHECK(called
);
3327 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3330 s
.next_write_length(10);
3332 boost::asio::async_write_at(s
, 0, buffers
,
3333 bindns::bind(async_write_handler
,
3334 _1
, _2
, sizeof(write_data
), &called
));
3337 BOOST_ASIO_CHECK(called
);
3338 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3341 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3342 archetypes::lazy_handler());
3343 BOOST_ASIO_CHECK(i
== 42);
3346 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3347 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
3350 void test_4_arg_vector_buffers_async_write_at()
3352 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3353 namespace bindns
= boost
;
3354 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3355 namespace bindns
= std
;
3356 using std::placeholders::_1
;
3357 using std::placeholders::_2
;
3358 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3360 boost::asio::io_context ioc
;
3361 test_random_access_device
s(ioc
);
3362 std::vector
<boost::asio::const_buffer
> buffers
;
3363 buffers
.push_back(boost::asio::buffer(write_data
, 32));
3364 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
3367 bool called
= false;
3368 boost::asio::async_write_at(s
, 0, buffers
,
3369 bindns::bind(async_write_handler
,
3370 _1
, _2
, sizeof(write_data
), &called
));
3373 BOOST_ASIO_CHECK(called
);
3374 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3378 boost::asio::async_write_at(s
, 1234, buffers
,
3379 bindns::bind(async_write_handler
,
3380 _1
, _2
, sizeof(write_data
), &called
));
3383 BOOST_ASIO_CHECK(called
);
3384 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3387 s
.next_write_length(1);
3389 boost::asio::async_write_at(s
, 0, buffers
,
3390 bindns::bind(async_write_handler
,
3391 _1
, _2
, sizeof(write_data
), &called
));
3394 BOOST_ASIO_CHECK(called
);
3395 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3398 s
.next_write_length(1);
3400 boost::asio::async_write_at(s
, 1234, buffers
,
3401 bindns::bind(async_write_handler
,
3402 _1
, _2
, sizeof(write_data
), &called
));
3405 BOOST_ASIO_CHECK(called
);
3406 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3409 s
.next_write_length(10);
3411 boost::asio::async_write_at(s
, 0, buffers
,
3412 bindns::bind(async_write_handler
,
3413 _1
, _2
, sizeof(write_data
), &called
));
3416 BOOST_ASIO_CHECK(called
);
3417 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3420 s
.next_write_length(10);
3422 boost::asio::async_write_at(s
, 1234, buffers
,
3423 bindns::bind(async_write_handler
,
3424 _1
, _2
, sizeof(write_data
), &called
));
3427 BOOST_ASIO_CHECK(called
);
3428 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3431 s
.next_write_length(10);
3433 boost::asio::async_write_at(s
, 0, buffers
,
3434 bindns::bind(async_write_handler
,
3435 _1
, _2
, sizeof(write_data
), &called
));
3438 BOOST_ASIO_CHECK(called
);
3439 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3442 int i
= boost::asio::async_write_at(s
, 0, buffers
,
3443 archetypes::lazy_handler());
3444 BOOST_ASIO_CHECK(i
== 42);
3447 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3450 void test_4_arg_streambuf_async_write_at()
3452 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3453 namespace bindns
= boost
;
3454 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3455 namespace bindns
= std
;
3456 using std::placeholders::_1
;
3457 using std::placeholders::_2
;
3458 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3460 boost::asio::io_context ioc
;
3461 test_random_access_device
s(ioc
);
3462 boost::asio::streambuf sb
;
3463 boost::asio::const_buffer buffers
3464 = boost::asio::buffer(write_data
, sizeof(write_data
));
3467 sb
.consume(sb
.size());
3468 sb
.sputn(write_data
, sizeof(write_data
));
3469 bool called
= false;
3470 boost::asio::async_write_at(s
, 0, sb
,
3471 bindns::bind(async_write_handler
,
3472 _1
, _2
, sizeof(write_data
), &called
));
3475 BOOST_ASIO_CHECK(called
);
3476 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3479 sb
.consume(sb
.size());
3480 sb
.sputn(write_data
, sizeof(write_data
));
3482 boost::asio::async_write_at(s
, 1234, sb
,
3483 bindns::bind(async_write_handler
,
3484 _1
, _2
, sizeof(write_data
), &called
));
3487 BOOST_ASIO_CHECK(called
);
3488 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3491 sb
.consume(sb
.size());
3492 sb
.sputn(write_data
, sizeof(write_data
));
3493 s
.next_write_length(1);
3495 boost::asio::async_write_at(s
, 0, sb
,
3496 bindns::bind(async_write_handler
,
3497 _1
, _2
, sizeof(write_data
), &called
));
3500 BOOST_ASIO_CHECK(called
);
3501 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3504 sb
.consume(sb
.size());
3505 sb
.sputn(write_data
, sizeof(write_data
));
3506 s
.next_write_length(1);
3508 boost::asio::async_write_at(s
, 1234, sb
,
3509 bindns::bind(async_write_handler
,
3510 _1
, _2
, sizeof(write_data
), &called
));
3513 BOOST_ASIO_CHECK(called
);
3514 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3517 sb
.consume(sb
.size());
3518 sb
.sputn(write_data
, sizeof(write_data
));
3519 s
.next_write_length(10);
3521 boost::asio::async_write_at(s
, 0, sb
,
3522 bindns::bind(async_write_handler
,
3523 _1
, _2
, sizeof(write_data
), &called
));
3526 BOOST_ASIO_CHECK(called
);
3527 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3530 sb
.consume(sb
.size());
3531 sb
.sputn(write_data
, sizeof(write_data
));
3532 s
.next_write_length(10);
3534 boost::asio::async_write_at(s
, 1234, sb
,
3535 bindns::bind(async_write_handler
,
3536 _1
, _2
, sizeof(write_data
), &called
));
3539 BOOST_ASIO_CHECK(called
);
3540 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3543 sb
.consume(sb
.size());
3544 sb
.sputn(write_data
, sizeof(write_data
));
3545 s
.next_write_length(10);
3547 boost::asio::async_write_at(s
, 0, sb
,
3548 bindns::bind(async_write_handler
,
3549 _1
, _2
, sizeof(write_data
), &called
));
3552 BOOST_ASIO_CHECK(called
);
3553 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3556 sb
.consume(sb
.size());
3557 sb
.sputn(write_data
, sizeof(write_data
));
3558 int i
= boost::asio::async_write_at(s
, 0, sb
,
3559 archetypes::lazy_handler());
3560 BOOST_ASIO_CHECK(i
== 42);
3563 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3566 void test_5_arg_const_buffer_async_write_at()
3568 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
3569 namespace bindns
= boost
;
3570 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
3571 namespace bindns
= std
;
3572 using std::placeholders::_1
;
3573 using std::placeholders::_2
;
3574 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
3576 boost::asio::io_context ioc
;
3577 test_random_access_device
s(ioc
);
3578 boost::asio::const_buffer buffers
3579 = boost::asio::buffer(write_data
, sizeof(write_data
));
3582 bool called
= false;
3583 boost::asio::async_write_at(s
, 0, buffers
,
3584 boost::asio::transfer_all(),
3585 bindns::bind(async_write_handler
,
3586 _1
, _2
, sizeof(write_data
), &called
));
3589 BOOST_ASIO_CHECK(called
);
3590 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3594 boost::asio::async_write_at(s
, 1234, buffers
,
3595 boost::asio::transfer_all(),
3596 bindns::bind(async_write_handler
,
3597 _1
, _2
, sizeof(write_data
), &called
));
3600 BOOST_ASIO_CHECK(called
);
3601 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3604 s
.next_write_length(1);
3606 boost::asio::async_write_at(s
, 0, buffers
,
3607 boost::asio::transfer_all(),
3608 bindns::bind(async_write_handler
,
3609 _1
, _2
, sizeof(write_data
), &called
));
3612 BOOST_ASIO_CHECK(called
);
3613 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3616 s
.next_write_length(1);
3618 boost::asio::async_write_at(s
, 1234, buffers
,
3619 boost::asio::transfer_all(),
3620 bindns::bind(async_write_handler
,
3621 _1
, _2
, sizeof(write_data
), &called
));
3624 BOOST_ASIO_CHECK(called
);
3625 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3628 s
.next_write_length(10);
3630 boost::asio::async_write_at(s
, 0, buffers
,
3631 boost::asio::transfer_all(),
3632 bindns::bind(async_write_handler
,
3633 _1
, _2
, sizeof(write_data
), &called
));
3636 BOOST_ASIO_CHECK(called
);
3637 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3640 s
.next_write_length(10);
3642 boost::asio::async_write_at(s
, 1234, buffers
,
3643 boost::asio::transfer_all(),
3644 bindns::bind(async_write_handler
,
3645 _1
, _2
, sizeof(write_data
), &called
));
3648 BOOST_ASIO_CHECK(called
);
3649 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3653 boost::asio::async_write_at(s
, 0, buffers
,
3654 boost::asio::transfer_at_least(1),
3655 bindns::bind(async_write_handler
,
3656 _1
, _2
, sizeof(write_data
), &called
));
3659 BOOST_ASIO_CHECK(called
);
3660 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3664 boost::asio::async_write_at(s
, 1234, buffers
,
3665 boost::asio::transfer_at_least(1),
3666 bindns::bind(async_write_handler
,
3667 _1
, _2
, sizeof(write_data
), &called
));
3670 BOOST_ASIO_CHECK(called
);
3671 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3674 s
.next_write_length(1);
3676 boost::asio::async_write_at(s
, 0, buffers
,
3677 boost::asio::transfer_at_least(1),
3678 bindns::bind(async_write_handler
,
3679 _1
, _2
, 1, &called
));
3682 BOOST_ASIO_CHECK(called
);
3683 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3686 s
.next_write_length(1);
3688 boost::asio::async_write_at(s
, 1234, buffers
,
3689 boost::asio::transfer_at_least(1),
3690 bindns::bind(async_write_handler
,
3691 _1
, _2
, 1, &called
));
3694 BOOST_ASIO_CHECK(called
);
3695 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3698 s
.next_write_length(10);
3700 boost::asio::async_write_at(s
, 0, buffers
,
3701 boost::asio::transfer_at_least(1),
3702 bindns::bind(async_write_handler
,
3703 _1
, _2
, 10, &called
));
3706 BOOST_ASIO_CHECK(called
);
3707 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3710 s
.next_write_length(10);
3712 boost::asio::async_write_at(s
, 1234, buffers
,
3713 boost::asio::transfer_at_least(1),
3714 bindns::bind(async_write_handler
,
3715 _1
, _2
, 10, &called
));
3718 BOOST_ASIO_CHECK(called
);
3719 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3723 boost::asio::async_write_at(s
, 0, buffers
,
3724 boost::asio::transfer_at_least(10),
3725 bindns::bind(async_write_handler
,
3726 _1
, _2
, sizeof(write_data
), &called
));
3729 BOOST_ASIO_CHECK(called
);
3730 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3734 boost::asio::async_write_at(s
, 1234, buffers
,
3735 boost::asio::transfer_at_least(10),
3736 bindns::bind(async_write_handler
,
3737 _1
, _2
, sizeof(write_data
), &called
));
3740 BOOST_ASIO_CHECK(called
);
3741 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3744 s
.next_write_length(1);
3746 boost::asio::async_write_at(s
, 0, buffers
,
3747 boost::asio::transfer_at_least(10),
3748 bindns::bind(async_write_handler
,
3749 _1
, _2
, 10, &called
));
3752 BOOST_ASIO_CHECK(called
);
3753 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3756 s
.next_write_length(1);
3758 boost::asio::async_write_at(s
, 1234, buffers
,
3759 boost::asio::transfer_at_least(10),
3760 bindns::bind(async_write_handler
,
3761 _1
, _2
, 10, &called
));
3764 BOOST_ASIO_CHECK(called
);
3765 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3768 s
.next_write_length(10);
3770 boost::asio::async_write_at(s
, 0, buffers
,
3771 boost::asio::transfer_at_least(10),
3772 bindns::bind(async_write_handler
,
3773 _1
, _2
, 10, &called
));
3776 BOOST_ASIO_CHECK(called
);
3777 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3780 s
.next_write_length(10);
3782 boost::asio::async_write_at(s
, 1234, buffers
,
3783 boost::asio::transfer_at_least(10),
3784 bindns::bind(async_write_handler
,
3785 _1
, _2
, 10, &called
));
3788 BOOST_ASIO_CHECK(called
);
3789 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3793 boost::asio::async_write_at(s
, 0, buffers
,
3794 boost::asio::transfer_at_least(42),
3795 bindns::bind(async_write_handler
,
3796 _1
, _2
, sizeof(write_data
), &called
));
3799 BOOST_ASIO_CHECK(called
);
3800 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
3804 boost::asio::async_write_at(s
, 1234, buffers
,
3805 boost::asio::transfer_at_least(42),
3806 bindns::bind(async_write_handler
,
3807 _1
, _2
, sizeof(write_data
), &called
));
3810 BOOST_ASIO_CHECK(called
);
3811 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
3814 s
.next_write_length(1);
3816 boost::asio::async_write_at(s
, 0, buffers
,
3817 boost::asio::transfer_at_least(42),
3818 bindns::bind(async_write_handler
,
3819 _1
, _2
, 42, &called
));
3822 BOOST_ASIO_CHECK(called
);
3823 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
3826 s
.next_write_length(1);
3828 boost::asio::async_write_at(s
, 1234, buffers
,
3829 boost::asio::transfer_at_least(42),
3830 bindns::bind(async_write_handler
,
3831 _1
, _2
, 42, &called
));
3834 BOOST_ASIO_CHECK(called
);
3835 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
3838 s
.next_write_length(10);
3840 boost::asio::async_write_at(s
, 0, buffers
,
3841 boost::asio::transfer_at_least(42),
3842 bindns::bind(async_write_handler
,
3843 _1
, _2
, 50, &called
));
3846 BOOST_ASIO_CHECK(called
);
3847 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
3850 s
.next_write_length(10);
3852 boost::asio::async_write_at(s
, 1234, buffers
,
3853 boost::asio::transfer_at_least(42),
3854 bindns::bind(async_write_handler
,
3855 _1
, _2
, 50, &called
));
3858 BOOST_ASIO_CHECK(called
);
3859 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
3863 boost::asio::async_write_at(s
, 0, buffers
,
3864 boost::asio::transfer_exactly(1),
3865 bindns::bind(async_write_handler
,
3866 _1
, _2
, 1, &called
));
3869 BOOST_ASIO_CHECK(called
);
3870 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3874 boost::asio::async_write_at(s
, 1234, buffers
,
3875 boost::asio::transfer_exactly(1),
3876 bindns::bind(async_write_handler
,
3877 _1
, _2
, 1, &called
));
3880 BOOST_ASIO_CHECK(called
);
3881 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3884 s
.next_write_length(1);
3886 boost::asio::async_write_at(s
, 0, buffers
,
3887 boost::asio::transfer_exactly(1),
3888 bindns::bind(async_write_handler
,
3889 _1
, _2
, 1, &called
));
3892 BOOST_ASIO_CHECK(called
);
3893 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3896 s
.next_write_length(1);
3898 boost::asio::async_write_at(s
, 1234, buffers
,
3899 boost::asio::transfer_exactly(1),
3900 bindns::bind(async_write_handler
,
3901 _1
, _2
, 1, &called
));
3904 BOOST_ASIO_CHECK(called
);
3905 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3908 s
.next_write_length(10);
3910 boost::asio::async_write_at(s
, 0, buffers
,
3911 boost::asio::transfer_exactly(1),
3912 bindns::bind(async_write_handler
,
3913 _1
, _2
, 1, &called
));
3916 BOOST_ASIO_CHECK(called
);
3917 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
3920 s
.next_write_length(10);
3922 boost::asio::async_write_at(s
, 1234, buffers
,
3923 boost::asio::transfer_exactly(1),
3924 bindns::bind(async_write_handler
,
3925 _1
, _2
, 1, &called
));
3928 BOOST_ASIO_CHECK(called
);
3929 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
3933 boost::asio::async_write_at(s
, 0, buffers
,
3934 boost::asio::transfer_exactly(10),
3935 bindns::bind(async_write_handler
,
3936 _1
, _2
, 10, &called
));
3939 BOOST_ASIO_CHECK(called
);
3940 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3944 boost::asio::async_write_at(s
, 1234, buffers
,
3945 boost::asio::transfer_exactly(10),
3946 bindns::bind(async_write_handler
,
3947 _1
, _2
, 10, &called
));
3950 BOOST_ASIO_CHECK(called
);
3951 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3954 s
.next_write_length(1);
3956 boost::asio::async_write_at(s
, 0, buffers
,
3957 boost::asio::transfer_exactly(10),
3958 bindns::bind(async_write_handler
,
3959 _1
, _2
, 10, &called
));
3962 BOOST_ASIO_CHECK(called
);
3963 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3966 s
.next_write_length(1);
3968 boost::asio::async_write_at(s
, 1234, buffers
,
3969 boost::asio::transfer_exactly(10),
3970 bindns::bind(async_write_handler
,
3971 _1
, _2
, 10, &called
));
3974 BOOST_ASIO_CHECK(called
);
3975 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
3978 s
.next_write_length(10);
3980 boost::asio::async_write_at(s
, 0, buffers
,
3981 boost::asio::transfer_exactly(10),
3982 bindns::bind(async_write_handler
,
3983 _1
, _2
, 10, &called
));
3986 BOOST_ASIO_CHECK(called
);
3987 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
3990 s
.next_write_length(10);
3992 boost::asio::async_write_at(s
, 1234, buffers
,
3993 boost::asio::transfer_exactly(10),
3994 bindns::bind(async_write_handler
,
3995 _1
, _2
, 10, &called
));
3998 BOOST_ASIO_CHECK(called
);
3999 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4003 boost::asio::async_write_at(s
, 0, buffers
,
4004 boost::asio::transfer_exactly(42),
4005 bindns::bind(async_write_handler
,
4006 _1
, _2
, 42, &called
));
4009 BOOST_ASIO_CHECK(called
);
4010 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4014 boost::asio::async_write_at(s
, 1234, buffers
,
4015 boost::asio::transfer_exactly(42),
4016 bindns::bind(async_write_handler
,
4017 _1
, _2
, 42, &called
));
4020 BOOST_ASIO_CHECK(called
);
4021 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4024 s
.next_write_length(1);
4026 boost::asio::async_write_at(s
, 0, buffers
,
4027 boost::asio::transfer_exactly(42),
4028 bindns::bind(async_write_handler
,
4029 _1
, _2
, 42, &called
));
4032 BOOST_ASIO_CHECK(called
);
4033 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4036 s
.next_write_length(1);
4038 boost::asio::async_write_at(s
, 1234, buffers
,
4039 boost::asio::transfer_exactly(42),
4040 bindns::bind(async_write_handler
,
4041 _1
, _2
, 42, &called
));
4044 BOOST_ASIO_CHECK(called
);
4045 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4048 s
.next_write_length(10);
4050 boost::asio::async_write_at(s
, 0, buffers
,
4051 boost::asio::transfer_exactly(42),
4052 bindns::bind(async_write_handler
,
4053 _1
, _2
, 42, &called
));
4056 BOOST_ASIO_CHECK(called
);
4057 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4060 s
.next_write_length(10);
4062 boost::asio::async_write_at(s
, 1234, buffers
,
4063 boost::asio::transfer_exactly(42),
4064 bindns::bind(async_write_handler
,
4065 _1
, _2
, 42, &called
));
4068 BOOST_ASIO_CHECK(called
);
4069 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4073 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4074 bindns::bind(async_write_handler
,
4075 _1
, _2
, sizeof(write_data
), &called
));
4078 BOOST_ASIO_CHECK(called
);
4079 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4083 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4084 bindns::bind(async_write_handler
,
4085 _1
, _2
, sizeof(write_data
), &called
));
4088 BOOST_ASIO_CHECK(called
);
4089 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4092 s
.next_write_length(1);
4094 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4095 bindns::bind(async_write_handler
,
4096 _1
, _2
, sizeof(write_data
), &called
));
4099 BOOST_ASIO_CHECK(called
);
4100 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4103 s
.next_write_length(1);
4105 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4106 bindns::bind(async_write_handler
,
4107 _1
, _2
, sizeof(write_data
), &called
));
4110 BOOST_ASIO_CHECK(called
);
4111 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4114 s
.next_write_length(10);
4116 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4117 bindns::bind(async_write_handler
,
4118 _1
, _2
, sizeof(write_data
), &called
));
4121 BOOST_ASIO_CHECK(called
);
4122 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4125 s
.next_write_length(10);
4127 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4128 bindns::bind(async_write_handler
,
4129 _1
, _2
, sizeof(write_data
), &called
));
4132 BOOST_ASIO_CHECK(called
);
4133 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4137 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4138 bindns::bind(async_write_handler
,
4139 _1
, _2
, sizeof(write_data
), &called
));
4142 BOOST_ASIO_CHECK(called
);
4143 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4147 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
4148 bindns::bind(async_write_handler
,
4149 _1
, _2
, sizeof(write_data
), &called
));
4152 BOOST_ASIO_CHECK(called
);
4153 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4156 s
.next_write_length(1);
4158 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4159 bindns::bind(async_write_handler
,
4160 _1
, _2
, sizeof(write_data
), &called
));
4163 BOOST_ASIO_CHECK(called
);
4164 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4167 s
.next_write_length(1);
4169 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
4170 bindns::bind(async_write_handler
,
4171 _1
, _2
, sizeof(write_data
), &called
));
4174 BOOST_ASIO_CHECK(called
);
4175 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4178 s
.next_write_length(10);
4180 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4181 bindns::bind(async_write_handler
,
4182 _1
, _2
, sizeof(write_data
), &called
));
4185 BOOST_ASIO_CHECK(called
);
4186 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4189 s
.next_write_length(10);
4191 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
4192 bindns::bind(async_write_handler
,
4193 _1
, _2
, sizeof(write_data
), &called
));
4196 BOOST_ASIO_CHECK(called
);
4197 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4200 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4201 archetypes::lazy_handler());
4202 BOOST_ASIO_CHECK(i
== 42);
4205 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4208 void test_5_arg_mutable_buffer_async_write_at()
4210 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
4211 namespace bindns
= boost
;
4212 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
4213 namespace bindns
= std
;
4214 using std::placeholders::_1
;
4215 using std::placeholders::_2
;
4216 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
4218 boost::asio::io_context ioc
;
4219 test_random_access_device
s(ioc
);
4220 boost::asio::mutable_buffer buffers
4221 = boost::asio::buffer(mutable_write_data
, sizeof(mutable_write_data
));
4224 bool called
= false;
4225 boost::asio::async_write_at(s
, 0, buffers
,
4226 boost::asio::transfer_all(),
4227 bindns::bind(async_write_handler
,
4228 _1
, _2
, sizeof(mutable_write_data
), &called
));
4231 BOOST_ASIO_CHECK(called
);
4232 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4236 boost::asio::async_write_at(s
, 1234, buffers
,
4237 boost::asio::transfer_all(),
4238 bindns::bind(async_write_handler
,
4239 _1
, _2
, sizeof(mutable_write_data
), &called
));
4242 BOOST_ASIO_CHECK(called
);
4243 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4246 s
.next_write_length(1);
4248 boost::asio::async_write_at(s
, 0, buffers
,
4249 boost::asio::transfer_all(),
4250 bindns::bind(async_write_handler
,
4251 _1
, _2
, sizeof(mutable_write_data
), &called
));
4254 BOOST_ASIO_CHECK(called
);
4255 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4258 s
.next_write_length(1);
4260 boost::asio::async_write_at(s
, 1234, buffers
,
4261 boost::asio::transfer_all(),
4262 bindns::bind(async_write_handler
,
4263 _1
, _2
, sizeof(mutable_write_data
), &called
));
4266 BOOST_ASIO_CHECK(called
);
4267 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4270 s
.next_write_length(10);
4272 boost::asio::async_write_at(s
, 0, buffers
,
4273 boost::asio::transfer_all(),
4274 bindns::bind(async_write_handler
,
4275 _1
, _2
, sizeof(mutable_write_data
), &called
));
4278 BOOST_ASIO_CHECK(called
);
4279 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4282 s
.next_write_length(10);
4284 boost::asio::async_write_at(s
, 1234, buffers
,
4285 boost::asio::transfer_all(),
4286 bindns::bind(async_write_handler
,
4287 _1
, _2
, sizeof(mutable_write_data
), &called
));
4290 BOOST_ASIO_CHECK(called
);
4291 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4295 boost::asio::async_write_at(s
, 0, buffers
,
4296 boost::asio::transfer_at_least(1),
4297 bindns::bind(async_write_handler
,
4298 _1
, _2
, sizeof(mutable_write_data
), &called
));
4301 BOOST_ASIO_CHECK(called
);
4302 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4306 boost::asio::async_write_at(s
, 1234, buffers
,
4307 boost::asio::transfer_at_least(1),
4308 bindns::bind(async_write_handler
,
4309 _1
, _2
, sizeof(mutable_write_data
), &called
));
4312 BOOST_ASIO_CHECK(called
);
4313 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4316 s
.next_write_length(1);
4318 boost::asio::async_write_at(s
, 0, buffers
,
4319 boost::asio::transfer_at_least(1),
4320 bindns::bind(async_write_handler
,
4321 _1
, _2
, 1, &called
));
4324 BOOST_ASIO_CHECK(called
);
4325 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4328 s
.next_write_length(1);
4330 boost::asio::async_write_at(s
, 1234, buffers
,
4331 boost::asio::transfer_at_least(1),
4332 bindns::bind(async_write_handler
,
4333 _1
, _2
, 1, &called
));
4336 BOOST_ASIO_CHECK(called
);
4337 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4340 s
.next_write_length(10);
4342 boost::asio::async_write_at(s
, 0, buffers
,
4343 boost::asio::transfer_at_least(1),
4344 bindns::bind(async_write_handler
,
4345 _1
, _2
, 10, &called
));
4348 BOOST_ASIO_CHECK(called
);
4349 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4352 s
.next_write_length(10);
4354 boost::asio::async_write_at(s
, 1234, buffers
,
4355 boost::asio::transfer_at_least(1),
4356 bindns::bind(async_write_handler
,
4357 _1
, _2
, 10, &called
));
4360 BOOST_ASIO_CHECK(called
);
4361 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4365 boost::asio::async_write_at(s
, 0, buffers
,
4366 boost::asio::transfer_at_least(10),
4367 bindns::bind(async_write_handler
,
4368 _1
, _2
, sizeof(mutable_write_data
), &called
));
4371 BOOST_ASIO_CHECK(called
);
4372 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4376 boost::asio::async_write_at(s
, 1234, buffers
,
4377 boost::asio::transfer_at_least(10),
4378 bindns::bind(async_write_handler
,
4379 _1
, _2
, sizeof(mutable_write_data
), &called
));
4382 BOOST_ASIO_CHECK(called
);
4383 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4386 s
.next_write_length(1);
4388 boost::asio::async_write_at(s
, 0, buffers
,
4389 boost::asio::transfer_at_least(10),
4390 bindns::bind(async_write_handler
,
4391 _1
, _2
, 10, &called
));
4394 BOOST_ASIO_CHECK(called
);
4395 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4398 s
.next_write_length(1);
4400 boost::asio::async_write_at(s
, 1234, buffers
,
4401 boost::asio::transfer_at_least(10),
4402 bindns::bind(async_write_handler
,
4403 _1
, _2
, 10, &called
));
4406 BOOST_ASIO_CHECK(called
);
4407 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4410 s
.next_write_length(10);
4412 boost::asio::async_write_at(s
, 0, buffers
,
4413 boost::asio::transfer_at_least(10),
4414 bindns::bind(async_write_handler
,
4415 _1
, _2
, 10, &called
));
4418 BOOST_ASIO_CHECK(called
);
4419 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4422 s
.next_write_length(10);
4424 boost::asio::async_write_at(s
, 1234, buffers
,
4425 boost::asio::transfer_at_least(10),
4426 bindns::bind(async_write_handler
,
4427 _1
, _2
, 10, &called
));
4430 BOOST_ASIO_CHECK(called
);
4431 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4435 boost::asio::async_write_at(s
, 0, buffers
,
4436 boost::asio::transfer_at_least(42),
4437 bindns::bind(async_write_handler
,
4438 _1
, _2
, sizeof(mutable_write_data
), &called
));
4441 BOOST_ASIO_CHECK(called
);
4442 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4446 boost::asio::async_write_at(s
, 1234, buffers
,
4447 boost::asio::transfer_at_least(42),
4448 bindns::bind(async_write_handler
,
4449 _1
, _2
, sizeof(mutable_write_data
), &called
));
4452 BOOST_ASIO_CHECK(called
);
4453 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4456 s
.next_write_length(1);
4458 boost::asio::async_write_at(s
, 0, buffers
,
4459 boost::asio::transfer_at_least(42),
4460 bindns::bind(async_write_handler
,
4461 _1
, _2
, 42, &called
));
4464 BOOST_ASIO_CHECK(called
);
4465 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4468 s
.next_write_length(1);
4470 boost::asio::async_write_at(s
, 1234, buffers
,
4471 boost::asio::transfer_at_least(42),
4472 bindns::bind(async_write_handler
,
4473 _1
, _2
, 42, &called
));
4476 BOOST_ASIO_CHECK(called
);
4477 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4480 s
.next_write_length(10);
4482 boost::asio::async_write_at(s
, 0, buffers
,
4483 boost::asio::transfer_at_least(42),
4484 bindns::bind(async_write_handler
,
4485 _1
, _2
, 50, &called
));
4488 BOOST_ASIO_CHECK(called
);
4489 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
4492 s
.next_write_length(10);
4494 boost::asio::async_write_at(s
, 1234, buffers
,
4495 boost::asio::transfer_at_least(42),
4496 bindns::bind(async_write_handler
,
4497 _1
, _2
, 50, &called
));
4500 BOOST_ASIO_CHECK(called
);
4501 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
4505 boost::asio::async_write_at(s
, 0, buffers
,
4506 boost::asio::transfer_exactly(1),
4507 bindns::bind(async_write_handler
,
4508 _1
, _2
, 1, &called
));
4511 BOOST_ASIO_CHECK(called
);
4512 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4516 boost::asio::async_write_at(s
, 1234, buffers
,
4517 boost::asio::transfer_exactly(1),
4518 bindns::bind(async_write_handler
,
4519 _1
, _2
, 1, &called
));
4522 BOOST_ASIO_CHECK(called
);
4523 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4526 s
.next_write_length(1);
4528 boost::asio::async_write_at(s
, 0, buffers
,
4529 boost::asio::transfer_exactly(1),
4530 bindns::bind(async_write_handler
,
4531 _1
, _2
, 1, &called
));
4534 BOOST_ASIO_CHECK(called
);
4535 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4538 s
.next_write_length(1);
4540 boost::asio::async_write_at(s
, 1234, buffers
,
4541 boost::asio::transfer_exactly(1),
4542 bindns::bind(async_write_handler
,
4543 _1
, _2
, 1, &called
));
4546 BOOST_ASIO_CHECK(called
);
4547 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4550 s
.next_write_length(10);
4552 boost::asio::async_write_at(s
, 0, buffers
,
4553 boost::asio::transfer_exactly(1),
4554 bindns::bind(async_write_handler
,
4555 _1
, _2
, 1, &called
));
4558 BOOST_ASIO_CHECK(called
);
4559 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4562 s
.next_write_length(10);
4564 boost::asio::async_write_at(s
, 1234, buffers
,
4565 boost::asio::transfer_exactly(1),
4566 bindns::bind(async_write_handler
,
4567 _1
, _2
, 1, &called
));
4570 BOOST_ASIO_CHECK(called
);
4571 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4575 boost::asio::async_write_at(s
, 0, buffers
,
4576 boost::asio::transfer_exactly(10),
4577 bindns::bind(async_write_handler
,
4578 _1
, _2
, 10, &called
));
4581 BOOST_ASIO_CHECK(called
);
4582 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4586 boost::asio::async_write_at(s
, 1234, buffers
,
4587 boost::asio::transfer_exactly(10),
4588 bindns::bind(async_write_handler
,
4589 _1
, _2
, 10, &called
));
4592 BOOST_ASIO_CHECK(called
);
4593 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4596 s
.next_write_length(1);
4598 boost::asio::async_write_at(s
, 0, buffers
,
4599 boost::asio::transfer_exactly(10),
4600 bindns::bind(async_write_handler
,
4601 _1
, _2
, 10, &called
));
4604 BOOST_ASIO_CHECK(called
);
4605 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4608 s
.next_write_length(1);
4610 boost::asio::async_write_at(s
, 1234, buffers
,
4611 boost::asio::transfer_exactly(10),
4612 bindns::bind(async_write_handler
,
4613 _1
, _2
, 10, &called
));
4616 BOOST_ASIO_CHECK(called
);
4617 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4620 s
.next_write_length(10);
4622 boost::asio::async_write_at(s
, 0, buffers
,
4623 boost::asio::transfer_exactly(10),
4624 bindns::bind(async_write_handler
,
4625 _1
, _2
, 10, &called
));
4628 BOOST_ASIO_CHECK(called
);
4629 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4632 s
.next_write_length(10);
4634 boost::asio::async_write_at(s
, 1234, buffers
,
4635 boost::asio::transfer_exactly(10),
4636 bindns::bind(async_write_handler
,
4637 _1
, _2
, 10, &called
));
4640 BOOST_ASIO_CHECK(called
);
4641 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
4645 boost::asio::async_write_at(s
, 0, buffers
,
4646 boost::asio::transfer_exactly(42),
4647 bindns::bind(async_write_handler
,
4648 _1
, _2
, 42, &called
));
4651 BOOST_ASIO_CHECK(called
);
4652 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4656 boost::asio::async_write_at(s
, 1234, buffers
,
4657 boost::asio::transfer_exactly(42),
4658 bindns::bind(async_write_handler
,
4659 _1
, _2
, 42, &called
));
4662 BOOST_ASIO_CHECK(called
);
4663 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4666 s
.next_write_length(1);
4668 boost::asio::async_write_at(s
, 0, buffers
,
4669 boost::asio::transfer_exactly(42),
4670 bindns::bind(async_write_handler
,
4671 _1
, _2
, 42, &called
));
4674 BOOST_ASIO_CHECK(called
);
4675 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4678 s
.next_write_length(1);
4680 boost::asio::async_write_at(s
, 1234, buffers
,
4681 boost::asio::transfer_exactly(42),
4682 bindns::bind(async_write_handler
,
4683 _1
, _2
, 42, &called
));
4686 BOOST_ASIO_CHECK(called
);
4687 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4690 s
.next_write_length(10);
4692 boost::asio::async_write_at(s
, 0, buffers
,
4693 boost::asio::transfer_exactly(42),
4694 bindns::bind(async_write_handler
,
4695 _1
, _2
, 42, &called
));
4698 BOOST_ASIO_CHECK(called
);
4699 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
4702 s
.next_write_length(10);
4704 boost::asio::async_write_at(s
, 1234, buffers
,
4705 boost::asio::transfer_exactly(42),
4706 bindns::bind(async_write_handler
,
4707 _1
, _2
, 42, &called
));
4710 BOOST_ASIO_CHECK(called
);
4711 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
4715 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4716 bindns::bind(async_write_handler
,
4717 _1
, _2
, sizeof(mutable_write_data
), &called
));
4720 BOOST_ASIO_CHECK(called
);
4721 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4725 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4726 bindns::bind(async_write_handler
,
4727 _1
, _2
, sizeof(mutable_write_data
), &called
));
4730 BOOST_ASIO_CHECK(called
);
4731 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4734 s
.next_write_length(1);
4736 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4737 bindns::bind(async_write_handler
,
4738 _1
, _2
, sizeof(mutable_write_data
), &called
));
4741 BOOST_ASIO_CHECK(called
);
4742 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4745 s
.next_write_length(1);
4747 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4748 bindns::bind(async_write_handler
,
4749 _1
, _2
, sizeof(mutable_write_data
), &called
));
4752 BOOST_ASIO_CHECK(called
);
4753 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4756 s
.next_write_length(10);
4758 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
4759 bindns::bind(async_write_handler
,
4760 _1
, _2
, sizeof(mutable_write_data
), &called
));
4763 BOOST_ASIO_CHECK(called
);
4764 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4767 s
.next_write_length(10);
4769 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
4770 bindns::bind(async_write_handler
,
4771 _1
, _2
, sizeof(mutable_write_data
), &called
));
4774 BOOST_ASIO_CHECK(called
);
4775 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4779 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4780 bindns::bind(async_write_handler
,
4781 _1
, _2
, sizeof(mutable_write_data
), &called
));
4784 BOOST_ASIO_CHECK(called
);
4785 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4789 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
4790 bindns::bind(async_write_handler
,
4791 _1
, _2
, sizeof(mutable_write_data
), &called
));
4794 BOOST_ASIO_CHECK(called
);
4795 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4798 s
.next_write_length(1);
4800 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4801 bindns::bind(async_write_handler
,
4802 _1
, _2
, sizeof(mutable_write_data
), &called
));
4805 BOOST_ASIO_CHECK(called
);
4806 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4809 s
.next_write_length(1);
4811 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
4812 bindns::bind(async_write_handler
,
4813 _1
, _2
, sizeof(mutable_write_data
), &called
));
4816 BOOST_ASIO_CHECK(called
);
4817 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4820 s
.next_write_length(10);
4822 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4823 bindns::bind(async_write_handler
,
4824 _1
, _2
, sizeof(mutable_write_data
), &called
));
4827 BOOST_ASIO_CHECK(called
);
4828 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(mutable_write_data
)));
4831 s
.next_write_length(10);
4833 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
4834 bindns::bind(async_write_handler
,
4835 _1
, _2
, sizeof(mutable_write_data
), &called
));
4838 BOOST_ASIO_CHECK(called
);
4839 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(mutable_write_data
)));
4842 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
4843 archetypes::lazy_handler());
4844 BOOST_ASIO_CHECK(i
== 42);
4847 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4850 void test_5_arg_boost_array_buffers_async_write_at()
4852 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
4853 namespace bindns
= boost
;
4854 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
4855 namespace bindns
= std
;
4856 using std::placeholders::_1
;
4857 using std::placeholders::_2
;
4858 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
4860 #if defined(BOOST_ASIO_HAS_BOOST_ARRAY)
4861 boost::asio::io_context ioc
;
4862 test_random_access_device
s(ioc
);
4863 boost::array
<boost::asio::const_buffer
, 2> buffers
= { {
4864 boost::asio::buffer(write_data
, 32),
4865 boost::asio::buffer(write_data
) + 32 } };
4868 bool called
= false;
4869 boost::asio::async_write_at(s
, 0, buffers
,
4870 boost::asio::transfer_all(),
4871 bindns::bind(async_write_handler
,
4872 _1
, _2
, sizeof(write_data
), &called
));
4875 BOOST_ASIO_CHECK(called
);
4876 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4880 boost::asio::async_write_at(s
, 1234, buffers
,
4881 boost::asio::transfer_all(),
4882 bindns::bind(async_write_handler
,
4883 _1
, _2
, sizeof(write_data
), &called
));
4886 BOOST_ASIO_CHECK(called
);
4887 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4890 s
.next_write_length(1);
4892 boost::asio::async_write_at(s
, 0, buffers
,
4893 boost::asio::transfer_all(),
4894 bindns::bind(async_write_handler
,
4895 _1
, _2
, sizeof(write_data
), &called
));
4898 BOOST_ASIO_CHECK(called
);
4899 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4902 s
.next_write_length(1);
4904 boost::asio::async_write_at(s
, 1234, buffers
,
4905 boost::asio::transfer_all(),
4906 bindns::bind(async_write_handler
,
4907 _1
, _2
, sizeof(write_data
), &called
));
4910 BOOST_ASIO_CHECK(called
);
4911 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4914 s
.next_write_length(10);
4916 boost::asio::async_write_at(s
, 0, buffers
,
4917 boost::asio::transfer_all(),
4918 bindns::bind(async_write_handler
,
4919 _1
, _2
, sizeof(write_data
), &called
));
4922 BOOST_ASIO_CHECK(called
);
4923 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4926 s
.next_write_length(10);
4928 boost::asio::async_write_at(s
, 1234, buffers
,
4929 boost::asio::transfer_all(),
4930 bindns::bind(async_write_handler
,
4931 _1
, _2
, sizeof(write_data
), &called
));
4934 BOOST_ASIO_CHECK(called
);
4935 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4939 boost::asio::async_write_at(s
, 0, buffers
,
4940 boost::asio::transfer_at_least(1),
4941 bindns::bind(async_write_handler
,
4942 _1
, _2
, sizeof(write_data
), &called
));
4945 BOOST_ASIO_CHECK(called
);
4946 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
4950 boost::asio::async_write_at(s
, 1234, buffers
,
4951 boost::asio::transfer_at_least(1),
4952 bindns::bind(async_write_handler
,
4953 _1
, _2
, sizeof(write_data
), &called
));
4956 BOOST_ASIO_CHECK(called
);
4957 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
4960 s
.next_write_length(1);
4962 boost::asio::async_write_at(s
, 0, buffers
,
4963 boost::asio::transfer_at_least(1),
4964 bindns::bind(async_write_handler
,
4965 _1
, _2
, 1, &called
));
4968 BOOST_ASIO_CHECK(called
);
4969 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
4972 s
.next_write_length(1);
4974 boost::asio::async_write_at(s
, 1234, buffers
,
4975 boost::asio::transfer_at_least(1),
4976 bindns::bind(async_write_handler
,
4977 _1
, _2
, 1, &called
));
4980 BOOST_ASIO_CHECK(called
);
4981 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
4984 s
.next_write_length(10);
4986 boost::asio::async_write_at(s
, 0, buffers
,
4987 boost::asio::transfer_at_least(1),
4988 bindns::bind(async_write_handler
,
4989 _1
, _2
, 10, &called
));
4992 BOOST_ASIO_CHECK(called
);
4993 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
4996 s
.next_write_length(10);
4998 boost::asio::async_write_at(s
, 1234, buffers
,
4999 boost::asio::transfer_at_least(1),
5000 bindns::bind(async_write_handler
,
5001 _1
, _2
, 10, &called
));
5004 BOOST_ASIO_CHECK(called
);
5005 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5009 boost::asio::async_write_at(s
, 0, buffers
,
5010 boost::asio::transfer_at_least(10),
5011 bindns::bind(async_write_handler
,
5012 _1
, _2
, sizeof(write_data
), &called
));
5015 BOOST_ASIO_CHECK(called
);
5016 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5020 boost::asio::async_write_at(s
, 1234, buffers
,
5021 boost::asio::transfer_at_least(10),
5022 bindns::bind(async_write_handler
,
5023 _1
, _2
, sizeof(write_data
), &called
));
5026 BOOST_ASIO_CHECK(called
);
5027 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5030 s
.next_write_length(1);
5032 boost::asio::async_write_at(s
, 0, buffers
,
5033 boost::asio::transfer_at_least(10),
5034 bindns::bind(async_write_handler
,
5035 _1
, _2
, 10, &called
));
5038 BOOST_ASIO_CHECK(called
);
5039 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5042 s
.next_write_length(1);
5044 boost::asio::async_write_at(s
, 1234, buffers
,
5045 boost::asio::transfer_at_least(10),
5046 bindns::bind(async_write_handler
,
5047 _1
, _2
, 10, &called
));
5050 BOOST_ASIO_CHECK(called
);
5051 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5054 s
.next_write_length(10);
5056 boost::asio::async_write_at(s
, 0, buffers
,
5057 boost::asio::transfer_at_least(10),
5058 bindns::bind(async_write_handler
,
5059 _1
, _2
, 10, &called
));
5062 BOOST_ASIO_CHECK(called
);
5063 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5066 s
.next_write_length(10);
5068 boost::asio::async_write_at(s
, 1234, buffers
,
5069 boost::asio::transfer_at_least(10),
5070 bindns::bind(async_write_handler
,
5071 _1
, _2
, 10, &called
));
5074 BOOST_ASIO_CHECK(called
);
5075 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5079 boost::asio::async_write_at(s
, 0, buffers
,
5080 boost::asio::transfer_at_least(42),
5081 bindns::bind(async_write_handler
,
5082 _1
, _2
, sizeof(write_data
), &called
));
5085 BOOST_ASIO_CHECK(called
);
5086 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5090 boost::asio::async_write_at(s
, 1234, buffers
,
5091 boost::asio::transfer_at_least(42),
5092 bindns::bind(async_write_handler
,
5093 _1
, _2
, sizeof(write_data
), &called
));
5096 BOOST_ASIO_CHECK(called
);
5097 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5100 s
.next_write_length(1);
5102 boost::asio::async_write_at(s
, 0, buffers
,
5103 boost::asio::transfer_at_least(42),
5104 bindns::bind(async_write_handler
,
5105 _1
, _2
, 42, &called
));
5108 BOOST_ASIO_CHECK(called
);
5109 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5112 s
.next_write_length(1);
5114 boost::asio::async_write_at(s
, 1234, buffers
,
5115 boost::asio::transfer_at_least(42),
5116 bindns::bind(async_write_handler
,
5117 _1
, _2
, 42, &called
));
5120 BOOST_ASIO_CHECK(called
);
5121 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5124 s
.next_write_length(10);
5126 boost::asio::async_write_at(s
, 0, buffers
,
5127 boost::asio::transfer_at_least(42),
5128 bindns::bind(async_write_handler
,
5129 _1
, _2
, 50, &called
));
5132 BOOST_ASIO_CHECK(called
);
5133 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
5136 s
.next_write_length(10);
5138 boost::asio::async_write_at(s
, 1234, buffers
,
5139 boost::asio::transfer_at_least(42),
5140 bindns::bind(async_write_handler
,
5141 _1
, _2
, 50, &called
));
5144 BOOST_ASIO_CHECK(called
);
5145 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
5149 boost::asio::async_write_at(s
, 0, buffers
,
5150 boost::asio::transfer_exactly(1),
5151 bindns::bind(async_write_handler
,
5152 _1
, _2
, 1, &called
));
5155 BOOST_ASIO_CHECK(called
);
5156 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5160 boost::asio::async_write_at(s
, 1234, buffers
,
5161 boost::asio::transfer_exactly(1),
5162 bindns::bind(async_write_handler
,
5163 _1
, _2
, 1, &called
));
5166 BOOST_ASIO_CHECK(called
);
5167 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5170 s
.next_write_length(1);
5172 boost::asio::async_write_at(s
, 0, buffers
,
5173 boost::asio::transfer_exactly(1),
5174 bindns::bind(async_write_handler
,
5175 _1
, _2
, 1, &called
));
5178 BOOST_ASIO_CHECK(called
);
5179 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5182 s
.next_write_length(1);
5184 boost::asio::async_write_at(s
, 1234, buffers
,
5185 boost::asio::transfer_exactly(1),
5186 bindns::bind(async_write_handler
,
5187 _1
, _2
, 1, &called
));
5190 BOOST_ASIO_CHECK(called
);
5191 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5194 s
.next_write_length(10);
5196 boost::asio::async_write_at(s
, 0, buffers
,
5197 boost::asio::transfer_exactly(1),
5198 bindns::bind(async_write_handler
,
5199 _1
, _2
, 1, &called
));
5202 BOOST_ASIO_CHECK(called
);
5203 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5206 s
.next_write_length(10);
5208 boost::asio::async_write_at(s
, 1234, buffers
,
5209 boost::asio::transfer_exactly(1),
5210 bindns::bind(async_write_handler
,
5211 _1
, _2
, 1, &called
));
5214 BOOST_ASIO_CHECK(called
);
5215 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5219 boost::asio::async_write_at(s
, 0, buffers
,
5220 boost::asio::transfer_exactly(10),
5221 bindns::bind(async_write_handler
,
5222 _1
, _2
, 10, &called
));
5225 BOOST_ASIO_CHECK(called
);
5226 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5230 boost::asio::async_write_at(s
, 1234, buffers
,
5231 boost::asio::transfer_exactly(10),
5232 bindns::bind(async_write_handler
,
5233 _1
, _2
, 10, &called
));
5236 BOOST_ASIO_CHECK(called
);
5237 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5240 s
.next_write_length(1);
5242 boost::asio::async_write_at(s
, 0, buffers
,
5243 boost::asio::transfer_exactly(10),
5244 bindns::bind(async_write_handler
,
5245 _1
, _2
, 10, &called
));
5248 BOOST_ASIO_CHECK(called
);
5249 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5252 s
.next_write_length(1);
5254 boost::asio::async_write_at(s
, 1234, buffers
,
5255 boost::asio::transfer_exactly(10),
5256 bindns::bind(async_write_handler
,
5257 _1
, _2
, 10, &called
));
5260 BOOST_ASIO_CHECK(called
);
5261 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5264 s
.next_write_length(10);
5266 boost::asio::async_write_at(s
, 0, buffers
,
5267 boost::asio::transfer_exactly(10),
5268 bindns::bind(async_write_handler
,
5269 _1
, _2
, 10, &called
));
5272 BOOST_ASIO_CHECK(called
);
5273 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5276 s
.next_write_length(10);
5278 boost::asio::async_write_at(s
, 1234, buffers
,
5279 boost::asio::transfer_exactly(10),
5280 bindns::bind(async_write_handler
,
5281 _1
, _2
, 10, &called
));
5284 BOOST_ASIO_CHECK(called
);
5285 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5289 boost::asio::async_write_at(s
, 0, buffers
,
5290 boost::asio::transfer_exactly(42),
5291 bindns::bind(async_write_handler
,
5292 _1
, _2
, 42, &called
));
5295 BOOST_ASIO_CHECK(called
);
5296 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5300 boost::asio::async_write_at(s
, 1234, buffers
,
5301 boost::asio::transfer_exactly(42),
5302 bindns::bind(async_write_handler
,
5303 _1
, _2
, 42, &called
));
5306 BOOST_ASIO_CHECK(called
);
5307 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5310 s
.next_write_length(1);
5312 boost::asio::async_write_at(s
, 0, buffers
,
5313 boost::asio::transfer_exactly(42),
5314 bindns::bind(async_write_handler
,
5315 _1
, _2
, 42, &called
));
5318 BOOST_ASIO_CHECK(called
);
5319 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5322 s
.next_write_length(1);
5324 boost::asio::async_write_at(s
, 1234, buffers
,
5325 boost::asio::transfer_exactly(42),
5326 bindns::bind(async_write_handler
,
5327 _1
, _2
, 42, &called
));
5330 BOOST_ASIO_CHECK(called
);
5331 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5334 s
.next_write_length(10);
5336 boost::asio::async_write_at(s
, 0, buffers
,
5337 boost::asio::transfer_exactly(42),
5338 bindns::bind(async_write_handler
,
5339 _1
, _2
, 42, &called
));
5342 BOOST_ASIO_CHECK(called
);
5343 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5346 s
.next_write_length(10);
5348 boost::asio::async_write_at(s
, 1234, buffers
,
5349 boost::asio::transfer_exactly(42),
5350 bindns::bind(async_write_handler
,
5351 _1
, _2
, 42, &called
));
5354 BOOST_ASIO_CHECK(called
);
5355 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5359 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5360 bindns::bind(async_write_handler
,
5361 _1
, _2
, sizeof(write_data
), &called
));
5364 BOOST_ASIO_CHECK(called
);
5365 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5369 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
5370 bindns::bind(async_write_handler
,
5371 _1
, _2
, sizeof(write_data
), &called
));
5374 BOOST_ASIO_CHECK(called
);
5375 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5378 s
.next_write_length(1);
5380 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5381 bindns::bind(async_write_handler
,
5382 _1
, _2
, sizeof(write_data
), &called
));
5385 BOOST_ASIO_CHECK(called
);
5386 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5389 s
.next_write_length(1);
5391 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
5392 bindns::bind(async_write_handler
,
5393 _1
, _2
, sizeof(write_data
), &called
));
5396 BOOST_ASIO_CHECK(called
);
5397 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5400 s
.next_write_length(10);
5402 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
5403 bindns::bind(async_write_handler
,
5404 _1
, _2
, sizeof(write_data
), &called
));
5407 BOOST_ASIO_CHECK(called
);
5408 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5411 s
.next_write_length(10);
5413 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
5414 bindns::bind(async_write_handler
,
5415 _1
, _2
, sizeof(write_data
), &called
));
5418 BOOST_ASIO_CHECK(called
);
5419 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5423 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
5424 bindns::bind(async_write_handler
,
5425 _1
, _2
, sizeof(write_data
), &called
));
5428 BOOST_ASIO_CHECK(called
);
5429 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5433 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
5434 bindns::bind(async_write_handler
,
5435 _1
, _2
, sizeof(write_data
), &called
));
5438 BOOST_ASIO_CHECK(called
);
5439 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5442 s
.next_write_length(1);
5444 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
5445 bindns::bind(async_write_handler
,
5446 _1
, _2
, sizeof(write_data
), &called
));
5449 BOOST_ASIO_CHECK(called
);
5450 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5453 s
.next_write_length(1);
5455 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
5456 bindns::bind(async_write_handler
,
5457 _1
, _2
, sizeof(write_data
), &called
));
5460 BOOST_ASIO_CHECK(called
);
5461 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5464 s
.next_write_length(10);
5466 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
5467 bindns::bind(async_write_handler
,
5468 _1
, _2
, sizeof(write_data
), &called
));
5471 BOOST_ASIO_CHECK(called
);
5472 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5475 s
.next_write_length(10);
5477 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
5478 bindns::bind(async_write_handler
,
5479 _1
, _2
, sizeof(write_data
), &called
));
5482 BOOST_ASIO_CHECK(called
);
5483 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5486 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
5487 archetypes::lazy_handler());
5488 BOOST_ASIO_CHECK(i
== 42);
5491 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5492 #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY)
5495 void test_5_arg_std_array_buffers_async_write_at()
5497 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
5498 namespace bindns
= boost
;
5499 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
5500 namespace bindns
= std
;
5501 using std::placeholders::_1
;
5502 using std::placeholders::_2
;
5503 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
5505 #if defined(BOOST_ASIO_HAS_STD_ARRAY)
5506 boost::asio::io_context ioc
;
5507 test_random_access_device
s(ioc
);
5508 std::array
<boost::asio::const_buffer
, 2> buffers
= { {
5509 boost::asio::buffer(write_data
, 32),
5510 boost::asio::buffer(write_data
) + 32 } };
5513 bool called
= false;
5514 boost::asio::async_write_at(s
, 0, buffers
,
5515 boost::asio::transfer_all(),
5516 bindns::bind(async_write_handler
,
5517 _1
, _2
, sizeof(write_data
), &called
));
5520 BOOST_ASIO_CHECK(called
);
5521 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5525 boost::asio::async_write_at(s
, 1234, buffers
,
5526 boost::asio::transfer_all(),
5527 bindns::bind(async_write_handler
,
5528 _1
, _2
, sizeof(write_data
), &called
));
5531 BOOST_ASIO_CHECK(called
);
5532 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5535 s
.next_write_length(1);
5537 boost::asio::async_write_at(s
, 0, buffers
,
5538 boost::asio::transfer_all(),
5539 bindns::bind(async_write_handler
,
5540 _1
, _2
, sizeof(write_data
), &called
));
5543 BOOST_ASIO_CHECK(called
);
5544 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5547 s
.next_write_length(1);
5549 boost::asio::async_write_at(s
, 1234, buffers
,
5550 boost::asio::transfer_all(),
5551 bindns::bind(async_write_handler
,
5552 _1
, _2
, sizeof(write_data
), &called
));
5555 BOOST_ASIO_CHECK(called
);
5556 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5559 s
.next_write_length(10);
5561 boost::asio::async_write_at(s
, 0, buffers
,
5562 boost::asio::transfer_all(),
5563 bindns::bind(async_write_handler
,
5564 _1
, _2
, sizeof(write_data
), &called
));
5567 BOOST_ASIO_CHECK(called
);
5568 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5571 s
.next_write_length(10);
5573 boost::asio::async_write_at(s
, 1234, buffers
,
5574 boost::asio::transfer_all(),
5575 bindns::bind(async_write_handler
,
5576 _1
, _2
, sizeof(write_data
), &called
));
5579 BOOST_ASIO_CHECK(called
);
5580 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5584 boost::asio::async_write_at(s
, 0, buffers
,
5585 boost::asio::transfer_at_least(1),
5586 bindns::bind(async_write_handler
,
5587 _1
, _2
, sizeof(write_data
), &called
));
5590 BOOST_ASIO_CHECK(called
);
5591 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5595 boost::asio::async_write_at(s
, 1234, buffers
,
5596 boost::asio::transfer_at_least(1),
5597 bindns::bind(async_write_handler
,
5598 _1
, _2
, sizeof(write_data
), &called
));
5601 BOOST_ASIO_CHECK(called
);
5602 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5605 s
.next_write_length(1);
5607 boost::asio::async_write_at(s
, 0, buffers
,
5608 boost::asio::transfer_at_least(1),
5609 bindns::bind(async_write_handler
,
5610 _1
, _2
, 1, &called
));
5613 BOOST_ASIO_CHECK(called
);
5614 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5617 s
.next_write_length(1);
5619 boost::asio::async_write_at(s
, 1234, buffers
,
5620 boost::asio::transfer_at_least(1),
5621 bindns::bind(async_write_handler
,
5622 _1
, _2
, 1, &called
));
5625 BOOST_ASIO_CHECK(called
);
5626 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5629 s
.next_write_length(10);
5631 boost::asio::async_write_at(s
, 0, buffers
,
5632 boost::asio::transfer_at_least(1),
5633 bindns::bind(async_write_handler
,
5634 _1
, _2
, 10, &called
));
5637 BOOST_ASIO_CHECK(called
);
5638 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5641 s
.next_write_length(10);
5643 boost::asio::async_write_at(s
, 1234, buffers
,
5644 boost::asio::transfer_at_least(1),
5645 bindns::bind(async_write_handler
,
5646 _1
, _2
, 10, &called
));
5649 BOOST_ASIO_CHECK(called
);
5650 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5654 boost::asio::async_write_at(s
, 0, buffers
,
5655 boost::asio::transfer_at_least(10),
5656 bindns::bind(async_write_handler
,
5657 _1
, _2
, sizeof(write_data
), &called
));
5660 BOOST_ASIO_CHECK(called
);
5661 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5665 boost::asio::async_write_at(s
, 1234, buffers
,
5666 boost::asio::transfer_at_least(10),
5667 bindns::bind(async_write_handler
,
5668 _1
, _2
, sizeof(write_data
), &called
));
5671 BOOST_ASIO_CHECK(called
);
5672 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5675 s
.next_write_length(1);
5677 boost::asio::async_write_at(s
, 0, buffers
,
5678 boost::asio::transfer_at_least(10),
5679 bindns::bind(async_write_handler
,
5680 _1
, _2
, 10, &called
));
5683 BOOST_ASIO_CHECK(called
);
5684 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5687 s
.next_write_length(1);
5689 boost::asio::async_write_at(s
, 1234, buffers
,
5690 boost::asio::transfer_at_least(10),
5691 bindns::bind(async_write_handler
,
5692 _1
, _2
, 10, &called
));
5695 BOOST_ASIO_CHECK(called
);
5696 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5699 s
.next_write_length(10);
5701 boost::asio::async_write_at(s
, 0, buffers
,
5702 boost::asio::transfer_at_least(10),
5703 bindns::bind(async_write_handler
,
5704 _1
, _2
, 10, &called
));
5707 BOOST_ASIO_CHECK(called
);
5708 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5711 s
.next_write_length(10);
5713 boost::asio::async_write_at(s
, 1234, buffers
,
5714 boost::asio::transfer_at_least(10),
5715 bindns::bind(async_write_handler
,
5716 _1
, _2
, 10, &called
));
5719 BOOST_ASIO_CHECK(called
);
5720 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5724 boost::asio::async_write_at(s
, 0, buffers
,
5725 boost::asio::transfer_at_least(42),
5726 bindns::bind(async_write_handler
,
5727 _1
, _2
, sizeof(write_data
), &called
));
5730 BOOST_ASIO_CHECK(called
);
5731 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
5735 boost::asio::async_write_at(s
, 1234, buffers
,
5736 boost::asio::transfer_at_least(42),
5737 bindns::bind(async_write_handler
,
5738 _1
, _2
, sizeof(write_data
), &called
));
5741 BOOST_ASIO_CHECK(called
);
5742 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
5745 s
.next_write_length(1);
5747 boost::asio::async_write_at(s
, 0, buffers
,
5748 boost::asio::transfer_at_least(42),
5749 bindns::bind(async_write_handler
,
5750 _1
, _2
, 42, &called
));
5753 BOOST_ASIO_CHECK(called
);
5754 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5757 s
.next_write_length(1);
5759 boost::asio::async_write_at(s
, 1234, buffers
,
5760 boost::asio::transfer_at_least(42),
5761 bindns::bind(async_write_handler
,
5762 _1
, _2
, 42, &called
));
5765 BOOST_ASIO_CHECK(called
);
5766 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5769 s
.next_write_length(10);
5771 boost::asio::async_write_at(s
, 0, buffers
,
5772 boost::asio::transfer_at_least(42),
5773 bindns::bind(async_write_handler
,
5774 _1
, _2
, 50, &called
));
5777 BOOST_ASIO_CHECK(called
);
5778 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
5781 s
.next_write_length(10);
5783 boost::asio::async_write_at(s
, 1234, buffers
,
5784 boost::asio::transfer_at_least(42),
5785 bindns::bind(async_write_handler
,
5786 _1
, _2
, 50, &called
));
5789 BOOST_ASIO_CHECK(called
);
5790 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
5794 boost::asio::async_write_at(s
, 0, buffers
,
5795 boost::asio::transfer_exactly(1),
5796 bindns::bind(async_write_handler
,
5797 _1
, _2
, 1, &called
));
5800 BOOST_ASIO_CHECK(called
);
5801 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5805 boost::asio::async_write_at(s
, 1234, buffers
,
5806 boost::asio::transfer_exactly(1),
5807 bindns::bind(async_write_handler
,
5808 _1
, _2
, 1, &called
));
5811 BOOST_ASIO_CHECK(called
);
5812 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5815 s
.next_write_length(1);
5817 boost::asio::async_write_at(s
, 0, buffers
,
5818 boost::asio::transfer_exactly(1),
5819 bindns::bind(async_write_handler
,
5820 _1
, _2
, 1, &called
));
5823 BOOST_ASIO_CHECK(called
);
5824 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5827 s
.next_write_length(1);
5829 boost::asio::async_write_at(s
, 1234, buffers
,
5830 boost::asio::transfer_exactly(1),
5831 bindns::bind(async_write_handler
,
5832 _1
, _2
, 1, &called
));
5835 BOOST_ASIO_CHECK(called
);
5836 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5839 s
.next_write_length(10);
5841 boost::asio::async_write_at(s
, 0, buffers
,
5842 boost::asio::transfer_exactly(1),
5843 bindns::bind(async_write_handler
,
5844 _1
, _2
, 1, &called
));
5847 BOOST_ASIO_CHECK(called
);
5848 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
5851 s
.next_write_length(10);
5853 boost::asio::async_write_at(s
, 1234, buffers
,
5854 boost::asio::transfer_exactly(1),
5855 bindns::bind(async_write_handler
,
5856 _1
, _2
, 1, &called
));
5859 BOOST_ASIO_CHECK(called
);
5860 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
5864 boost::asio::async_write_at(s
, 0, buffers
,
5865 boost::asio::transfer_exactly(10),
5866 bindns::bind(async_write_handler
,
5867 _1
, _2
, 10, &called
));
5870 BOOST_ASIO_CHECK(called
);
5871 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5875 boost::asio::async_write_at(s
, 1234, buffers
,
5876 boost::asio::transfer_exactly(10),
5877 bindns::bind(async_write_handler
,
5878 _1
, _2
, 10, &called
));
5881 BOOST_ASIO_CHECK(called
);
5882 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5885 s
.next_write_length(1);
5887 boost::asio::async_write_at(s
, 0, buffers
,
5888 boost::asio::transfer_exactly(10),
5889 bindns::bind(async_write_handler
,
5890 _1
, _2
, 10, &called
));
5893 BOOST_ASIO_CHECK(called
);
5894 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5897 s
.next_write_length(1);
5899 boost::asio::async_write_at(s
, 1234, buffers
,
5900 boost::asio::transfer_exactly(10),
5901 bindns::bind(async_write_handler
,
5902 _1
, _2
, 10, &called
));
5905 BOOST_ASIO_CHECK(called
);
5906 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5909 s
.next_write_length(10);
5911 boost::asio::async_write_at(s
, 0, buffers
,
5912 boost::asio::transfer_exactly(10),
5913 bindns::bind(async_write_handler
,
5914 _1
, _2
, 10, &called
));
5917 BOOST_ASIO_CHECK(called
);
5918 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
5921 s
.next_write_length(10);
5923 boost::asio::async_write_at(s
, 1234, buffers
,
5924 boost::asio::transfer_exactly(10),
5925 bindns::bind(async_write_handler
,
5926 _1
, _2
, 10, &called
));
5929 BOOST_ASIO_CHECK(called
);
5930 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
5934 boost::asio::async_write_at(s
, 0, buffers
,
5935 boost::asio::transfer_exactly(42),
5936 bindns::bind(async_write_handler
,
5937 _1
, _2
, 42, &called
));
5940 BOOST_ASIO_CHECK(called
);
5941 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5945 boost::asio::async_write_at(s
, 1234, buffers
,
5946 boost::asio::transfer_exactly(42),
5947 bindns::bind(async_write_handler
,
5948 _1
, _2
, 42, &called
));
5951 BOOST_ASIO_CHECK(called
);
5952 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5955 s
.next_write_length(1);
5957 boost::asio::async_write_at(s
, 0, buffers
,
5958 boost::asio::transfer_exactly(42),
5959 bindns::bind(async_write_handler
,
5960 _1
, _2
, 42, &called
));
5963 BOOST_ASIO_CHECK(called
);
5964 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5967 s
.next_write_length(1);
5969 boost::asio::async_write_at(s
, 1234, buffers
,
5970 boost::asio::transfer_exactly(42),
5971 bindns::bind(async_write_handler
,
5972 _1
, _2
, 42, &called
));
5975 BOOST_ASIO_CHECK(called
);
5976 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
5979 s
.next_write_length(10);
5981 boost::asio::async_write_at(s
, 0, buffers
,
5982 boost::asio::transfer_exactly(42),
5983 bindns::bind(async_write_handler
,
5984 _1
, _2
, 42, &called
));
5987 BOOST_ASIO_CHECK(called
);
5988 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
5991 s
.next_write_length(10);
5993 boost::asio::async_write_at(s
, 1234, buffers
,
5994 boost::asio::transfer_exactly(42),
5995 bindns::bind(async_write_handler
,
5996 _1
, _2
, 42, &called
));
5999 BOOST_ASIO_CHECK(called
);
6000 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6004 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6005 bindns::bind(async_write_handler
,
6006 _1
, _2
, sizeof(write_data
), &called
));
6009 BOOST_ASIO_CHECK(called
);
6010 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6014 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6015 bindns::bind(async_write_handler
,
6016 _1
, _2
, sizeof(write_data
), &called
));
6019 BOOST_ASIO_CHECK(called
);
6020 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6023 s
.next_write_length(1);
6025 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6026 bindns::bind(async_write_handler
,
6027 _1
, _2
, sizeof(write_data
), &called
));
6030 BOOST_ASIO_CHECK(called
);
6031 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6034 s
.next_write_length(1);
6036 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6037 bindns::bind(async_write_handler
,
6038 _1
, _2
, sizeof(write_data
), &called
));
6041 BOOST_ASIO_CHECK(called
);
6042 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6045 s
.next_write_length(10);
6047 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6048 bindns::bind(async_write_handler
,
6049 _1
, _2
, sizeof(write_data
), &called
));
6052 BOOST_ASIO_CHECK(called
);
6053 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6056 s
.next_write_length(10);
6058 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6059 bindns::bind(async_write_handler
,
6060 _1
, _2
, sizeof(write_data
), &called
));
6063 BOOST_ASIO_CHECK(called
);
6064 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6068 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6069 bindns::bind(async_write_handler
,
6070 _1
, _2
, sizeof(write_data
), &called
));
6073 BOOST_ASIO_CHECK(called
);
6074 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6078 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
6079 bindns::bind(async_write_handler
,
6080 _1
, _2
, sizeof(write_data
), &called
));
6083 BOOST_ASIO_CHECK(called
);
6084 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6087 s
.next_write_length(1);
6089 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6090 bindns::bind(async_write_handler
,
6091 _1
, _2
, sizeof(write_data
), &called
));
6094 BOOST_ASIO_CHECK(called
);
6095 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6098 s
.next_write_length(1);
6100 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
6101 bindns::bind(async_write_handler
,
6102 _1
, _2
, sizeof(write_data
), &called
));
6105 BOOST_ASIO_CHECK(called
);
6106 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6109 s
.next_write_length(10);
6111 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6112 bindns::bind(async_write_handler
,
6113 _1
, _2
, sizeof(write_data
), &called
));
6116 BOOST_ASIO_CHECK(called
);
6117 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6120 s
.next_write_length(10);
6122 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
6123 bindns::bind(async_write_handler
,
6124 _1
, _2
, sizeof(write_data
), &called
));
6127 BOOST_ASIO_CHECK(called
);
6128 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6131 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6132 archetypes::lazy_handler());
6133 BOOST_ASIO_CHECK(i
== 42);
6136 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6137 #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
6140 void test_5_arg_vector_buffers_async_write_at()
6142 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
6143 namespace bindns
= boost
;
6144 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
6145 namespace bindns
= std
;
6146 using std::placeholders::_1
;
6147 using std::placeholders::_2
;
6148 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
6150 boost::asio::io_context ioc
;
6151 test_random_access_device
s(ioc
);
6152 std::vector
<boost::asio::const_buffer
> buffers
;
6153 buffers
.push_back(boost::asio::buffer(write_data
, 32));
6154 buffers
.push_back(boost::asio::buffer(write_data
) + 32);
6157 bool called
= false;
6158 boost::asio::async_write_at(s
, 0, buffers
,
6159 boost::asio::transfer_all(),
6160 bindns::bind(async_write_handler
,
6161 _1
, _2
, sizeof(write_data
), &called
));
6164 BOOST_ASIO_CHECK(called
);
6165 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6169 boost::asio::async_write_at(s
, 1234, buffers
,
6170 boost::asio::transfer_all(),
6171 bindns::bind(async_write_handler
,
6172 _1
, _2
, sizeof(write_data
), &called
));
6175 BOOST_ASIO_CHECK(called
);
6176 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6179 s
.next_write_length(1);
6181 boost::asio::async_write_at(s
, 0, buffers
,
6182 boost::asio::transfer_all(),
6183 bindns::bind(async_write_handler
,
6184 _1
, _2
, sizeof(write_data
), &called
));
6187 BOOST_ASIO_CHECK(called
);
6188 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6191 s
.next_write_length(1);
6193 boost::asio::async_write_at(s
, 1234, buffers
,
6194 boost::asio::transfer_all(),
6195 bindns::bind(async_write_handler
,
6196 _1
, _2
, sizeof(write_data
), &called
));
6199 BOOST_ASIO_CHECK(called
);
6200 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6203 s
.next_write_length(10);
6205 boost::asio::async_write_at(s
, 0, buffers
,
6206 boost::asio::transfer_all(),
6207 bindns::bind(async_write_handler
,
6208 _1
, _2
, sizeof(write_data
), &called
));
6211 BOOST_ASIO_CHECK(called
);
6212 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6215 s
.next_write_length(10);
6217 boost::asio::async_write_at(s
, 1234, buffers
,
6218 boost::asio::transfer_all(),
6219 bindns::bind(async_write_handler
,
6220 _1
, _2
, sizeof(write_data
), &called
));
6223 BOOST_ASIO_CHECK(called
);
6224 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6228 boost::asio::async_write_at(s
, 0, buffers
,
6229 boost::asio::transfer_at_least(1),
6230 bindns::bind(async_write_handler
,
6231 _1
, _2
, sizeof(write_data
), &called
));
6234 BOOST_ASIO_CHECK(called
);
6235 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6239 boost::asio::async_write_at(s
, 1234, buffers
,
6240 boost::asio::transfer_at_least(1),
6241 bindns::bind(async_write_handler
,
6242 _1
, _2
, sizeof(write_data
), &called
));
6245 BOOST_ASIO_CHECK(called
);
6246 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6249 s
.next_write_length(1);
6251 boost::asio::async_write_at(s
, 0, buffers
,
6252 boost::asio::transfer_at_least(1),
6253 bindns::bind(async_write_handler
,
6254 _1
, _2
, 1, &called
));
6257 BOOST_ASIO_CHECK(called
);
6258 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6261 s
.next_write_length(1);
6263 boost::asio::async_write_at(s
, 1234, buffers
,
6264 boost::asio::transfer_at_least(1),
6265 bindns::bind(async_write_handler
,
6266 _1
, _2
, 1, &called
));
6269 BOOST_ASIO_CHECK(called
);
6270 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6273 s
.next_write_length(10);
6275 boost::asio::async_write_at(s
, 0, buffers
,
6276 boost::asio::transfer_at_least(1),
6277 bindns::bind(async_write_handler
,
6278 _1
, _2
, 10, &called
));
6281 BOOST_ASIO_CHECK(called
);
6282 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6285 s
.next_write_length(10);
6287 boost::asio::async_write_at(s
, 1234, buffers
,
6288 boost::asio::transfer_at_least(1),
6289 bindns::bind(async_write_handler
,
6290 _1
, _2
, 10, &called
));
6293 BOOST_ASIO_CHECK(called
);
6294 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6298 boost::asio::async_write_at(s
, 0, buffers
,
6299 boost::asio::transfer_at_least(10),
6300 bindns::bind(async_write_handler
,
6301 _1
, _2
, sizeof(write_data
), &called
));
6304 BOOST_ASIO_CHECK(called
);
6305 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6309 boost::asio::async_write_at(s
, 1234, buffers
,
6310 boost::asio::transfer_at_least(10),
6311 bindns::bind(async_write_handler
,
6312 _1
, _2
, sizeof(write_data
), &called
));
6315 BOOST_ASIO_CHECK(called
);
6316 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6319 s
.next_write_length(1);
6321 boost::asio::async_write_at(s
, 0, buffers
,
6322 boost::asio::transfer_at_least(10),
6323 bindns::bind(async_write_handler
,
6324 _1
, _2
, 10, &called
));
6327 BOOST_ASIO_CHECK(called
);
6328 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6331 s
.next_write_length(1);
6333 boost::asio::async_write_at(s
, 1234, buffers
,
6334 boost::asio::transfer_at_least(10),
6335 bindns::bind(async_write_handler
,
6336 _1
, _2
, 10, &called
));
6339 BOOST_ASIO_CHECK(called
);
6340 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6343 s
.next_write_length(10);
6345 boost::asio::async_write_at(s
, 0, buffers
,
6346 boost::asio::transfer_at_least(10),
6347 bindns::bind(async_write_handler
,
6348 _1
, _2
, 10, &called
));
6351 BOOST_ASIO_CHECK(called
);
6352 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6355 s
.next_write_length(10);
6357 boost::asio::async_write_at(s
, 1234, buffers
,
6358 boost::asio::transfer_at_least(10),
6359 bindns::bind(async_write_handler
,
6360 _1
, _2
, 10, &called
));
6363 BOOST_ASIO_CHECK(called
);
6364 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6368 boost::asio::async_write_at(s
, 0, buffers
,
6369 boost::asio::transfer_at_least(42),
6370 bindns::bind(async_write_handler
,
6371 _1
, _2
, sizeof(write_data
), &called
));
6374 BOOST_ASIO_CHECK(called
);
6375 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6379 boost::asio::async_write_at(s
, 1234, buffers
,
6380 boost::asio::transfer_at_least(42),
6381 bindns::bind(async_write_handler
,
6382 _1
, _2
, sizeof(write_data
), &called
));
6385 BOOST_ASIO_CHECK(called
);
6386 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6389 s
.next_write_length(1);
6391 boost::asio::async_write_at(s
, 0, buffers
,
6392 boost::asio::transfer_at_least(42),
6393 bindns::bind(async_write_handler
,
6394 _1
, _2
, 42, &called
));
6397 BOOST_ASIO_CHECK(called
);
6398 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6401 s
.next_write_length(1);
6403 boost::asio::async_write_at(s
, 1234, buffers
,
6404 boost::asio::transfer_at_least(42),
6405 bindns::bind(async_write_handler
,
6406 _1
, _2
, 42, &called
));
6409 BOOST_ASIO_CHECK(called
);
6410 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6413 s
.next_write_length(10);
6415 boost::asio::async_write_at(s
, 0, buffers
,
6416 boost::asio::transfer_at_least(42),
6417 bindns::bind(async_write_handler
,
6418 _1
, _2
, 50, &called
));
6421 BOOST_ASIO_CHECK(called
);
6422 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
6425 s
.next_write_length(10);
6427 boost::asio::async_write_at(s
, 1234, buffers
,
6428 boost::asio::transfer_at_least(42),
6429 bindns::bind(async_write_handler
,
6430 _1
, _2
, 50, &called
));
6433 BOOST_ASIO_CHECK(called
);
6434 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
6438 boost::asio::async_write_at(s
, 0, buffers
,
6439 boost::asio::transfer_exactly(1),
6440 bindns::bind(async_write_handler
,
6441 _1
, _2
, 1, &called
));
6444 BOOST_ASIO_CHECK(called
);
6445 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6449 boost::asio::async_write_at(s
, 1234, buffers
,
6450 boost::asio::transfer_exactly(1),
6451 bindns::bind(async_write_handler
,
6452 _1
, _2
, 1, &called
));
6455 BOOST_ASIO_CHECK(called
);
6456 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6459 s
.next_write_length(1);
6461 boost::asio::async_write_at(s
, 0, buffers
,
6462 boost::asio::transfer_exactly(1),
6463 bindns::bind(async_write_handler
,
6464 _1
, _2
, 1, &called
));
6467 BOOST_ASIO_CHECK(called
);
6468 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6471 s
.next_write_length(1);
6473 boost::asio::async_write_at(s
, 1234, buffers
,
6474 boost::asio::transfer_exactly(1),
6475 bindns::bind(async_write_handler
,
6476 _1
, _2
, 1, &called
));
6479 BOOST_ASIO_CHECK(called
);
6480 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6483 s
.next_write_length(10);
6485 boost::asio::async_write_at(s
, 0, buffers
,
6486 boost::asio::transfer_exactly(1),
6487 bindns::bind(async_write_handler
,
6488 _1
, _2
, 1, &called
));
6491 BOOST_ASIO_CHECK(called
);
6492 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6495 s
.next_write_length(10);
6497 boost::asio::async_write_at(s
, 1234, buffers
,
6498 boost::asio::transfer_exactly(1),
6499 bindns::bind(async_write_handler
,
6500 _1
, _2
, 1, &called
));
6503 BOOST_ASIO_CHECK(called
);
6504 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6508 boost::asio::async_write_at(s
, 0, buffers
,
6509 boost::asio::transfer_exactly(10),
6510 bindns::bind(async_write_handler
,
6511 _1
, _2
, 10, &called
));
6514 BOOST_ASIO_CHECK(called
);
6515 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6519 boost::asio::async_write_at(s
, 1234, buffers
,
6520 boost::asio::transfer_exactly(10),
6521 bindns::bind(async_write_handler
,
6522 _1
, _2
, 10, &called
));
6525 BOOST_ASIO_CHECK(called
);
6526 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6529 s
.next_write_length(1);
6531 boost::asio::async_write_at(s
, 0, buffers
,
6532 boost::asio::transfer_exactly(10),
6533 bindns::bind(async_write_handler
,
6534 _1
, _2
, 10, &called
));
6537 BOOST_ASIO_CHECK(called
);
6538 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6541 s
.next_write_length(1);
6543 boost::asio::async_write_at(s
, 1234, buffers
,
6544 boost::asio::transfer_exactly(10),
6545 bindns::bind(async_write_handler
,
6546 _1
, _2
, 10, &called
));
6549 BOOST_ASIO_CHECK(called
);
6550 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6553 s
.next_write_length(10);
6555 boost::asio::async_write_at(s
, 0, buffers
,
6556 boost::asio::transfer_exactly(10),
6557 bindns::bind(async_write_handler
,
6558 _1
, _2
, 10, &called
));
6561 BOOST_ASIO_CHECK(called
);
6562 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6565 s
.next_write_length(10);
6567 boost::asio::async_write_at(s
, 1234, buffers
,
6568 boost::asio::transfer_exactly(10),
6569 bindns::bind(async_write_handler
,
6570 _1
, _2
, 10, &called
));
6573 BOOST_ASIO_CHECK(called
);
6574 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6578 boost::asio::async_write_at(s
, 0, buffers
,
6579 boost::asio::transfer_exactly(42),
6580 bindns::bind(async_write_handler
,
6581 _1
, _2
, 42, &called
));
6584 BOOST_ASIO_CHECK(called
);
6585 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6589 boost::asio::async_write_at(s
, 1234, buffers
,
6590 boost::asio::transfer_exactly(42),
6591 bindns::bind(async_write_handler
,
6592 _1
, _2
, 42, &called
));
6595 BOOST_ASIO_CHECK(called
);
6596 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6599 s
.next_write_length(1);
6601 boost::asio::async_write_at(s
, 0, buffers
,
6602 boost::asio::transfer_exactly(42),
6603 bindns::bind(async_write_handler
,
6604 _1
, _2
, 42, &called
));
6607 BOOST_ASIO_CHECK(called
);
6608 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6611 s
.next_write_length(1);
6613 boost::asio::async_write_at(s
, 1234, buffers
,
6614 boost::asio::transfer_exactly(42),
6615 bindns::bind(async_write_handler
,
6616 _1
, _2
, 42, &called
));
6619 BOOST_ASIO_CHECK(called
);
6620 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6623 s
.next_write_length(10);
6625 boost::asio::async_write_at(s
, 0, buffers
,
6626 boost::asio::transfer_exactly(42),
6627 bindns::bind(async_write_handler
,
6628 _1
, _2
, 42, &called
));
6631 BOOST_ASIO_CHECK(called
);
6632 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
6635 s
.next_write_length(10);
6637 boost::asio::async_write_at(s
, 1234, buffers
,
6638 boost::asio::transfer_exactly(42),
6639 bindns::bind(async_write_handler
,
6640 _1
, _2
, 42, &called
));
6643 BOOST_ASIO_CHECK(called
);
6644 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
6648 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6649 bindns::bind(async_write_handler
,
6650 _1
, _2
, sizeof(write_data
), &called
));
6653 BOOST_ASIO_CHECK(called
);
6654 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6658 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6659 bindns::bind(async_write_handler
,
6660 _1
, _2
, sizeof(write_data
), &called
));
6663 BOOST_ASIO_CHECK(called
);
6664 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6667 s
.next_write_length(1);
6669 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6670 bindns::bind(async_write_handler
,
6671 _1
, _2
, sizeof(write_data
), &called
));
6674 BOOST_ASIO_CHECK(called
);
6675 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6678 s
.next_write_length(1);
6680 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6681 bindns::bind(async_write_handler
,
6682 _1
, _2
, sizeof(write_data
), &called
));
6685 BOOST_ASIO_CHECK(called
);
6686 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6689 s
.next_write_length(10);
6691 boost::asio::async_write_at(s
, 0, buffers
, old_style_transfer_all
,
6692 bindns::bind(async_write_handler
,
6693 _1
, _2
, sizeof(write_data
), &called
));
6696 BOOST_ASIO_CHECK(called
);
6697 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6700 s
.next_write_length(10);
6702 boost::asio::async_write_at(s
, 1234, buffers
, old_style_transfer_all
,
6703 bindns::bind(async_write_handler
,
6704 _1
, _2
, sizeof(write_data
), &called
));
6707 BOOST_ASIO_CHECK(called
);
6708 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6712 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6713 bindns::bind(async_write_handler
,
6714 _1
, _2
, sizeof(write_data
), &called
));
6717 BOOST_ASIO_CHECK(called
);
6718 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6722 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
6723 bindns::bind(async_write_handler
,
6724 _1
, _2
, sizeof(write_data
), &called
));
6727 BOOST_ASIO_CHECK(called
);
6728 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6731 s
.next_write_length(1);
6733 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6734 bindns::bind(async_write_handler
,
6735 _1
, _2
, sizeof(write_data
), &called
));
6738 BOOST_ASIO_CHECK(called
);
6739 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6742 s
.next_write_length(1);
6744 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
6745 bindns::bind(async_write_handler
,
6746 _1
, _2
, sizeof(write_data
), &called
));
6749 BOOST_ASIO_CHECK(called
);
6750 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6753 s
.next_write_length(10);
6755 boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6756 bindns::bind(async_write_handler
,
6757 _1
, _2
, sizeof(write_data
), &called
));
6760 BOOST_ASIO_CHECK(called
);
6761 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6764 s
.next_write_length(10);
6766 boost::asio::async_write_at(s
, 1234, buffers
, short_transfer(),
6767 bindns::bind(async_write_handler
,
6768 _1
, _2
, sizeof(write_data
), &called
));
6771 BOOST_ASIO_CHECK(called
);
6772 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6775 int i
= boost::asio::async_write_at(s
, 0, buffers
, short_transfer(),
6776 archetypes::lazy_handler());
6777 BOOST_ASIO_CHECK(i
== 42);
6780 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6783 void test_5_arg_streambuf_async_write_at()
6785 #if defined(BOOST_ASIO_HAS_BOOST_BIND)
6786 namespace bindns
= boost
;
6787 #else // defined(BOOST_ASIO_HAS_BOOST_BIND)
6788 namespace bindns
= std
;
6789 using std::placeholders::_1
;
6790 using std::placeholders::_2
;
6791 #endif // defined(BOOST_ASIO_HAS_BOOST_BIND)
6793 boost::asio::io_context ioc
;
6794 test_random_access_device
s(ioc
);
6795 boost::asio::streambuf sb
;
6796 boost::asio::const_buffer buffers
6797 = boost::asio::buffer(write_data
, sizeof(write_data
));
6800 sb
.consume(sb
.size());
6801 sb
.sputn(write_data
, sizeof(write_data
));
6802 bool called
= false;
6803 boost::asio::async_write_at(s
, 0, sb
,
6804 boost::asio::transfer_all(),
6805 bindns::bind(async_write_handler
,
6806 _1
, _2
, sizeof(write_data
), &called
));
6809 BOOST_ASIO_CHECK(called
);
6810 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6813 sb
.consume(sb
.size());
6814 sb
.sputn(write_data
, sizeof(write_data
));
6816 boost::asio::async_write_at(s
, 1234, sb
,
6817 boost::asio::transfer_all(),
6818 bindns::bind(async_write_handler
,
6819 _1
, _2
, sizeof(write_data
), &called
));
6822 BOOST_ASIO_CHECK(called
);
6823 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6826 sb
.consume(sb
.size());
6827 sb
.sputn(write_data
, sizeof(write_data
));
6828 s
.next_write_length(1);
6830 boost::asio::async_write_at(s
, 0, sb
,
6831 boost::asio::transfer_all(),
6832 bindns::bind(async_write_handler
,
6833 _1
, _2
, sizeof(write_data
), &called
));
6836 BOOST_ASIO_CHECK(called
);
6837 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6840 sb
.consume(sb
.size());
6841 sb
.sputn(write_data
, sizeof(write_data
));
6842 s
.next_write_length(1);
6844 boost::asio::async_write_at(s
, 1234, sb
,
6845 boost::asio::transfer_all(),
6846 bindns::bind(async_write_handler
,
6847 _1
, _2
, sizeof(write_data
), &called
));
6850 BOOST_ASIO_CHECK(called
);
6851 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6854 sb
.consume(sb
.size());
6855 sb
.sputn(write_data
, sizeof(write_data
));
6856 s
.next_write_length(10);
6858 boost::asio::async_write_at(s
, 0, sb
,
6859 boost::asio::transfer_all(),
6860 bindns::bind(async_write_handler
,
6861 _1
, _2
, sizeof(write_data
), &called
));
6864 BOOST_ASIO_CHECK(called
);
6865 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6868 sb
.consume(sb
.size());
6869 sb
.sputn(write_data
, sizeof(write_data
));
6870 s
.next_write_length(10);
6872 boost::asio::async_write_at(s
, 1234, sb
,
6873 boost::asio::transfer_all(),
6874 bindns::bind(async_write_handler
,
6875 _1
, _2
, sizeof(write_data
), &called
));
6878 BOOST_ASIO_CHECK(called
);
6879 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6882 sb
.consume(sb
.size());
6883 sb
.sputn(write_data
, sizeof(write_data
));
6885 boost::asio::async_write_at(s
, 0, sb
,
6886 boost::asio::transfer_at_least(1),
6887 bindns::bind(async_write_handler
,
6888 _1
, _2
, sizeof(write_data
), &called
));
6891 BOOST_ASIO_CHECK(called
);
6892 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6895 sb
.consume(sb
.size());
6896 sb
.sputn(write_data
, sizeof(write_data
));
6898 boost::asio::async_write_at(s
, 1234, sb
,
6899 boost::asio::transfer_at_least(1),
6900 bindns::bind(async_write_handler
,
6901 _1
, _2
, sizeof(write_data
), &called
));
6904 BOOST_ASIO_CHECK(called
);
6905 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6908 sb
.consume(sb
.size());
6909 sb
.sputn(write_data
, sizeof(write_data
));
6910 s
.next_write_length(1);
6912 boost::asio::async_write_at(s
, 0, sb
,
6913 boost::asio::transfer_at_least(1),
6914 bindns::bind(async_write_handler
,
6915 _1
, _2
, 1, &called
));
6918 BOOST_ASIO_CHECK(called
);
6919 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
6922 sb
.consume(sb
.size());
6923 sb
.sputn(write_data
, sizeof(write_data
));
6924 s
.next_write_length(1);
6926 boost::asio::async_write_at(s
, 1234, sb
,
6927 boost::asio::transfer_at_least(1),
6928 bindns::bind(async_write_handler
,
6929 _1
, _2
, 1, &called
));
6932 BOOST_ASIO_CHECK(called
);
6933 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
6936 sb
.consume(sb
.size());
6937 sb
.sputn(write_data
, sizeof(write_data
));
6938 s
.next_write_length(10);
6940 boost::asio::async_write_at(s
, 0, sb
,
6941 boost::asio::transfer_at_least(1),
6942 bindns::bind(async_write_handler
,
6943 _1
, _2
, 10, &called
));
6946 BOOST_ASIO_CHECK(called
);
6947 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
6950 sb
.consume(sb
.size());
6951 sb
.sputn(write_data
, sizeof(write_data
));
6952 s
.next_write_length(10);
6954 boost::asio::async_write_at(s
, 1234, sb
,
6955 boost::asio::transfer_at_least(1),
6956 bindns::bind(async_write_handler
,
6957 _1
, _2
, 10, &called
));
6960 BOOST_ASIO_CHECK(called
);
6961 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
6964 sb
.consume(sb
.size());
6965 sb
.sputn(write_data
, sizeof(write_data
));
6967 boost::asio::async_write_at(s
, 0, sb
,
6968 boost::asio::transfer_at_least(10),
6969 bindns::bind(async_write_handler
,
6970 _1
, _2
, sizeof(write_data
), &called
));
6973 BOOST_ASIO_CHECK(called
);
6974 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
6977 sb
.consume(sb
.size());
6978 sb
.sputn(write_data
, sizeof(write_data
));
6980 boost::asio::async_write_at(s
, 1234, sb
,
6981 boost::asio::transfer_at_least(10),
6982 bindns::bind(async_write_handler
,
6983 _1
, _2
, sizeof(write_data
), &called
));
6986 BOOST_ASIO_CHECK(called
);
6987 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
6990 sb
.consume(sb
.size());
6991 sb
.sputn(write_data
, sizeof(write_data
));
6992 s
.next_write_length(1);
6994 boost::asio::async_write_at(s
, 0, sb
,
6995 boost::asio::transfer_at_least(10),
6996 bindns::bind(async_write_handler
,
6997 _1
, _2
, 10, &called
));
7000 BOOST_ASIO_CHECK(called
);
7001 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7004 sb
.consume(sb
.size());
7005 sb
.sputn(write_data
, sizeof(write_data
));
7006 s
.next_write_length(1);
7008 boost::asio::async_write_at(s
, 1234, sb
,
7009 boost::asio::transfer_at_least(10),
7010 bindns::bind(async_write_handler
,
7011 _1
, _2
, 10, &called
));
7014 BOOST_ASIO_CHECK(called
);
7015 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7018 sb
.consume(sb
.size());
7019 sb
.sputn(write_data
, sizeof(write_data
));
7020 s
.next_write_length(10);
7022 boost::asio::async_write_at(s
, 0, sb
,
7023 boost::asio::transfer_at_least(10),
7024 bindns::bind(async_write_handler
,
7025 _1
, _2
, 10, &called
));
7028 BOOST_ASIO_CHECK(called
);
7029 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7032 sb
.consume(sb
.size());
7033 sb
.sputn(write_data
, sizeof(write_data
));
7034 s
.next_write_length(10);
7036 boost::asio::async_write_at(s
, 1234, sb
,
7037 boost::asio::transfer_at_least(10),
7038 bindns::bind(async_write_handler
,
7039 _1
, _2
, 10, &called
));
7042 BOOST_ASIO_CHECK(called
);
7043 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7046 sb
.consume(sb
.size());
7047 sb
.sputn(write_data
, sizeof(write_data
));
7049 boost::asio::async_write_at(s
, 0, sb
,
7050 boost::asio::transfer_at_least(42),
7051 bindns::bind(async_write_handler
,
7052 _1
, _2
, sizeof(write_data
), &called
));
7055 BOOST_ASIO_CHECK(called
);
7056 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7059 sb
.consume(sb
.size());
7060 sb
.sputn(write_data
, sizeof(write_data
));
7062 boost::asio::async_write_at(s
, 1234, sb
,
7063 boost::asio::transfer_at_least(42),
7064 bindns::bind(async_write_handler
,
7065 _1
, _2
, sizeof(write_data
), &called
));
7068 BOOST_ASIO_CHECK(called
);
7069 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7072 sb
.consume(sb
.size());
7073 sb
.sputn(write_data
, sizeof(write_data
));
7074 s
.next_write_length(1);
7076 boost::asio::async_write_at(s
, 0, sb
,
7077 boost::asio::transfer_at_least(42),
7078 bindns::bind(async_write_handler
,
7079 _1
, _2
, 42, &called
));
7082 BOOST_ASIO_CHECK(called
);
7083 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7086 sb
.consume(sb
.size());
7087 sb
.sputn(write_data
, sizeof(write_data
));
7088 s
.next_write_length(1);
7090 boost::asio::async_write_at(s
, 1234, sb
,
7091 boost::asio::transfer_at_least(42),
7092 bindns::bind(async_write_handler
,
7093 _1
, _2
, 42, &called
));
7096 BOOST_ASIO_CHECK(called
);
7097 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7100 sb
.consume(sb
.size());
7101 sb
.sputn(write_data
, sizeof(write_data
));
7102 s
.next_write_length(10);
7104 boost::asio::async_write_at(s
, 0, sb
,
7105 boost::asio::transfer_at_least(42),
7106 bindns::bind(async_write_handler
,
7107 _1
, _2
, 50, &called
));
7110 BOOST_ASIO_CHECK(called
);
7111 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 50));
7114 sb
.consume(sb
.size());
7115 sb
.sputn(write_data
, sizeof(write_data
));
7116 s
.next_write_length(10);
7118 boost::asio::async_write_at(s
, 1234, sb
,
7119 boost::asio::transfer_at_least(42),
7120 bindns::bind(async_write_handler
,
7121 _1
, _2
, 50, &called
));
7124 BOOST_ASIO_CHECK(called
);
7125 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 50));
7128 sb
.consume(sb
.size());
7129 sb
.sputn(write_data
, sizeof(write_data
));
7131 boost::asio::async_write_at(s
, 0, sb
,
7132 boost::asio::transfer_exactly(1),
7133 bindns::bind(async_write_handler
,
7134 _1
, _2
, 1, &called
));
7137 BOOST_ASIO_CHECK(called
);
7138 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
7141 sb
.consume(sb
.size());
7142 sb
.sputn(write_data
, sizeof(write_data
));
7144 boost::asio::async_write_at(s
, 1234, sb
,
7145 boost::asio::transfer_exactly(1),
7146 bindns::bind(async_write_handler
,
7147 _1
, _2
, 1, &called
));
7150 BOOST_ASIO_CHECK(called
);
7151 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
7154 sb
.consume(sb
.size());
7155 sb
.sputn(write_data
, sizeof(write_data
));
7156 s
.next_write_length(1);
7158 boost::asio::async_write_at(s
, 0, sb
,
7159 boost::asio::transfer_exactly(1),
7160 bindns::bind(async_write_handler
,
7161 _1
, _2
, 1, &called
));
7164 BOOST_ASIO_CHECK(called
);
7165 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
7168 sb
.consume(sb
.size());
7169 sb
.sputn(write_data
, sizeof(write_data
));
7170 s
.next_write_length(1);
7172 boost::asio::async_write_at(s
, 1234, sb
,
7173 boost::asio::transfer_exactly(1),
7174 bindns::bind(async_write_handler
,
7175 _1
, _2
, 1, &called
));
7178 BOOST_ASIO_CHECK(called
);
7179 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
7182 sb
.consume(sb
.size());
7183 sb
.sputn(write_data
, sizeof(write_data
));
7184 s
.next_write_length(10);
7186 boost::asio::async_write_at(s
, 0, sb
,
7187 boost::asio::transfer_exactly(1),
7188 bindns::bind(async_write_handler
,
7189 _1
, _2
, 1, &called
));
7192 BOOST_ASIO_CHECK(called
);
7193 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 1));
7196 sb
.consume(sb
.size());
7197 sb
.sputn(write_data
, sizeof(write_data
));
7198 s
.next_write_length(10);
7200 boost::asio::async_write_at(s
, 1234, sb
,
7201 boost::asio::transfer_exactly(1),
7202 bindns::bind(async_write_handler
,
7203 _1
, _2
, 1, &called
));
7206 BOOST_ASIO_CHECK(called
);
7207 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 1));
7210 sb
.consume(sb
.size());
7211 sb
.sputn(write_data
, sizeof(write_data
));
7213 boost::asio::async_write_at(s
, 0, sb
,
7214 boost::asio::transfer_exactly(10),
7215 bindns::bind(async_write_handler
,
7216 _1
, _2
, 10, &called
));
7219 BOOST_ASIO_CHECK(called
);
7220 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7223 sb
.consume(sb
.size());
7224 sb
.sputn(write_data
, sizeof(write_data
));
7226 boost::asio::async_write_at(s
, 1234, sb
,
7227 boost::asio::transfer_exactly(10),
7228 bindns::bind(async_write_handler
,
7229 _1
, _2
, 10, &called
));
7232 BOOST_ASIO_CHECK(called
);
7233 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7236 sb
.consume(sb
.size());
7237 sb
.sputn(write_data
, sizeof(write_data
));
7238 s
.next_write_length(1);
7240 boost::asio::async_write_at(s
, 0, sb
,
7241 boost::asio::transfer_exactly(10),
7242 bindns::bind(async_write_handler
,
7243 _1
, _2
, 10, &called
));
7246 BOOST_ASIO_CHECK(called
);
7247 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7250 sb
.consume(sb
.size());
7251 sb
.sputn(write_data
, sizeof(write_data
));
7252 s
.next_write_length(1);
7254 boost::asio::async_write_at(s
, 1234, sb
,
7255 boost::asio::transfer_exactly(10),
7256 bindns::bind(async_write_handler
,
7257 _1
, _2
, 10, &called
));
7260 BOOST_ASIO_CHECK(called
);
7261 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7264 sb
.consume(sb
.size());
7265 sb
.sputn(write_data
, sizeof(write_data
));
7266 s
.next_write_length(10);
7268 boost::asio::async_write_at(s
, 0, sb
,
7269 boost::asio::transfer_exactly(10),
7270 bindns::bind(async_write_handler
,
7271 _1
, _2
, 10, &called
));
7274 BOOST_ASIO_CHECK(called
);
7275 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 10));
7278 sb
.consume(sb
.size());
7279 sb
.sputn(write_data
, sizeof(write_data
));
7280 s
.next_write_length(10);
7282 boost::asio::async_write_at(s
, 1234, sb
,
7283 boost::asio::transfer_exactly(10),
7284 bindns::bind(async_write_handler
,
7285 _1
, _2
, 10, &called
));
7288 BOOST_ASIO_CHECK(called
);
7289 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 10));
7292 sb
.consume(sb
.size());
7293 sb
.sputn(write_data
, sizeof(write_data
));
7295 boost::asio::async_write_at(s
, 0, sb
,
7296 boost::asio::transfer_exactly(42),
7297 bindns::bind(async_write_handler
,
7298 _1
, _2
, 42, &called
));
7301 BOOST_ASIO_CHECK(called
);
7302 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7305 sb
.consume(sb
.size());
7306 sb
.sputn(write_data
, sizeof(write_data
));
7308 boost::asio::async_write_at(s
, 1234, sb
,
7309 boost::asio::transfer_exactly(42),
7310 bindns::bind(async_write_handler
,
7311 _1
, _2
, 42, &called
));
7314 BOOST_ASIO_CHECK(called
);
7315 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7318 sb
.consume(sb
.size());
7319 sb
.sputn(write_data
, sizeof(write_data
));
7320 s
.next_write_length(1);
7322 boost::asio::async_write_at(s
, 0, sb
,
7323 boost::asio::transfer_exactly(42),
7324 bindns::bind(async_write_handler
,
7325 _1
, _2
, 42, &called
));
7328 BOOST_ASIO_CHECK(called
);
7329 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7332 sb
.consume(sb
.size());
7333 sb
.sputn(write_data
, sizeof(write_data
));
7334 s
.next_write_length(1);
7336 boost::asio::async_write_at(s
, 1234, sb
,
7337 boost::asio::transfer_exactly(42),
7338 bindns::bind(async_write_handler
,
7339 _1
, _2
, 42, &called
));
7342 BOOST_ASIO_CHECK(called
);
7343 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7346 sb
.consume(sb
.size());
7347 sb
.sputn(write_data
, sizeof(write_data
));
7348 s
.next_write_length(10);
7350 boost::asio::async_write_at(s
, 0, sb
,
7351 boost::asio::transfer_exactly(42),
7352 bindns::bind(async_write_handler
,
7353 _1
, _2
, 42, &called
));
7356 BOOST_ASIO_CHECK(called
);
7357 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, 42));
7360 sb
.consume(sb
.size());
7361 sb
.sputn(write_data
, sizeof(write_data
));
7362 s
.next_write_length(10);
7364 boost::asio::async_write_at(s
, 1234, sb
,
7365 boost::asio::transfer_exactly(42),
7366 bindns::bind(async_write_handler
,
7367 _1
, _2
, 42, &called
));
7370 BOOST_ASIO_CHECK(called
);
7371 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, 42));
7374 sb
.consume(sb
.size());
7375 sb
.sputn(write_data
, sizeof(write_data
));
7377 boost::asio::async_write_at(s
, 0, sb
, old_style_transfer_all
,
7378 bindns::bind(async_write_handler
,
7379 _1
, _2
, sizeof(write_data
), &called
));
7382 BOOST_ASIO_CHECK(called
);
7383 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7386 sb
.consume(sb
.size());
7387 sb
.sputn(write_data
, sizeof(write_data
));
7389 boost::asio::async_write_at(s
, 1234, sb
, old_style_transfer_all
,
7390 bindns::bind(async_write_handler
,
7391 _1
, _2
, sizeof(write_data
), &called
));
7394 BOOST_ASIO_CHECK(called
);
7395 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7398 sb
.consume(sb
.size());
7399 sb
.sputn(write_data
, sizeof(write_data
));
7400 s
.next_write_length(1);
7402 boost::asio::async_write_at(s
, 0, sb
, old_style_transfer_all
,
7403 bindns::bind(async_write_handler
,
7404 _1
, _2
, sizeof(write_data
), &called
));
7407 BOOST_ASIO_CHECK(called
);
7408 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7411 sb
.consume(sb
.size());
7412 sb
.sputn(write_data
, sizeof(write_data
));
7413 s
.next_write_length(1);
7415 boost::asio::async_write_at(s
, 1234, sb
, old_style_transfer_all
,
7416 bindns::bind(async_write_handler
,
7417 _1
, _2
, sizeof(write_data
), &called
));
7420 BOOST_ASIO_CHECK(called
);
7421 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7424 sb
.consume(sb
.size());
7425 sb
.sputn(write_data
, sizeof(write_data
));
7426 s
.next_write_length(10);
7428 boost::asio::async_write_at(s
, 0, sb
, old_style_transfer_all
,
7429 bindns::bind(async_write_handler
,
7430 _1
, _2
, sizeof(write_data
), &called
));
7433 BOOST_ASIO_CHECK(called
);
7434 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7437 sb
.consume(sb
.size());
7438 sb
.sputn(write_data
, sizeof(write_data
));
7439 s
.next_write_length(10);
7441 boost::asio::async_write_at(s
, 1234, sb
, old_style_transfer_all
,
7442 bindns::bind(async_write_handler
,
7443 _1
, _2
, sizeof(write_data
), &called
));
7446 BOOST_ASIO_CHECK(called
);
7447 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7450 sb
.consume(sb
.size());
7451 sb
.sputn(write_data
, sizeof(write_data
));
7453 boost::asio::async_write_at(s
, 0, sb
, short_transfer(),
7454 bindns::bind(async_write_handler
,
7455 _1
, _2
, sizeof(write_data
), &called
));
7458 BOOST_ASIO_CHECK(called
);
7459 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7462 sb
.consume(sb
.size());
7463 sb
.sputn(write_data
, sizeof(write_data
));
7465 boost::asio::async_write_at(s
, 1234, sb
, short_transfer(),
7466 bindns::bind(async_write_handler
,
7467 _1
, _2
, sizeof(write_data
), &called
));
7470 BOOST_ASIO_CHECK(called
);
7471 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7474 sb
.consume(sb
.size());
7475 sb
.sputn(write_data
, sizeof(write_data
));
7476 s
.next_write_length(1);
7478 boost::asio::async_write_at(s
, 0, sb
, short_transfer(),
7479 bindns::bind(async_write_handler
,
7480 _1
, _2
, sizeof(write_data
), &called
));
7483 BOOST_ASIO_CHECK(called
);
7484 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7487 sb
.consume(sb
.size());
7488 sb
.sputn(write_data
, sizeof(write_data
));
7489 s
.next_write_length(1);
7491 boost::asio::async_write_at(s
, 1234, sb
, short_transfer(),
7492 bindns::bind(async_write_handler
,
7493 _1
, _2
, sizeof(write_data
), &called
));
7496 BOOST_ASIO_CHECK(called
);
7497 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7500 sb
.consume(sb
.size());
7501 sb
.sputn(write_data
, sizeof(write_data
));
7502 s
.next_write_length(10);
7504 boost::asio::async_write_at(s
, 0, sb
, short_transfer(),
7505 bindns::bind(async_write_handler
,
7506 _1
, _2
, sizeof(write_data
), &called
));
7509 BOOST_ASIO_CHECK(called
);
7510 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7513 sb
.consume(sb
.size());
7514 sb
.sputn(write_data
, sizeof(write_data
));
7515 s
.next_write_length(10);
7517 boost::asio::async_write_at(s
, 1234, sb
, short_transfer(),
7518 bindns::bind(async_write_handler
,
7519 _1
, _2
, sizeof(write_data
), &called
));
7522 BOOST_ASIO_CHECK(called
);
7523 BOOST_ASIO_CHECK(s
.check_buffers(1234, buffers
, sizeof(write_data
)));
7526 sb
.consume(sb
.size());
7527 sb
.sputn(write_data
, sizeof(write_data
));
7528 int i
= boost::asio::async_write_at(s
, 0, sb
, short_transfer(),
7529 archetypes::lazy_handler());
7530 BOOST_ASIO_CHECK(i
== 42);
7533 BOOST_ASIO_CHECK(s
.check_buffers(0, buffers
, sizeof(write_data
)));
7536 BOOST_ASIO_TEST_SUITE
7539 BOOST_ASIO_TEST_CASE(test_3_arg_const_buffer_write_at
)
7540 BOOST_ASIO_TEST_CASE(test_3_arg_mutable_buffer_write_at
)
7541 BOOST_ASIO_TEST_CASE(test_3_arg_vector_buffers_write_at
)
7542 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_const_buffer_write_at
)
7543 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_mutable_buffer_write_at
)
7544 BOOST_ASIO_TEST_CASE(test_4_arg_nothrow_vector_buffers_write_at
)
7545 BOOST_ASIO_TEST_CASE(test_4_arg_const_buffer_write_at
)
7546 BOOST_ASIO_TEST_CASE(test_4_arg_mutable_buffer_write_at
)
7547 BOOST_ASIO_TEST_CASE(test_4_arg_vector_buffers_write_at
)
7548 BOOST_ASIO_TEST_CASE(test_5_arg_const_buffer_write_at
)
7549 BOOST_ASIO_TEST_CASE(test_5_arg_mutable_buffer_write_at
)
7550 BOOST_ASIO_TEST_CASE(test_5_arg_vector_buffers_write_at
)
7551 BOOST_ASIO_TEST_CASE(test_4_arg_const_buffer_async_write_at
)
7552 BOOST_ASIO_TEST_CASE(test_4_arg_mutable_buffer_async_write_at
)
7553 BOOST_ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_write_at
)
7554 BOOST_ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_write_at
)
7555 BOOST_ASIO_TEST_CASE(test_4_arg_vector_buffers_async_write_at
)
7556 BOOST_ASIO_TEST_CASE(test_4_arg_streambuf_async_write_at
)
7557 BOOST_ASIO_TEST_CASE(test_5_arg_const_buffer_async_write_at
)
7558 BOOST_ASIO_TEST_CASE(test_5_arg_mutable_buffer_async_write_at
)
7559 BOOST_ASIO_TEST_CASE(test_5_arg_boost_array_buffers_async_write_at
)
7560 BOOST_ASIO_TEST_CASE(test_5_arg_std_array_buffers_async_write_at
)
7561 BOOST_ASIO_TEST_CASE(test_5_arg_vector_buffers_async_write_at
)
7562 BOOST_ASIO_TEST_CASE(test_5_arg_streambuf_async_write_at
)