Clementine
read_until.hpp
1 //
2 // read_until.hpp
3 // ~~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6 //
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)
9 //
10 
11 #ifndef ASIO_READ_UNTIL_HPP
12 #define ASIO_READ_UNTIL_HPP
13 
14 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15 # pragma once
16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17 
18 #include "asio/detail/config.hpp"
19 #include <cstddef>
20 #include <string>
21 #include "asio/async_result.hpp"
22 #include "asio/buffer.hpp"
23 #include "asio/detail/regex_fwd.hpp"
24 #include "asio/detail/string_view.hpp"
25 #include "asio/detail/type_traits.hpp"
26 #include "asio/error.hpp"
27 
28 #if !defined(ASIO_NO_EXTENSIONS)
29 # include "asio/basic_streambuf_fwd.hpp"
30 #endif // !defined(ASIO_NO_EXTENSIONS)
31 
32 #include "asio/detail/push_options.hpp"
33 
34 namespace asio {
35 
36 namespace detail
37 {
38  char (&has_result_type_helper(...))[2];
39 
40  template <typename T>
41  char has_result_type_helper(T*, typename T::result_type* = 0);
42 
43  template <typename T>
45  {
46  enum { value = (sizeof((has_result_type_helper)((T*)(0))) == 1) };
47  };
48 } // namespace detail
49 
52 template <typename T>
54 {
55 #if defined(GENERATING_DOCUMENTATION)
56  static const bool value;
58 #else
59  enum
60  {
61  value = asio::is_function<
62  typename asio::remove_pointer<T>::type>::value
64  };
65 #endif
66 };
67 
77 
78 #if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
79 
82 
133 template <typename SyncReadStream, typename DynamicBuffer_v1>
134 std::size_t read_until(SyncReadStream& s,
135  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
136  typename enable_if<
137  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
138  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
139  >::type* = 0);
140 
143 
175 template <typename SyncReadStream, typename DynamicBuffer_v1>
176 std::size_t read_until(SyncReadStream& s,
177  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
178  char delim, asio::error_code& ec,
179  typename enable_if<
180  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
181  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
182  >::type* = 0);
183 
186 
235 template <typename SyncReadStream, typename DynamicBuffer_v1>
236 std::size_t read_until(SyncReadStream& s,
237  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
238  ASIO_STRING_VIEW_PARAM delim,
239  typename enable_if<
240  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
241  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
242  >::type* = 0);
243 
246 
278 template <typename SyncReadStream, typename DynamicBuffer_v1>
279 std::size_t read_until(SyncReadStream& s,
280  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
281  ASIO_STRING_VIEW_PARAM delim,
282  asio::error_code& ec,
283  typename enable_if<
284  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
285  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
286  >::type* = 0);
287 
288 #if !defined(ASIO_NO_EXTENSIONS)
289 #if defined(ASIO_HAS_BOOST_REGEX) \
290  || defined(GENERATING_DOCUMENTATION)
291 
294 
346 template <typename SyncReadStream, typename DynamicBuffer_v1>
347 std::size_t read_until(SyncReadStream& s,
348  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
349  const boost::regex& expr,
350  typename enable_if<
351  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
352  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
353  >::type* = 0);
354 
357 
391 template <typename SyncReadStream, typename DynamicBuffer_v1>
392 std::size_t read_until(SyncReadStream& s,
393  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
394  const boost::regex& expr, asio::error_code& ec,
395  typename enable_if<
396  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
397  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
398  >::type* = 0);
399 
400 #endif // defined(ASIO_HAS_BOOST_REGEX)
401  // || defined(GENERATING_DOCUMENTATION)
402 
405 
505 template <typename SyncReadStream,
506  typename DynamicBuffer_v1, typename MatchCondition>
507 std::size_t read_until(SyncReadStream& s,
508  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
509  MatchCondition match_condition,
510  typename enable_if<
512  && is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
513  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
514  >::type* = 0);
515 
518 
569 template <typename SyncReadStream,
570  typename DynamicBuffer_v1, typename MatchCondition>
571 std::size_t read_until(SyncReadStream& s,
572  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
573  MatchCondition match_condition, asio::error_code& ec,
574  typename enable_if<
576  && is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
577  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
578  >::type* = 0);
579 
580 #if !defined(ASIO_NO_IOSTREAM)
581 
583 
630 template <typename SyncReadStream, typename Allocator>
631 std::size_t read_until(SyncReadStream& s,
632  asio::basic_streambuf<Allocator>& b, char delim);
633 
635 
664 template <typename SyncReadStream, typename Allocator>
665 std::size_t read_until(SyncReadStream& s,
666  asio::basic_streambuf<Allocator>& b, char delim,
667  asio::error_code& ec);
668 
670 
717 template <typename SyncReadStream, typename Allocator>
718 std::size_t read_until(SyncReadStream& s,
720  ASIO_STRING_VIEW_PARAM delim);
721 
723 
752 template <typename SyncReadStream, typename Allocator>
753 std::size_t read_until(SyncReadStream& s,
755  ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec);
756 
757 #if defined(ASIO_HAS_BOOST_REGEX) \
758  || defined(GENERATING_DOCUMENTATION)
759 
762 
810 template <typename SyncReadStream, typename Allocator>
811 std::size_t read_until(SyncReadStream& s,
812  asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
813 
816 
847 template <typename SyncReadStream, typename Allocator>
848 std::size_t read_until(SyncReadStream& s,
849  asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
850  asio::error_code& ec);
851 
852 #endif // defined(ASIO_HAS_BOOST_REGEX)
853  // || defined(GENERATING_DOCUMENTATION)
854 
856 
955 template <typename SyncReadStream, typename Allocator, typename MatchCondition>
956 std::size_t read_until(SyncReadStream& s,
957  asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
959 
961 
1011 template <typename SyncReadStream, typename Allocator, typename MatchCondition>
1012 std::size_t read_until(SyncReadStream& s,
1014  MatchCondition match_condition, asio::error_code& ec,
1016 
1017 #endif // !defined(ASIO_NO_IOSTREAM)
1018 #endif // !defined(ASIO_NO_EXTENSIONS)
1019 #endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
1020 
1023 
1074 template <typename SyncReadStream, typename DynamicBuffer_v2>
1075 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
1076  typename enable_if<
1078  >::type* = 0);
1079 
1082 
1114 template <typename SyncReadStream, typename DynamicBuffer_v2>
1115 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1116  char delim, asio::error_code& ec,
1117  typename enable_if<
1119  >::type* = 0);
1120 
1123 
1172 template <typename SyncReadStream, typename DynamicBuffer_v2>
1173 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1174  ASIO_STRING_VIEW_PARAM delim,
1175  typename enable_if<
1177  >::type* = 0);
1178 
1181 
1213 template <typename SyncReadStream, typename DynamicBuffer_v2>
1214 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1215  ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec,
1216  typename enable_if<
1218  >::type* = 0);
1219 
1220 #if !defined(ASIO_NO_EXTENSIONS)
1221 #if defined(ASIO_HAS_BOOST_REGEX) \
1222  || defined(GENERATING_DOCUMENTATION)
1223 
1226 
1278 template <typename SyncReadStream, typename DynamicBuffer_v2>
1279 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1280  const boost::regex& expr,
1281  typename enable_if<
1283  >::type* = 0);
1284 
1287 
1321 template <typename SyncReadStream, typename DynamicBuffer_v2>
1322 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1323  const boost::regex& expr, asio::error_code& ec,
1324  typename enable_if<
1326  >::type* = 0);
1327 
1328 #endif // defined(ASIO_HAS_BOOST_REGEX)
1329  // || defined(GENERATING_DOCUMENTATION)
1330 
1333 
1433 template <typename SyncReadStream,
1434  typename DynamicBuffer_v2, typename MatchCondition>
1435 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1436  MatchCondition match_condition,
1437  typename enable_if<
1440  >::type* = 0);
1441 
1444 
1495 template <typename SyncReadStream,
1496  typename DynamicBuffer_v2, typename MatchCondition>
1497 std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1498  MatchCondition match_condition, asio::error_code& ec,
1499  typename enable_if<
1502  >::type* = 0);
1503 
1504 #endif // !defined(ASIO_NO_EXTENSIONS)
1505 
1516 
1517 #if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
1518 
1521 
1601 template <typename AsyncReadStream, typename DynamicBuffer_v1,
1602  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1603  std::size_t)) ReadHandler
1604  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1605  typename AsyncReadStream::executor_type)>
1606 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1607  void (asio::error_code, std::size_t))
1608 async_read_until(AsyncReadStream& s,
1609  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
1610  ASIO_MOVE_ARG(ReadHandler) handler
1611  ASIO_DEFAULT_COMPLETION_TOKEN(
1612  typename AsyncReadStream::executor_type),
1613  typename enable_if<
1614  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1615  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1616  >::type* = 0);
1617 
1620 
1700 template <typename AsyncReadStream, typename DynamicBuffer_v1,
1701  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1702  std::size_t)) ReadHandler
1703  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1704  typename AsyncReadStream::executor_type)>
1705 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1706  void (asio::error_code, std::size_t))
1707 async_read_until(AsyncReadStream& s,
1708  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1709  ASIO_STRING_VIEW_PARAM delim,
1710  ASIO_MOVE_ARG(ReadHandler) handler
1711  ASIO_DEFAULT_COMPLETION_TOKEN(
1712  typename AsyncReadStream::executor_type),
1713  typename enable_if<
1714  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1715  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1716  >::type* = 0);
1717 
1718 #if !defined(ASIO_NO_EXTENSIONS)
1719 #if defined(ASIO_HAS_BOOST_REGEX) \
1720  || defined(GENERATING_DOCUMENTATION)
1721 
1724 
1807 template <typename AsyncReadStream, typename DynamicBuffer_v1,
1808  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1809  std::size_t)) ReadHandler
1810  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1811  typename AsyncReadStream::executor_type)>
1812 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1813  void (asio::error_code, std::size_t))
1814 async_read_until(AsyncReadStream& s,
1815  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1816  const boost::regex& expr,
1817  ASIO_MOVE_ARG(ReadHandler) handler
1818  ASIO_DEFAULT_COMPLETION_TOKEN(
1819  typename AsyncReadStream::executor_type),
1820  typename enable_if<
1821  is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1822  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1823  >::type* = 0);
1824 
1825 #endif // defined(ASIO_HAS_BOOST_REGEX)
1826  // || defined(GENERATING_DOCUMENTATION)
1827 
1830 
1956 template <typename AsyncReadStream,
1957  typename DynamicBuffer_v1, typename MatchCondition,
1958  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1959  std::size_t)) ReadHandler
1960  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1961  typename AsyncReadStream::executor_type)>
1962 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1963  void (asio::error_code, std::size_t))
1964 async_read_until(AsyncReadStream& s,
1965  ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1966  MatchCondition match_condition,
1967  ASIO_MOVE_ARG(ReadHandler) handler
1968  ASIO_DEFAULT_COMPLETION_TOKEN(
1969  typename AsyncReadStream::executor_type),
1970  typename enable_if<
1972  && is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1973  && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1974  >::type* = 0);
1975 
1976 #if !defined(ASIO_NO_IOSTREAM)
1977 
1980 
2056 template <typename AsyncReadStream, typename Allocator,
2057  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2058  std::size_t)) ReadHandler
2059  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2060  typename AsyncReadStream::executor_type)>
2061 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2062  void (asio::error_code, std::size_t))
2063 async_read_until(AsyncReadStream& s,
2064  asio::basic_streambuf<Allocator>& b, char delim,
2065  ASIO_MOVE_ARG(ReadHandler) handler
2066  ASIO_DEFAULT_COMPLETION_TOKEN(
2067  typename AsyncReadStream::executor_type));
2068 
2071 
2147 template <typename AsyncReadStream, typename Allocator,
2148  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2149  std::size_t)) ReadHandler
2150  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2151  typename AsyncReadStream::executor_type)>
2152 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2153  void (asio::error_code, std::size_t))
2154 async_read_until(AsyncReadStream& s,
2156  ASIO_STRING_VIEW_PARAM delim,
2157  ASIO_MOVE_ARG(ReadHandler) handler
2158  ASIO_DEFAULT_COMPLETION_TOKEN(
2159  typename AsyncReadStream::executor_type));
2160 
2161 #if defined(ASIO_HAS_BOOST_REGEX) \
2162  || defined(GENERATING_DOCUMENTATION)
2163 
2166 
2246 template <typename AsyncReadStream, typename Allocator,
2247  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2248  std::size_t)) ReadHandler
2249  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2250  typename AsyncReadStream::executor_type)>
2251 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2252  void (asio::error_code, std::size_t))
2253 async_read_until(AsyncReadStream& s,
2254  asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
2255  ASIO_MOVE_ARG(ReadHandler) handler
2256  ASIO_DEFAULT_COMPLETION_TOKEN(
2257  typename AsyncReadStream::executor_type));
2258 
2259 #endif // defined(ASIO_HAS_BOOST_REGEX)
2260  // || defined(GENERATING_DOCUMENTATION)
2261 
2264 
2385 template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
2386  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2387  std::size_t)) ReadHandler
2388  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2389  typename AsyncReadStream::executor_type)>
2390 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2391  void (asio::error_code, std::size_t))
2392 async_read_until(AsyncReadStream& s,
2394  MatchCondition match_condition,
2395  ASIO_MOVE_ARG(ReadHandler) handler
2396  ASIO_DEFAULT_COMPLETION_TOKEN(
2397  typename AsyncReadStream::executor_type),
2399 
2400 #endif // !defined(ASIO_NO_IOSTREAM)
2401 #endif // !defined(ASIO_NO_EXTENSIONS)
2402 #endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
2403 
2406 
2486 template <typename AsyncReadStream, typename DynamicBuffer_v2,
2487  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2488  std::size_t)) ReadHandler
2489  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2490  typename AsyncReadStream::executor_type)>
2491 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2492  void (asio::error_code, std::size_t))
2493 async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2494  ASIO_MOVE_ARG(ReadHandler) handler
2495  ASIO_DEFAULT_COMPLETION_TOKEN(
2496  typename AsyncReadStream::executor_type),
2497  typename enable_if<
2499  >::type* = 0);
2500 
2503 
2583 template <typename AsyncReadStream, typename DynamicBuffer_v2,
2584  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2585  std::size_t)) ReadHandler
2586  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2587  typename AsyncReadStream::executor_type)>
2588 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2589  void (asio::error_code, std::size_t))
2590 async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2591  ASIO_STRING_VIEW_PARAM delim,
2592  ASIO_MOVE_ARG(ReadHandler) handler
2593  ASIO_DEFAULT_COMPLETION_TOKEN(
2594  typename AsyncReadStream::executor_type),
2595  typename enable_if<
2597  >::type* = 0);
2598 
2599 #if !defined(ASIO_NO_EXTENSIONS)
2600 #if defined(ASIO_HAS_BOOST_REGEX) \
2601  || defined(GENERATING_DOCUMENTATION)
2602 
2605 
2688 template <typename AsyncReadStream, typename DynamicBuffer_v2,
2689  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2690  std::size_t)) ReadHandler
2691  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2692  typename AsyncReadStream::executor_type)>
2693 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2694  void (asio::error_code, std::size_t))
2695 async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2696  const boost::regex& expr,
2697  ASIO_MOVE_ARG(ReadHandler) handler
2698  ASIO_DEFAULT_COMPLETION_TOKEN(
2699  typename AsyncReadStream::executor_type),
2700  typename enable_if<
2702  >::type* = 0);
2703 
2704 #endif // defined(ASIO_HAS_BOOST_REGEX)
2705  // || defined(GENERATING_DOCUMENTATION)
2706 
2709 
2835 template <typename AsyncReadStream,
2836  typename DynamicBuffer_v2, typename MatchCondition,
2837  ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2838  std::size_t)) ReadHandler
2839  ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2840  typename AsyncReadStream::executor_type)>
2841 ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2842  void (asio::error_code, std::size_t))
2843 async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2844  MatchCondition match_condition,
2845  ASIO_MOVE_ARG(ReadHandler) handler
2846  ASIO_DEFAULT_COMPLETION_TOKEN(
2847  typename AsyncReadStream::executor_type),
2848  typename enable_if<
2851  >::type* = 0);
2852 
2853 #endif // !defined(ASIO_NO_EXTENSIONS)
2854 
2857 } // namespace asio
2858 
2859 #include "asio/detail/pop_options.hpp"
2860 
2861 #include "asio/impl/read_until.hpp"
2862 
2863 #endif // ASIO_READ_UNTIL_HPP
Type trait used to determine whether a type can be used as a match condition function with read_until...
Definition: read_until.hpp:53
Definition: blocking.hpp:208
Definition: chrono.h:284
Definition: type_traits.hpp:97
Definition: read_until.hpp:44
Class to represent an error code value.
Definition: error_code.hpp:80
std::size_t read_until(SyncReadStream &s, DynamicBuffer_v2 buffers, MatchCondition match_condition, asio::error_code &ec, typename enable_if< is_match_condition< MatchCondition >::value &&is_dynamic_buffer_v2< DynamicBuffer_v2 >::value >::type *)
Read data into a dynamic buffer sequence until a function object indicates a match.
Definition: read_until.hpp:715
Trait to determine whether a type satisfies the DynamicBuffer_v2 requirements.
Definition: buffer.hpp:2464
Automatically resizable buffer class based on std::streambuf.
Definition: basic_streambuf.hpp:110
char ASIO_MOVE_ARG(ReadHandler) handler ASIO_DEFAULT_COMPLETION_TOKEN(typename AsyncReadStream ASIO_STRING_VIEW_PARAM ASIO_MOVE_ARG(ReadHandler) handler ASIO_DEFAULT_COMPLETION_TOKEN(typename AsyncReadStream ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void(asio::error_code, std::size_t)) async_read_until(AsyncReadStream &s
Start an asynchronous operation to read data into a dynamic buffer sequence until a function object i...
Definition: any_io_executor.hpp:28
Trait to determine whether a type satisfies the DynamicBuffer_v1 requirements.
Definition: buffer.hpp:2451