passenger 6.0.14 → 6.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1978) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +380 -85
  3. data/CONTRIBUTING.md +2 -2
  4. data/CONTRIBUTORS +8 -0
  5. data/LICENSE +1 -1
  6. data/README.md +3 -3
  7. data/Rakefile +15 -4
  8. data/bin/passenger +2 -2
  9. data/bin/passenger-config +2 -2
  10. data/bin/passenger-install-apache2-module +7 -2
  11. data/bin/passenger-install-nginx-module +24 -8
  12. data/bin/passenger-memory-stats +2 -2
  13. data/bin/passenger-status +2 -2
  14. data/build/agent.rb +2 -4
  15. data/build/apache2.rb +3 -3
  16. data/build/basics.rb +14 -6
  17. data/build/common_library.rb +3 -8
  18. data/build/cxx_tests.rb +20 -9
  19. data/build/integration_tests.rb +10 -9
  20. data/build/misc.rb +2 -4
  21. data/build/nginx.rb +2 -2
  22. data/build/node_tests.rb +2 -2
  23. data/build/oxt_tests.rb +2 -2
  24. data/build/packaging.rb +2 -2
  25. data/build/ruby_extension.rb +2 -2
  26. data/build/ruby_tests.rb +3 -3
  27. data/build/schema_printer.rb +2 -4
  28. data/build/support/cplusplus.rb +2 -2
  29. data/build/support/cxx_dependency_map.rb +249 -311
  30. data/build/support/general.rb +2 -2
  31. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  32. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -2
  33. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +2 -2
  34. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  35. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +2 -2
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -2
  37. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +2 -2
  38. data/build/test_basics.rb +27 -13
  39. data/dev/copy_boost_headers +96 -77
  40. data/dev/index_cxx_dependencies.rb +1 -1
  41. data/dev/nginx_version_sha256 +72 -0
  42. data/doc/AiInstructions.md +112 -0
  43. data/doc/CxxMockingStrategy.md +42 -0
  44. data/doc/CxxTestingGuide.md +110 -0
  45. data/doc/DesignAspects/LimitedGemDependencies.md +47 -0
  46. data/doc/DesignAspects/NoGemActivationDuringRubyLoaderInitialization.md +27 -0
  47. data/doc/TempFileHandling.md +15 -0
  48. data/package.json +15 -15
  49. data/passenger.gemspec +8 -2
  50. data/resources/templates/apache2/deployment_example.txt.erb +1 -1
  51. data/resources/templates/nginx/deployment_example.txt.erb +1 -1
  52. data/resources/templates/standalone/http.erb +1 -0
  53. data/resources/templates/standalone/server.erb +2 -0
  54. data/src/agent/AgentMain.cpp +4 -10
  55. data/src/agent/Core/ApiServer.h +3 -4
  56. data/src/agent/Core/ApplicationPool/AbstractSession.h +12 -3
  57. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +2 -2
  58. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +2 -2
  59. data/src/agent/Core/ApplicationPool/Common.h +2 -2
  60. data/src/agent/Core/ApplicationPool/Context.h +7 -4
  61. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +10 -2
  62. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +12 -4
  63. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +10 -2
  64. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +11 -2
  65. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +11 -2
  66. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +85 -5
  67. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +66 -21
  68. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +10 -2
  69. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +11 -3
  70. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +10 -2
  71. data/src/agent/Core/ApplicationPool/Group.h +18 -8
  72. data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -5
  73. data/src/agent/Core/ApplicationPool/Options.h +3 -4
  74. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +7 -2
  75. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +7 -2
  76. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +7 -2
  77. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +7 -2
  78. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +7 -2
  79. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +7 -2
  80. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +7 -2
  81. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +17 -3
  82. data/src/agent/Core/ApplicationPool/Pool.h +2 -4
  83. data/src/agent/Core/ApplicationPool/Process.cpp +2 -2
  84. data/src/agent/Core/ApplicationPool/Process.h +24 -8
  85. data/src/agent/Core/ApplicationPool/Session.h +22 -22
  86. data/src/agent/Core/ApplicationPool/Socket.h +17 -7
  87. data/src/agent/Core/ApplicationPool/TestSession.h +76 -17
  88. data/src/agent/Core/Config.h +17 -40
  89. data/src/agent/Core/ConfigChange.cpp +3 -43
  90. data/src/agent/Core/ConfigChange.h +2 -2
  91. data/src/agent/Core/Controller/AppResponse.h +2 -3
  92. data/src/agent/Core/Controller/BufferBody.cpp +2 -2
  93. data/src/agent/Core/Controller/CheckoutSession.cpp +125 -16
  94. data/src/agent/Core/Controller/Client.h +2 -3
  95. data/src/agent/Core/Controller/Config.cpp +2 -2
  96. data/src/agent/Core/Controller/Config.h +14 -5
  97. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  98. data/src/agent/Core/Controller/Hooks.cpp +15 -2
  99. data/src/agent/Core/Controller/Implementation.cpp +2 -2
  100. data/src/agent/Core/Controller/InitRequest.cpp +4 -3
  101. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +2 -2
  102. data/src/agent/Core/Controller/InternalUtils.cpp +14 -2
  103. data/src/agent/Core/Controller/Miscellaneous.cpp +2 -2
  104. data/src/agent/Core/Controller/Request.h +5 -4
  105. data/src/agent/Core/Controller/SendRequest.cpp +4 -4
  106. data/src/agent/Core/Controller/StateInspection.cpp +2 -2
  107. data/src/agent/Core/Controller/TurboCaching.h +2 -2
  108. data/src/agent/Core/Controller.h +15 -15
  109. data/src/agent/Core/CoreMain.cpp +14 -75
  110. data/src/agent/Core/OptionParser.h +11 -9
  111. data/src/agent/Core/ResponseCache.h +5 -4
  112. data/src/agent/Core/SecurityUpdateChecker.h +7 -8
  113. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +2 -2
  114. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  115. data/src/agent/Core/SpawningKit/Config.h +2 -2
  116. data/src/agent/Core/SpawningKit/Context.h +2 -2
  117. data/src/agent/Core/SpawningKit/DirectSpawner.h +2 -2
  118. data/src/agent/Core/SpawningKit/DummySpawner.h +2 -2
  119. data/src/agent/Core/SpawningKit/ErrorRenderer.h +7 -2
  120. data/src/agent/Core/SpawningKit/Exceptions.h +2 -2
  121. data/src/agent/Core/SpawningKit/Factory.h +2 -2
  122. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
  123. data/src/agent/Core/SpawningKit/Handshake/Perform.h +6 -6
  124. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +3 -55
  125. data/src/agent/Core/SpawningKit/Handshake/Session.h +5 -2
  126. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +7 -4
  127. data/src/agent/Core/SpawningKit/Journey.h +2 -2
  128. data/src/agent/Core/SpawningKit/PipeWatcher.h +20 -5
  129. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +2 -2
  130. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  131. data/src/agent/Core/SpawningKit/Result.h +2 -2
  132. data/src/agent/Core/SpawningKit/SmartSpawner.h +8 -4
  133. data/src/agent/Core/SpawningKit/Spawner.h +6 -2
  134. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +4 -4
  135. data/src/agent/Core/TelemetryCollector.h +2 -2
  136. data/src/agent/ExecHelper/ExecHelperMain.cpp +12 -14
  137. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +9 -12
  138. data/src/{cxx_supportlib/FileTools/LargeFiles.h → agent/MainFunctions.h} +12 -17
  139. data/src/agent/Shared/ApiAccountUtils.h +2 -2
  140. data/src/agent/Shared/ApiServerUtils.h +5 -4
  141. data/src/agent/Shared/ApplicationPoolApiKey.h +2 -2
  142. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +90 -11
  143. data/src/agent/Shared/Fundamentals/AbortHandler.h +4 -2
  144. data/src/agent/Shared/Fundamentals/Initialization.cpp +12 -6
  145. data/src/agent/Shared/Fundamentals/Initialization.h +5 -5
  146. data/src/agent/Shared/Fundamentals/Utils.cpp +2 -2
  147. data/src/agent/Shared/Fundamentals/Utils.h +2 -2
  148. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -13
  149. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +3 -2
  150. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +8 -6
  151. data/src/agent/Watchdog/AgentWatcher.cpp +2 -2
  152. data/src/agent/Watchdog/ApiServer.h +3 -3
  153. data/src/agent/Watchdog/Config.h +6 -23
  154. data/src/agent/Watchdog/CoreWatcher.cpp +2 -2
  155. data/src/agent/Watchdog/InstanceDirToucher.cpp +2 -2
  156. data/src/agent/Watchdog/WatchdogMain.cpp +15 -23
  157. data/src/apache2_module/Bucket.cpp +2 -2
  158. data/src/apache2_module/Bucket.h +2 -2
  159. data/src/apache2_module/CBindings.cpp +2 -2
  160. data/src/apache2_module/Config.cpp +2 -2
  161. data/src/apache2_module/Config.h +2 -2
  162. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +12 -22
  163. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  164. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +7 -2
  165. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +2 -2
  166. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +32 -62
  167. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +2 -2
  168. data/src/apache2_module/ConfigGeneral/Common.h +2 -2
  169. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +7 -5
  170. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +2 -2
  171. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +7 -2
  172. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +2 -2
  173. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +5 -2
  174. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +2 -2
  175. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +15 -2
  176. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  177. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +9 -2
  178. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +2 -2
  179. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +18 -2
  180. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +5 -2
  181. data/src/apache2_module/DirectoryMapper.h +2 -2
  182. data/src/apache2_module/Hooks.cpp +29 -7
  183. data/src/apache2_module/Hooks.h +2 -2
  184. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -46
  185. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  186. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +15 -55
  187. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +4 -3
  188. data/src/apache2_module/Utils.h +2 -2
  189. data/src/apache2_module/mod_passenger.c +2 -2
  190. data/src/cxx_supportlib/Algorithms/Hasher.cpp +3 -3
  191. data/src/cxx_supportlib/Algorithms/Hasher.h +6 -9
  192. data/src/cxx_supportlib/Algorithms/MovingAverage.h +3 -168
  193. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +2 -2
  194. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +2 -2
  195. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +2 -2
  196. data/src/cxx_supportlib/AppTypeDetector/Detector.h +2 -2
  197. data/src/cxx_supportlib/BackgroundEventLoop.cpp +6 -2
  198. data/src/cxx_supportlib/BackgroundEventLoop.h +2 -2
  199. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +2 -2
  200. data/src/cxx_supportlib/ConfigKit/Common.h +3 -3
  201. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +2 -2
  202. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +2 -2
  203. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +2 -2
  204. data/src/cxx_supportlib/ConfigKit/Schema.h +2 -2
  205. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +2 -2
  206. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  207. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -2
  208. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +2 -2
  209. data/src/cxx_supportlib/ConfigKit/Translator.h +2 -2
  210. data/src/cxx_supportlib/ConfigKit/Utils.h +2 -2
  211. data/src/cxx_supportlib/Constants.h +4 -3
  212. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +2 -2
  213. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +2 -2
  214. data/src/cxx_supportlib/DataStructures/LString.cpp +2 -2
  215. data/src/cxx_supportlib/DataStructures/LString.h +6 -2
  216. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +3 -3
  217. data/src/cxx_supportlib/DataStructures/StringMap.h +4 -6
  218. data/src/cxx_supportlib/Exceptions.cpp +2 -2
  219. data/src/cxx_supportlib/Exceptions.h +2 -2
  220. data/src/cxx_supportlib/FileDescriptor.h +2 -2
  221. data/src/cxx_supportlib/FileTools/FileManip.cpp +2 -2
  222. data/src/cxx_supportlib/FileTools/FileManip.h +4 -2
  223. data/src/cxx_supportlib/FileTools/PathManip.cpp +13 -4
  224. data/src/cxx_supportlib/FileTools/PathManip.h +2 -2
  225. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +2 -2
  226. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +2 -2
  227. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +2 -2
  228. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +2 -2
  229. data/src/cxx_supportlib/Hooks.h +2 -3
  230. data/src/cxx_supportlib/IOTools/BufferedIO.h +2 -2
  231. data/src/cxx_supportlib/IOTools/IOUtils.cpp +53 -68
  232. data/src/cxx_supportlib/IOTools/IOUtils.h +67 -75
  233. data/src/cxx_supportlib/IOTools/MessageIO.h +2 -2
  234. data/src/cxx_supportlib/IOTools/MessageSerialization.h +2 -2
  235. data/src/cxx_supportlib/InstanceDirectory.h +2 -2
  236. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +5 -5
  237. data/src/cxx_supportlib/JsonTools/Autocast.h +2 -2
  238. data/src/cxx_supportlib/JsonTools/CBindings.cpp +2 -4
  239. data/src/cxx_supportlib/JsonTools/CBindings.h +2 -2
  240. data/src/cxx_supportlib/JsonTools/JsonUtils.h +6 -6
  241. data/src/cxx_supportlib/LoggingKit/Assert.h +2 -2
  242. data/src/cxx_supportlib/LoggingKit/Config.h +2 -2
  243. data/src/cxx_supportlib/LoggingKit/Context.h +18 -23
  244. data/src/cxx_supportlib/LoggingKit/Forward.h +2 -4
  245. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +38 -74
  246. data/src/cxx_supportlib/LoggingKit/Logging.h +2 -2
  247. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +2 -2
  248. data/src/cxx_supportlib/LveLoggingDecorator.h +2 -2
  249. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +14 -6
  250. data/src/cxx_supportlib/MemoryKit/mbuf.h +3 -3
  251. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  252. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  253. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +2 -2
  254. data/src/cxx_supportlib/ProcessManagement/Ruby.h +2 -2
  255. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +2 -2
  256. data/src/cxx_supportlib/ProcessManagement/Spawn.h +2 -2
  257. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +3 -3
  258. data/src/cxx_supportlib/ProcessManagement/Utils.h +2 -2
  259. data/src/cxx_supportlib/RandomGenerator.h +2 -2
  260. data/src/cxx_supportlib/ResourceLocator.h +3 -3
  261. data/src/cxx_supportlib/SafeLibev.h +5 -5
  262. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +5 -96
  263. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -10
  264. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +2 -2
  265. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +4 -2
  266. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  267. data/src/cxx_supportlib/ServerKit/Client.h +2 -2
  268. data/src/cxx_supportlib/ServerKit/ClientRef.h +2 -2
  269. data/src/cxx_supportlib/ServerKit/Config.h +2 -2
  270. data/src/cxx_supportlib/ServerKit/Context.h +8 -2
  271. data/src/cxx_supportlib/ServerKit/CookieUtils.h +2 -2
  272. data/src/cxx_supportlib/ServerKit/Errors.h +5 -4
  273. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +2 -2
  274. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +2 -2
  275. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +2 -2
  276. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  277. data/src/cxx_supportlib/ServerKit/HeaderTable.h +2 -2
  278. data/src/cxx_supportlib/ServerKit/Hooks.h +4 -4
  279. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +2 -2
  280. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +2 -2
  281. data/src/cxx_supportlib/ServerKit/HttpClient.h +2 -2
  282. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +105 -71
  283. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +6 -3
  284. data/src/cxx_supportlib/ServerKit/HttpRequest.h +4 -4
  285. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +2 -2
  286. data/src/cxx_supportlib/ServerKit/HttpServer.h +20 -14
  287. data/src/cxx_supportlib/ServerKit/Implementation.cpp +2 -2
  288. data/src/cxx_supportlib/ServerKit/Server.h +2 -8
  289. data/src/cxx_supportlib/ServerKit/llerrors.h +84 -0
  290. data/src/cxx_supportlib/ServerKit/llhttp.c +10168 -0
  291. data/src/cxx_supportlib/ServerKit/llhttp.h +903 -0
  292. data/src/cxx_supportlib/ServerKit/llhttp_api.c +510 -0
  293. data/src/cxx_supportlib/ServerKit/llhttp_http.c +170 -0
  294. data/src/cxx_supportlib/ServerKit/llversion.h +12 -0
  295. data/src/cxx_supportlib/ServerKit/url_parser.c +574 -0
  296. data/src/cxx_supportlib/ServerKit/url_parser.h +74 -0
  297. data/src/cxx_supportlib/StaticString.h +5 -3
  298. data/src/cxx_supportlib/StrIntTools/DateParsing.h +3 -3
  299. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +14 -5
  300. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +9 -4
  301. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +2 -2
  302. data/src/cxx_supportlib/StrIntTools/StringScanning.h +2 -2
  303. data/src/cxx_supportlib/StrIntTools/Template.h +2 -2
  304. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
  305. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +2 -2
  306. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +4 -6
  307. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +2 -2
  308. data/src/cxx_supportlib/SystemTools/SystemTime.h +2 -2
  309. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +16 -16
  310. data/src/cxx_supportlib/SystemTools/UserDatabase.h +8 -12
  311. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +13 -11
  312. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +4 -2
  313. data/src/cxx_supportlib/Utils/BlockingQueue.h +2 -2
  314. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +2 -2
  315. data/src/cxx_supportlib/Utils/CachedFileStat.h +2 -2
  316. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +2 -2
  317. data/src/cxx_supportlib/Utils/ClassUtils.h +2 -2
  318. data/src/cxx_supportlib/Utils/Curl.h +2 -2
  319. data/src/cxx_supportlib/Utils/FastStringStream.h +9 -9
  320. data/src/cxx_supportlib/Utils/FileChangeChecker.h +2 -2
  321. data/src/cxx_supportlib/Utils/HttpConstants.h +2 -2
  322. data/src/cxx_supportlib/Utils/IniFile.h +26 -27
  323. data/src/cxx_supportlib/Utils/MessagePassing.h +2 -2
  324. data/src/cxx_supportlib/Utils/OptionParsing.h +2 -2
  325. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +2 -2
  326. data/src/cxx_supportlib/Utils/ScopeGuard.h +2 -2
  327. data/src/cxx_supportlib/Utils/SpeedMeter.h +2 -5
  328. data/src/cxx_supportlib/Utils/Timer.h +2 -2
  329. data/src/cxx_supportlib/Utils/VariantMap.h +2 -2
  330. data/src/cxx_supportlib/Utils.cpp +3 -3
  331. data/src/cxx_supportlib/Utils.h +2 -32
  332. data/src/cxx_supportlib/WatchdogLauncher.cpp +2 -2
  333. data/src/cxx_supportlib/WatchdogLauncher.h +3 -5
  334. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +2 -2
  335. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +2 -2
  336. data/src/cxx_supportlib/WrapperRegistry/Entry.h +2 -2
  337. data/src/cxx_supportlib/WrapperRegistry/Registry.h +2 -2
  338. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +1 -1
  345. data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +1 -1
  346. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +5 -1
  347. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +2 -1
  348. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  349. data/src/cxx_supportlib/oxt/implementation.cpp +53 -4
  350. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  351. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  352. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  353. data/src/cxx_supportlib/oxt/system_calls.cpp +13 -5
  354. data/src/cxx_supportlib/oxt/system_calls.hpp +4 -5
  355. data/src/cxx_supportlib/oxt/thread.hpp +2 -2
  356. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  357. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +2 -2
  358. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +11 -3
  359. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +27 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +34 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +124 -26
  363. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +10 -18
  364. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +4 -5
  365. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +5 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +183 -64
  367. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +170 -68
  368. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +83 -12
  369. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +40 -11
  370. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +8 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +8 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_arm.hpp +8 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +19 -10
  374. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +19 -54
  375. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +105 -100
  376. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +107 -40
  377. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +32 -5
  378. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +12 -13
  379. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +7 -8
  380. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +26 -27
  382. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +73 -72
  383. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +122 -35
  384. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +2 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +50 -12
  386. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +4 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_ppc_asm_common.hpp +33 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +7 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +15 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +3 -3
  391. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +143 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +42 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +46 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +42 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_darwin_ulock.hpp +58 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +64 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +158 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +3 -4
  399. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +10 -5
  400. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +4 -5
  401. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +2 -60
  402. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +257 -1789
  403. data/src/cxx_supportlib/vendor-modified/boost/bind/{bind_cc.hpp → detail/bind_cc.hpp} +20 -20
  404. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf2_cc.hpp +210 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/bind_mf_cc.hpp +405 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/integer_sequence.hpp +111 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +13 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/tuple_for_each.hpp +64 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +140 -290
  410. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +3 -16
  411. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +0 -279
  412. data/src/cxx_supportlib/vendor-modified/boost/bind/std_placeholders.hpp +0 -6
  413. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +2 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  415. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/is_evenly_divisible_by.hpp +1 -7
  416. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/requires_cxx11.hpp +23 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  418. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -6
  419. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +4 -4
  421. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  422. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +3 -2
  424. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +3 -3
  425. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +2 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  427. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +3 -3
  428. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +1 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +4 -4
  433. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +7 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +4 -1
  436. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +41 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +20 -3
  440. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +89 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +5 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -1
  443. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +1 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +16 -5
  446. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +4 -2
  447. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +5 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +1 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +6 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +4 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -0
  455. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +23 -3
  456. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +13 -0
  457. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +19 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +139 -34
  460. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +6 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +45 -18
  463. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +11 -45
  464. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +42 -3
  465. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +11 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +26 -21
  467. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +30 -26
  468. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +178 -39
  469. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +12 -12
  470. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +827 -303
  471. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +57 -57
  473. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -10
  474. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +155 -179
  475. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  476. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  477. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +14 -15
  478. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
  479. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
  480. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +24 -21
  481. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +12 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +52 -16
  484. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +1 -2
  485. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +23 -13
  486. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +891 -182
  487. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +121 -66
  488. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +42 -42
  489. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +310 -231
  490. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  491. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
  492. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +16 -12
  493. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +91 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +8 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +213 -195
  496. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +10 -11
  497. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
  498. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +98 -12
  499. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +48 -12
  500. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +8 -10
  501. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +268 -120
  502. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +12 -12
  504. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +49 -122
  505. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +1 -7
  506. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  507. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
  508. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +7 -11
  509. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  510. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +265 -354
  511. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +1 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +3 -3
  513. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
  514. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +93 -11
  515. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1364 -1296
  516. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +367 -260
  517. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +112 -93
  518. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +80 -125
  519. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +136 -119
  520. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +19 -14
  521. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +27 -21
  522. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +35 -22
  523. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +158 -45
  524. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +8 -3
  525. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -4
  526. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +7 -7
  528. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -3
  529. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +3 -3
  530. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +81 -83
  531. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +93 -90
  532. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +82 -127
  533. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +229 -245
  534. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +198 -175
  535. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +131 -87
  536. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +373 -374
  537. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +6 -7
  538. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  539. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +618 -631
  540. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_integral.hpp +146 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +408 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple_like.hpp +62 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/mulx.hpp +79 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +395 -581
  546. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +25 -24
  547. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +98 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +37 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +41 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_tuple_like.hpp +36 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +38 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/core/alignof.hpp +57 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +7 -81
  554. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +448 -215
  555. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_traits.hpp +112 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +418 -45
  557. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +29 -3
  558. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +100 -1
  559. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +46 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +19 -9
  561. data/src/cxx_supportlib/vendor-modified/boost/core/detail/is_same.hpp +39 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/core/detail/lwt_unattended.hpp +66 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_pause.hpp +71 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/{smart_ptr → core}/detail/sp_thread_sleep.hpp +39 -21
  566. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_yield.hpp +100 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +3 -3
  568. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1272 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +78 -21
  570. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +53 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/core/functor.hpp +41 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/core/identity.hpp +61 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/core/invoke_swap.hpp +93 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +10 -15
  575. data/src/cxx_supportlib/vendor-modified/boost/core/launder.hpp +69 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +41 -37
  577. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +8 -54
  578. data/src/cxx_supportlib/vendor-modified/boost/core/make_span.hpp +59 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/core/max_align.hpp +82 -0
  580. data/src/cxx_supportlib/vendor-modified/boost/core/memory_resource.hpp +108 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +3 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +7 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +111 -60
  586. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  587. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +23 -16
  588. data/src/cxx_supportlib/vendor-modified/boost/core/serialization.hpp +131 -0
  589. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +31 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/core/snprintf.hpp +173 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +401 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +10 -40
  593. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +1186 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/core/verbose_terminate_handler.hpp +88 -0
  595. data/src/cxx_supportlib/vendor-modified/boost/core/yield_primitives.hpp +12 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  597. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  598. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  599. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  600. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  601. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +3 -3
  602. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  603. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  604. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +1 -1
  605. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  607. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  608. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  609. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  610. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  611. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  612. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  613. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  614. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +161 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  617. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -7
  618. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +24 -126
  619. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +3 -3
  620. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +1 -1
  621. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +1 -1
  622. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +1 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +58 -30
  624. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +1 -1
  625. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +1 -1
  626. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +24 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +1 -1
  628. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +4 -4
  629. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +85 -3
  630. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +1 -1
  631. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +2 -2
  632. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +2 -2
  633. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +1 -1
  634. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +1 -3
  635. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +1 -3
  636. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +1 -3
  637. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +1 -3
  638. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +1 -3
  639. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +1 -3
  640. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +1 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +1 -3
  642. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +1 -3
  643. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +1 -3
  644. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +1 -3
  645. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +71 -223
  646. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +36 -41
  647. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +428 -452
  648. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +1 -31
  649. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +5 -61
  650. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +6 -10
  651. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +2 -2
  652. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +85 -80
  653. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +32 -25
  654. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +16 -13
  655. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +45 -45
  656. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +32 -25
  657. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +104 -97
  658. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +87 -90
  659. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +29 -20
  660. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +77 -8
  661. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +2 -2
  662. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  663. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +30 -30
  664. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +8 -7
  665. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +14 -14
  666. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +38 -39
  667. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +84 -15
  668. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +3 -3
  669. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +24 -24
  670. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +1 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +1 -1
  672. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +1 -32
  673. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +1 -1
  674. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +14 -15
  675. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +277 -0
  676. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_combine.hpp +11 -49
  677. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_integral.hpp +119 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash_mix.hpp +130 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +195 -115
  680. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +22 -26
  681. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +6 -6
  682. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +121 -75
  683. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +7 -7
  684. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +20 -20
  685. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +4 -4
  686. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +3 -3
  687. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +7 -1
  688. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  689. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  690. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +7 -17
  691. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +18 -18
  692. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +3 -140
  693. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +14 -14
  695. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +26 -19
  696. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +2 -2
  697. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +22 -22
  698. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +21 -21
  699. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +6 -6
  700. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +28 -28
  701. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +10 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +70 -3
  703. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1722 -995
  704. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +2 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +84 -11
  706. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +68 -63
  707. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +2 -2
  708. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +17 -3
  709. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +15 -11
  710. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +12 -4
  711. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +11 -4
  712. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +16 -13
  713. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +38 -38
  714. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +32 -25
  715. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +32 -25
  716. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +18 -15
  717. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +22 -22
  718. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +80 -79
  719. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +32 -25
  720. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +16 -13
  721. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +38 -36
  722. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +22 -19
  723. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +25 -21
  724. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +44 -37
  725. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +2 -2
  726. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +64 -54
  727. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +11 -11
  728. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +2 -2
  729. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +11 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +6 -6
  731. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -1
  732. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +5 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +10 -11
  734. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +148 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +2 -2
  736. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  737. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +8 -4
  738. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +7 -13
  739. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +59 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +113 -131
  741. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +618 -646
  742. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +83 -74
  743. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +26 -33
  744. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +22 -29
  745. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +73 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +23 -18
  748. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +7 -9
  749. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +22 -161
  750. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +9 -12
  751. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +4 -2
  752. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +3 -1
  753. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +3 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
  755. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +10 -18
  756. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +13 -14
  757. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +24 -14
  758. data/src/cxx_supportlib/vendor-modified/boost/limits.hpp +12 -12
  759. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +7 -5
  760. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +48 -33
  761. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +92 -75
  762. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +216 -185
  763. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +11 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +22 -11
  765. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +9 -0
  766. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +125 -165
  767. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +24 -15
  768. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +16 -5
  769. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/search.hpp +79 -0
  770. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +8 -2
  771. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +8 -5
  772. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +11 -11
  773. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +0 -1
  774. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +22 -1
  775. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +5 -6
  776. data/src/cxx_supportlib/vendor-modified/boost/move/detail/addressof.hpp +61 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
  778. data/src/cxx_supportlib/vendor-modified/boost/move/detail/force_ptr.hpp +36 -0
  779. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  780. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +108 -9
  781. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +9 -52
  783. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +15 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  785. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +70 -26
  786. data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +2 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +40 -33
  788. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +7 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +5 -0
  790. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +1 -1
  791. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +90 -30
  792. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +90 -3
  793. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +22 -22
  794. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +10 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +65 -66
  796. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +2 -2
  797. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +38 -33
  798. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +1386 -0
  799. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +120 -0
  800. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +149 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +321 -0
  802. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +48 -0
  803. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +147 -0
  804. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_defer.hpp +119 -0
  805. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +166 -0
  806. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +50 -0
  807. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_list.hpp +39 -0
  808. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_value_list.hpp +41 -0
  809. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list.hpp +24 -0
  810. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list_v.hpp +27 -0
  811. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +87 -0
  812. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_min_element.hpp +51 -0
  813. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +84 -0
  814. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +48 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +54 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_value.hpp +25 -0
  817. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_void.hpp +32 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_with_index.hpp +385 -0
  819. data/src/cxx_supportlib/vendor-modified/boost/mp11/function.hpp +222 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +121 -0
  821. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +51 -0
  822. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +481 -0
  823. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +188 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +169 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +16 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +6 -6
  828. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
  829. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +1 -1
  830. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +1 -1
  831. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +2 -1
  832. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +1 -1
  833. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +1 -1
  834. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +1 -1
  835. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +3 -44
  836. data/src/cxx_supportlib/vendor-modified/boost/nondet_random.hpp +22 -0
  837. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
  838. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +15 -1
  839. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  840. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  841. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  842. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +4 -49
  843. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +3 -4
  844. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +16 -7
  845. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +49 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +49 -48
  847. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +11 -11
  848. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +9 -9
  849. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +31 -260
  850. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +41 -0
  851. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +169 -599
  852. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +4 -7
  853. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +2 -2
  854. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +1 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +1 -1
  856. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +4 -4
  857. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +1 -1
  858. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +1 -1
  859. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +3 -3
  860. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +1 -1
  861. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +1 -1
  862. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +3 -3
  863. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +12 -24
  864. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +22 -9
  865. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +13 -0
  866. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/loongarch.h +41 -0
  867. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +2 -2
  868. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  869. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +1 -1
  870. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +2 -2
  871. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msvc.h +53 -0
  872. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +1 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +1 -1
  875. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -0
  876. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  877. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +8 -2
  878. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +5 -5
  879. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +15 -15
  880. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +203 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +14 -14
  883. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +2 -2
  884. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +1 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +4 -82
  886. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/gcd_lcm.hpp +53 -0
  887. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_evenly_divisible_by.hpp +32 -0
  888. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/is_ratio.hpp +28 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +1 -3
  890. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +5 -249
  891. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +30 -56
  892. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +0 -533
  893. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +8 -1
  894. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1 -1
  895. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +3 -2
  896. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +1 -0
  897. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -7
  898. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +4 -3
  899. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +23 -13
  900. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +10 -10
  901. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +2 -0
  902. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +3 -2
  903. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +6 -0
  904. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +3 -1
  905. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +7 -7
  906. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +235 -104
  907. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +37 -43
  908. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +1 -23
  909. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +52 -0
  911. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +14 -18
  912. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +7 -15
  913. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +40 -91
  914. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +0 -16
  915. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -0
  916. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +4 -2
  917. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +1 -1
  918. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +13 -14
  919. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +16 -17
  920. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +17 -56
  921. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
  922. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +5 -14
  923. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_type_traits.hpp +55 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +1 -0
  925. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  926. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +5 -6
  927. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +4 -6
  928. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +7 -9
  929. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +32 -119
  930. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -18
  931. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +2 -5
  932. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +10 -8
  933. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +28 -564
  934. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_unique.hpp +64 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +17 -20
  936. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +20 -21
  937. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +34 -66
  938. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +79 -370
  939. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +31 -88
  940. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -1
  941. data/src/cxx_supportlib/vendor-modified/boost/system/detail/append_int.hpp +32 -0
  942. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +26 -8
  943. data/src/cxx_supportlib/vendor-modified/boost/system/detail/enable_if.hpp +3 -12
  944. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +38 -50
  945. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +76 -49
  946. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +261 -159
  947. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +145 -58
  948. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +7 -7
  949. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +17 -5
  950. data/src/cxx_supportlib/vendor-modified/boost/system/detail/interop_category.hpp +7 -7
  951. data/src/cxx_supportlib/vendor-modified/boost/system/detail/is_same.hpp +3 -13
  952. data/src/cxx_supportlib/vendor-modified/boost/system/detail/mutex.hpp +128 -0
  953. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +1 -43
  954. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +20 -77
  955. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +97 -0
  956. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category.hpp +7 -7
  957. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +8 -20
  958. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +71 -0
  959. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +9 -2
  960. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +30 -59
  961. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +1 -24
  962. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +1 -14
  963. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +1 -14
  964. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +2 -12
  965. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +0 -11
  966. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +0 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +0 -16
  968. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +0 -11
  969. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +0 -11
  970. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +0 -19
  971. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +4 -6
  972. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -26
  973. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +1 -18
  974. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +1 -14
  975. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +11 -4
  976. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_to_unsigned.hpp +55 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/string_trim.hpp +29 -0
  978. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +5 -5
  979. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +0 -1
  980. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +3 -2
  981. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +1 -1
  982. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +9 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +4 -4
  984. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +5 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +104 -6
  986. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -2
  987. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +25 -24
  988. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -1
  989. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +4 -1
  990. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  991. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  992. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_swappable_cxx_11.hpp +70 -0
  993. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  994. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +22 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +1 -1
  999. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +4 -24
  1000. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_swappable.hpp +92 -0
  1001. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +2 -3
  1002. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +1 -10
  1003. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -6
  1004. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +2 -4
  1005. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +2 -4
  1006. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +2 -5
  1007. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +2 -15
  1008. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +4 -51
  1009. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +2 -6
  1010. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +2 -9
  1011. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +2 -46
  1012. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +2 -5
  1013. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +2 -29
  1014. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +2 -9
  1015. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +4 -9
  1016. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +2 -6
  1017. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +2 -5
  1018. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +2 -9
  1019. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +2 -19
  1020. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +2 -5
  1021. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +2 -5
  1022. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +2 -12
  1023. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +2 -4
  1024. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +2 -10
  1025. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +2 -5
  1026. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +8 -202
  1027. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +1055 -0
  1028. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +66 -0
  1029. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +917 -0
  1030. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +67 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +1202 -0
  1032. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map_fwd.hpp +67 -0
  1033. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +1065 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set_fwd.hpp +67 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocator_constructed.hpp +59 -0
  1036. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/archive_constructed.hpp +71 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/bad_archive_exception.hpp +27 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/concurrent_static_asserts.hpp +127 -0
  1039. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +900 -0
  1040. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +1993 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2404 -0
  1042. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/element_type.hpp +64 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_map_types.hpp +94 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/flat_set_types.hpp +50 -0
  1046. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/ignore_wshadow.hpp +35 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_handle.hpp +319 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_handle.hpp +56 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_map_types.hpp +150 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_handle.hpp +48 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/node_set_types.hpp +101 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/reentrancy_check.hpp +138 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/restore_wshadow.hpp +11 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/rw_spinlock.hpp +179 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +661 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/tuple_rotate_right.hpp +53 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/types_constructibility.hpp +172 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1463 -3502
  1059. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +10 -31
  1060. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/mulx.hpp +129 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/narrow_cast.hpp +44 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/opt_storage.hpp +30 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +214 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialization_version.hpp +74 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_container.hpp +204 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_fca_container.hpp +156 -0
  1067. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/serialize_tracked_address.hpp +104 -0
  1068. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +8 -30
  1069. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/static_assert.hpp +16 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/throw_exception.hpp +30 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +237 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +70 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +821 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +59 -0
  1076. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +631 -0
  1077. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +58 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +760 -994
  1079. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +35 -13
  1080. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +895 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +59 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +707 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +58 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_printers.hpp +414 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +539 -664
  1086. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +35 -15
  1087. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +2 -1
  1088. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +3 -2
  1089. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
  1090. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +6 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +13 -2
  1092. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +6 -2
  1093. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +24 -3
  1094. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +4 -1
  1095. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +6 -1
  1096. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +12 -8
  1097. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1098. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +2 -9
  1099. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +3 -3
  1100. data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
  1101. data/src/helper-scripts/crash-watch.rb +1 -1
  1102. data/src/helper-scripts/download_binaries/extconf.rb +2 -2
  1103. data/src/helper-scripts/meteor-loader.rb +9 -4
  1104. data/src/helper-scripts/node-loader.js +2 -2
  1105. data/src/helper-scripts/prespawn +2 -2
  1106. data/src/helper-scripts/rack-loader.rb +2 -2
  1107. data/src/helper-scripts/rack-preloader.rb +2 -2
  1108. data/src/helper-scripts/wsgi-loader.py +36 -19
  1109. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +26 -34
  1110. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +2 -2
  1111. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +14 -2
  1112. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +2 -2
  1113. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +38 -50
  1114. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +2 -2
  1115. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +2 -2
  1116. data/src/nginx_module/Configuration.c +8 -3
  1117. data/src/nginx_module/Configuration.h +1 -1
  1118. data/src/nginx_module/ContentHandler.c +1 -1
  1119. data/src/nginx_module/ContentHandler.h +1 -1
  1120. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +13 -2
  1121. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  1122. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +38 -2
  1123. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +2 -2
  1124. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +29 -2
  1125. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  1126. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +8 -2
  1127. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +2 -2
  1128. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +10 -2
  1129. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  1130. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +7 -26
  1131. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  1132. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +13 -50
  1133. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  1134. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +6 -18
  1135. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  1136. data/src/nginx_module/StaticContentHandler.c +1 -1
  1137. data/src/nginx_module/StaticContentHandler.h +1 -1
  1138. data/src/nginx_module/ngx_http_passenger_module.c +2 -6
  1139. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  1140. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +2 -2
  1141. data/src/ruby_native_extension/extconf.rb +3 -3
  1142. data/src/ruby_native_extension/passenger_native_support.c +22 -5
  1143. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +2 -2
  1144. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
  1145. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -2
  1146. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -2
  1147. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -2
  1148. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +22 -26
  1149. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +2 -2
  1150. data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -10
  1151. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -2
  1152. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -2
  1153. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -2
  1154. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -2
  1155. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -2
  1156. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -2
  1157. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +8 -4
  1158. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -2
  1159. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -2
  1160. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -2
  1161. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -2
  1162. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -2
  1163. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +2 -2
  1164. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -2
  1165. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -2
  1166. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +15 -7
  1167. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  1168. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -2
  1169. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -2
  1170. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -2
  1171. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +2 -2
  1172. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -2
  1173. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +2 -2
  1174. data/src/ruby_supportlib/phusion_passenger/constants.rb +3 -2
  1175. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
  1176. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +15 -5
  1177. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +2 -2
  1178. data/src/ruby_supportlib/phusion_passenger/message_client.rb +2 -2
  1179. data/src/ruby_supportlib/phusion_passenger/native_support.rb +12 -7
  1180. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +21 -30
  1181. data/src/ruby_supportlib/phusion_passenger/packaging.rb +3 -2
  1182. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -12
  1183. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -2
  1184. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +3 -3
  1185. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +56 -14
  1186. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -2
  1187. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -2
  1188. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +9 -31
  1189. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
  1190. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +6 -6
  1191. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -2
  1192. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -2
  1193. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -2
  1194. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +7 -37
  1195. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +13 -14
  1196. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +4 -4
  1197. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
  1198. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -2
  1199. data/src/ruby_supportlib/phusion_passenger/plugin.rb +2 -2
  1200. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +14 -8
  1201. data/src/ruby_supportlib/phusion_passenger/public_api.rb +5 -2
  1202. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
  1203. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  1204. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +14 -3
  1205. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +32 -58
  1206. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
  1207. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  1208. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +7 -2
  1209. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +2 -2
  1210. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +2 -2
  1211. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -2
  1212. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -2
  1213. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +27 -23
  1214. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -2
  1215. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +2 -2
  1216. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -2
  1217. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +6 -3
  1218. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -3
  1219. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -6
  1220. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -4
  1221. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +9 -3
  1222. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -2
  1223. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +2 -2
  1224. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +2 -2
  1225. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -2
  1226. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
  1227. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
  1228. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -2
  1229. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +2 -2
  1230. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +2 -2
  1231. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
  1232. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -2
  1233. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -2
  1234. data/src/ruby_supportlib/phusion_passenger/utils.rb +8 -17
  1235. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -2
  1236. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  1237. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +5 -1
  1238. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +6 -2
  1239. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  1240. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  1241. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +1 -1
  1242. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +1 -1
  1243. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +1 -1
  1244. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  1245. data/src/ruby_supportlib/phusion_passenger.rb +11 -11
  1246. data/src/schema_printer/SchemaPrinterMain.cpp +2 -6
  1247. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +2 -2
  1248. metadata +211 -741
  1249. data/dev/webpacketpp.patch +0 -39
  1250. data/src/agent/Core/AdminPanelConnector.h +0 -681
  1251. data/src/cxx_supportlib/DataStructures/HashMap.h +0 -60
  1252. data/src/cxx_supportlib/FileTools/LargeFiles.cpp +0 -41
  1253. data/src/cxx_supportlib/ServerKit/http_parser.cpp +0 -2265
  1254. data/src/cxx_supportlib/ServerKit/http_parser.h +0 -330
  1255. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +0 -975
  1256. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  1257. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  1258. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  1259. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  1260. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  1261. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  1262. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  1263. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  1264. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  1265. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  1266. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +0 -456
  1267. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +0 -302
  1268. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +0 -179
  1269. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +0 -179
  1270. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +0 -224
  1271. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +0 -37
  1272. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +0 -1267
  1273. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +0 -135
  1274. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +0 -1305
  1275. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +0 -705
  1276. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +0 -292
  1277. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +0 -1296
  1278. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +0 -800
  1279. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +0 -909
  1280. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +0 -578
  1281. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +0 -1917
  1282. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +0 -2600
  1283. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +0 -409
  1284. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +0 -689
  1285. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +0 -1122
  1286. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +0 -454
  1287. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +0 -38
  1288. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +0 -823
  1289. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +0 -723
  1290. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +0 -756
  1291. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +0 -2500
  1292. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +0 -255
  1293. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +0 -27
  1294. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +0 -281
  1295. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +0 -27
  1296. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +0 -247
  1297. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +0 -27
  1298. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +0 -523
  1299. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +0 -361
  1300. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +0 -237
  1301. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +0 -176
  1302. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +0 -501
  1303. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +0 -220
  1304. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +0 -138
  1305. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +0 -1138
  1306. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +0 -330
  1307. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +0 -40
  1308. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +0 -132
  1309. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +0 -114
  1310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +0 -40
  1311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +0 -34
  1312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +0 -32
  1313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +0 -66
  1314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +0 -165
  1315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +0 -71
  1316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +0 -1073
  1317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +0 -109
  1318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +0 -68
  1319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +0 -652
  1320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +0 -128
  1321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +0 -90
  1322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +0 -127
  1323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +0 -68
  1324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +0 -192
  1325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +0 -90
  1326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +0 -94
  1327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +0 -122
  1328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +0 -151
  1329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +0 -1938
  1330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +0 -416
  1331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +0 -33
  1332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +0 -62
  1333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +0 -34
  1334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +0 -337
  1335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +0 -38
  1336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +0 -141
  1337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +0 -150
  1338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +0 -150
  1339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +0 -224
  1340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +0 -278
  1341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +0 -50
  1342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +0 -85
  1343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +0 -206
  1344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +0 -86
  1345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +0 -41
  1346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +0 -82
  1347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +0 -46
  1348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +0 -33
  1349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +0 -93
  1350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +0 -70
  1351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +0 -67
  1352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +0 -101
  1353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +0 -54
  1354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +0 -290
  1355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +0 -45
  1356. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +0 -80
  1357. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +0 -268
  1358. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +0 -561
  1359. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +0 -527
  1360. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +0 -333
  1361. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +0 -120
  1362. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +0 -610
  1363. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +0 -101
  1364. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +0 -462
  1365. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +0 -111
  1366. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +0 -819
  1367. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +0 -173
  1368. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +0 -398
  1369. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +0 -115
  1370. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +0 -601
  1371. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +0 -76
  1372. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +0 -131
  1373. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +0 -65
  1374. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +0 -48
  1375. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +0 -86
  1376. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +0 -48
  1377. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +0 -225
  1378. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +0 -151
  1379. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +0 -302
  1380. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +0 -160
  1381. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +0 -661
  1382. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +0 -126
  1383. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +0 -359
  1384. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +0 -96
  1385. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +0 -199
  1386. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +0 -670
  1387. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +0 -3966
  1388. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +0 -187
  1389. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +0 -356
  1390. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +0 -160
  1391. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +0 -89
  1392. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +0 -204
  1393. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +0 -37
  1394. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +0 -47
  1395. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +0 -99
  1396. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +0 -103
  1397. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +0 -86
  1398. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +0 -174
  1399. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +0 -314
  1400. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +0 -128
  1401. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +0 -72
  1402. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +0 -254
  1403. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +0 -26
  1404. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +0 -61
  1405. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +0 -64
  1406. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -135
  1407. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +0 -50
  1408. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +0 -56
  1409. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +0 -45
  1410. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +0 -108
  1411. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +0 -49
  1412. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +0 -61
  1413. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +0 -66
  1414. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +0 -70
  1415. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +0 -71
  1416. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +0 -521
  1417. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +0 -62
  1418. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +0 -69
  1419. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +0 -70
  1420. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +0 -173
  1421. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +0 -216
  1422. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +0 -164
  1423. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +0 -40
  1424. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +0 -91
  1425. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +0 -149
  1426. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +0 -177
  1427. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +0 -120
  1428. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +0 -82
  1429. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +0 -78
  1430. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +0 -87
  1431. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +0 -66
  1432. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +0 -111
  1433. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +0 -81
  1434. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +0 -218
  1435. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +0 -511
  1436. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +0 -100
  1437. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +0 -239
  1438. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +0 -244
  1439. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +0 -125
  1440. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +0 -161
  1441. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +0 -166
  1442. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +0 -147
  1443. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -164
  1444. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +0 -158
  1445. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +0 -607
  1446. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +0 -654
  1447. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +0 -100
  1448. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +0 -32
  1449. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +0 -42
  1450. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +0 -73
  1451. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +0 -214
  1452. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +0 -107
  1453. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +0 -44
  1454. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +0 -142
  1455. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +0 -47
  1456. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +0 -152
  1457. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +0 -147
  1458. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +0 -160
  1459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +0 -231
  1460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +0 -80
  1461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +0 -42
  1462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +0 -103
  1463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +0 -89
  1464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +0 -48
  1465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +0 -250
  1466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +0 -166
  1467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +0 -46
  1468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +0 -92
  1469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +0 -49
  1470. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +0 -51
  1471. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +0 -231
  1472. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +0 -100
  1473. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +0 -385
  1474. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +0 -318
  1475. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +0 -93
  1476. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +0 -419
  1477. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +0 -64
  1478. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +0 -47
  1479. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +0 -54
  1480. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +0 -190
  1481. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +0 -64
  1482. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +0 -72
  1483. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +0 -75
  1484. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +0 -83
  1485. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +0 -73
  1486. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +0 -175
  1487. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +0 -146
  1488. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +0 -49
  1489. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +0 -62
  1490. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +0 -53
  1491. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +0 -101
  1492. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +0 -258
  1493. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +0 -55
  1494. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +0 -53
  1495. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +0 -391
  1496. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +0 -70
  1497. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +0 -105
  1498. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +0 -68
  1499. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +0 -35
  1500. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +0 -42
  1501. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +0 -71
  1502. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +0 -158
  1503. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +0 -294
  1504. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +0 -92
  1505. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +0 -51
  1506. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +0 -130
  1507. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +0 -153
  1508. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +0 -329
  1509. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +0 -123
  1510. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +0 -361
  1511. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +0 -339
  1512. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +0 -2348
  1513. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +0 -49
  1514. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +0 -1553
  1515. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +0 -1214
  1516. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +0 -401
  1517. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +0 -1217
  1518. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +0 -493
  1519. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +0 -235
  1520. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +0 -223
  1521. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +0 -154
  1522. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +0 -107
  1523. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +0 -130
  1524. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +0 -263
  1525. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +0 -235
  1526. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +0 -92
  1527. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +0 -289
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +0 -254
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +0 -42
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +0 -38
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +0 -73
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +0 -1118
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +0 -228
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +0 -96
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +0 -869
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +0 -333
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +0 -282
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +0 -50
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +0 -867
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +0 -291
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +0 -88
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +0 -313
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +0 -254
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +0 -254
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +0 -487
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +0 -251
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +0 -454
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +0 -48
  1549. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +0 -414
  1550. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +0 -349
  1551. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +0 -304
  1552. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +0 -73
  1553. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +0 -137
  1554. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +0 -133
  1555. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +0 -538
  1556. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +0 -157
  1557. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +0 -1057
  1558. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +0 -607
  1559. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -160
  1560. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +0 -120
  1561. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_traits.hpp +0 -185
  1562. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +0 -181
  1563. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/append.hpp +0 -219
  1564. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +0 -231
  1565. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_tuple.hpp +0 -248
  1566. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/deferred.hpp +0 -106
  1567. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +0 -434
  1568. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/prepend.hpp +0 -219
  1569. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +0 -100
  1570. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +0 -217
  1571. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +0 -73
  1572. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +0 -608
  1573. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +0 -284
  1574. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +0 -195
  1575. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +0 -125
  1576. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +0 -135
  1577. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +0 -112
  1578. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +0 -123
  1579. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +0 -124
  1580. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +0 -129
  1581. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +0 -106
  1582. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +0 -56
  1583. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +0 -113
  1584. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +0 -46
  1585. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +0 -762
  1586. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +0 -500
  1587. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +0 -480
  1588. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +0 -348
  1589. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -689
  1590. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +0 -906
  1591. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +0 -258
  1592. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +0 -132
  1593. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +0 -253
  1594. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +0 -130
  1595. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +0 -111
  1596. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +0 -84
  1597. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +0 -302
  1598. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +0 -45
  1599. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +0 -64
  1600. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +0 -446
  1601. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +0 -177
  1602. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +0 -51
  1603. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +0 -258
  1604. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +0 -1201
  1605. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +0 -735
  1606. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +0 -3317
  1607. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +0 -611
  1608. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +0 -61
  1609. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +0 -556
  1610. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +0 -519
  1611. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +0 -85
  1612. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +0 -36
  1613. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +0 -94
  1614. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +0 -187
  1615. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +0 -356
  1616. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +0 -143
  1617. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +0 -293
  1618. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1030
  1619. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +0 -1102
  1620. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +0 -646
  1621. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -1552
  1622. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +0 -378
  1623. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +0 -35
  1624. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +0 -20
  1625. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +0 -292
  1626. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +0 -357
  1627. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +0 -164
  1628. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +0 -136
  1629. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +0 -384
  1630. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +0 -185
  1631. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +0 -131
  1632. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +0 -55
  1633. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +0 -293
  1634. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +0 -1078
  1635. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +0 -115
  1636. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +0 -194
  1637. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +0 -246
  1638. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +0 -313
  1639. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +0 -143
  1640. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +0 -201
  1641. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +0 -568
  1642. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +0 -44
  1643. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +0 -117
  1644. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +0 -69
  1645. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +0 -241
  1646. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +0 -69
  1647. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +0 -212
  1648. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +0 -69
  1649. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +0 -352
  1650. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +0 -45
  1651. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +0 -56
  1652. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +0 -56
  1653. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +0 -218
  1654. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +0 -55
  1655. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +0 -187
  1656. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +0 -193
  1657. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +0 -263
  1658. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +0 -237
  1659. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +0 -131
  1660. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +0 -45
  1661. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +0 -157
  1662. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +0 -113
  1663. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +0 -72
  1664. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +0 -71
  1665. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +0 -63
  1666. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +0 -48
  1667. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +0 -61
  1668. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +0 -61
  1669. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +0 -249
  1670. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +0 -103
  1671. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +0 -82
  1672. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +0 -141
  1673. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +0 -133
  1674. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +0 -92
  1675. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +0 -60
  1676. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +0 -128
  1677. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +0 -153
  1678. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +0 -710
  1679. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +0 -503
  1680. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +0 -39
  1681. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +0 -92
  1682. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +0 -39
  1683. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +0 -128
  1684. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +0 -738
  1685. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +0 -328
  1686. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +0 -1390
  1687. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +0 -740
  1688. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +0 -3033
  1689. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +0 -68
  1690. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +0 -575
  1691. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +0 -356
  1692. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +0 -38
  1693. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +0 -169
  1694. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +0 -30
  1695. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +0 -561
  1696. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -346
  1697. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +0 -763
  1698. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +0 -211
  1699. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +0 -121
  1700. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +0 -172
  1701. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +0 -69
  1702. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +0 -365
  1703. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +0 -167
  1704. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +0 -427
  1705. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +0 -103
  1706. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +0 -34
  1707. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +0 -68
  1708. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +0 -74
  1709. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +0 -71
  1710. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +0 -208
  1711. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +0 -64
  1712. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +0 -78
  1713. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +0 -129
  1714. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +0 -92
  1715. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +0 -69
  1716. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +0 -1247
  1717. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +0 -104
  1718. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +0 -75
  1719. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +0 -166
  1720. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +0 -29
  1721. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +0 -100
  1722. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +0 -974
  1723. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +0 -54
  1724. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +0 -69
  1725. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +0 -65
  1726. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +0 -28
  1727. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +0 -33
  1728. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +0 -44
  1729. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +0 -571
  1730. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +0 -35
  1731. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +0 -92
  1732. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -686
  1733. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +0 -44
  1734. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +0 -282
  1735. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +0 -1133
  1736. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +0 -88
  1737. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +0 -116
  1738. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +0 -116
  1739. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +0 -114
  1740. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +0 -114
  1741. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +0 -106
  1742. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +0 -110
  1743. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +0 -110
  1744. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +0 -110
  1745. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +0 -110
  1746. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +0 -110
  1747. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +0 -110
  1748. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +0 -110
  1749. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +0 -110
  1750. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +0 -110
  1751. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +0 -110
  1752. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +0 -110
  1753. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +0 -110
  1754. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +0 -110
  1755. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +0 -110
  1756. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +0 -110
  1757. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +0 -114
  1758. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +0 -114
  1759. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +0 -236
  1760. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +0 -236
  1761. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +0 -110
  1762. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +0 -110
  1763. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +0 -110
  1764. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +0 -125
  1765. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +0 -126
  1766. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +0 -114
  1767. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +0 -114
  1768. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +0 -24
  1769. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +0 -35
  1770. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +0 -40
  1771. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +0 -20
  1772. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +0 -26
  1773. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +0 -256
  1774. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +0 -27
  1775. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +0 -26
  1776. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +0 -21
  1777. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +0 -168
  1778. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +0 -162
  1779. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +0 -73
  1780. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +0 -23
  1781. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +0 -58
  1782. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +0 -437
  1783. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +0 -363
  1784. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +0 -512
  1785. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +0 -496
  1786. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +0 -40
  1787. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +0 -41
  1788. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +0 -147
  1789. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +0 -39
  1790. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +0 -39
  1791. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +0 -1348
  1792. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +0 -748
  1793. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +0 -23
  1794. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +0 -187
  1795. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +0 -201
  1796. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +0 -67
  1797. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +0 -55
  1798. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +0 -150
  1799. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf2_cc.hpp +0 -228
  1800. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +0 -441
  1801. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +0 -345
  1802. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +0 -103
  1803. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_template.hpp +0 -1047
  1804. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +0 -130
  1805. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +0 -475
  1806. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +0 -17
  1807. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +0 -71
  1808. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  1809. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  1810. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  1811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  1812. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1813. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
  1814. data/src/cxx_supportlib/vendor-modified/boost/function/detail/function_iterate.hpp +0 -16
  1815. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +0 -39
  1816. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +0 -369
  1817. data/src/cxx_supportlib/vendor-modified/boost/function/detail/prologue.hpp +0 -26
  1818. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +0 -26
  1819. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +0 -6
  1820. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +0 -1058
  1821. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +0 -55
  1822. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +0 -89
  1823. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +0 -124
  1824. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +0 -126
  1825. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +0 -89
  1826. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +0 -367
  1827. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +0 -1342
  1828. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +0 -30
  1829. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +0 -22
  1830. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +0 -19
  1831. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +0 -30
  1832. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +0 -30
  1833. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +0 -30
  1834. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +0 -30
  1835. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +0 -30
  1836. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +0 -30
  1837. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +0 -30
  1838. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +0 -30
  1839. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +0 -30
  1840. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +0 -30
  1841. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +0 -30
  1842. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +0 -31
  1843. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +0 -30
  1844. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +0 -25
  1845. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +0 -15
  1846. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +0 -30
  1847. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +0 -30
  1848. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/indexed_bit_flag.hpp +0 -54
  1849. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +0 -64
  1850. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +0 -52
  1851. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +0 -45
  1852. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_obsolete.hpp +0 -32
  1853. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
  1854. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +0 -17
  1855. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +0 -278
  1856. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +0 -297
  1857. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +0 -265
  1858. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +0 -100
  1859. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -58
  1860. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +0 -34
  1861. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +0 -118
  1862. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +0 -80
  1863. data/src/cxx_supportlib/vendor-modified/boost/typeof/message.hpp +0 -8
  1864. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +0 -121
  1865. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +0 -60
  1866. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +0 -38
  1867. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +0 -50
  1868. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +0 -135
  1869. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +0 -61
  1870. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +0 -32
  1871. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +0 -160
  1872. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +0 -149
  1873. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +0 -27
  1874. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +0 -37
  1875. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +0 -187
  1876. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +0 -29
  1877. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +0 -166
  1878. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +0 -321
  1879. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +0 -471
  1880. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +0 -621
  1881. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +0 -171
  1882. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +0 -63
  1883. data/src/cxx_supportlib/vendor-modified/websocketpp/COPYING +0 -145
  1884. data/src/cxx_supportlib/vendor-modified/websocketpp/changelog.md +0 -444
  1885. data/src/cxx_supportlib/vendor-modified/websocketpp/readme.md +0 -49
  1886. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/base64/base64.hpp +0 -178
  1887. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/client.hpp +0 -33
  1888. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/close.hpp +0 -353
  1889. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio.hpp +0 -141
  1890. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/asio_ssl.hpp +0 -39
  1891. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/chrono.hpp +0 -68
  1892. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/connection_hdl.hpp +0 -52
  1893. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/cpp11.hpp +0 -162
  1894. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/functional.hpp +0 -100
  1895. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +0 -448
  1896. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/memory.hpp +0 -88
  1897. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/network.hpp +0 -106
  1898. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/platforms.hpp +0 -46
  1899. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/random.hpp +0 -82
  1900. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/regex.hpp +0 -59
  1901. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/stdint.hpp +0 -73
  1902. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/system_error.hpp +0 -84
  1903. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/thread.hpp +0 -88
  1904. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/time.hpp +0 -56
  1905. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/type_traits.hpp +0 -65
  1906. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/basic.hpp +0 -46
  1907. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/concurrency/none.hpp +0 -80
  1908. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio.hpp +0 -77
  1909. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_client.hpp +0 -77
  1910. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls.hpp +0 -73
  1911. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/asio_no_tls_client.hpp +0 -73
  1912. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/boost_config.hpp +0 -72
  1913. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core.hpp +0 -297
  1914. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/core_client.hpp +0 -294
  1915. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug.hpp +0 -286
  1916. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio.hpp +0 -77
  1917. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +0 -73
  1918. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_client.hpp +0 -72
  1919. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/config/minimal_server.hpp +0 -312
  1920. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection.hpp +0 -1642
  1921. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/connection_base.hpp +0 -38
  1922. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint.hpp +0 -700
  1923. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/endpoint_base.hpp +0 -38
  1924. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/error.hpp +0 -277
  1925. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/extension.hpp +0 -102
  1926. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +0 -129
  1927. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +0 -817
  1928. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/frame.hpp +0 -864
  1929. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/constants.hpp +0 -308
  1930. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/parser.hpp +0 -200
  1931. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/request.hpp +0 -191
  1932. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/impl/response.hpp +0 -266
  1933. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/parser.hpp +0 -629
  1934. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/request.hpp +0 -124
  1935. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/http/response.hpp +0 -188
  1936. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/connection_impl.hpp +0 -2375
  1937. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/endpoint_impl.hpp +0 -269
  1938. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/impl/utilities_impl.hpp +0 -87
  1939. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/basic.hpp +0 -199
  1940. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/levels.hpp +0 -203
  1941. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/stub.hpp +0 -119
  1942. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/logger/syslog.hpp +0 -146
  1943. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/alloc.hpp +0 -105
  1944. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/message.hpp +0 -340
  1945. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/message_buffer/pool.hpp +0 -229
  1946. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/base.hpp +0 -299
  1947. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi00.hpp +0 -462
  1948. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi07.hpp +0 -78
  1949. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi08.hpp +0 -83
  1950. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/hybi13.hpp +0 -1078
  1951. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/processors/processor.hpp +0 -407
  1952. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/none.hpp +0 -60
  1953. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/random/random_device.hpp +0 -80
  1954. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/client_endpoint.hpp +0 -173
  1955. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/roles/server_endpoint.hpp +0 -195
  1956. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/server.hpp +0 -33
  1957. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/sha1/sha1.hpp +0 -189
  1958. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/base.hpp +0 -232
  1959. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/connection.hpp +0 -1197
  1960. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/endpoint.hpp +0 -1182
  1961. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/base.hpp +0 -159
  1962. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/none.hpp +0 -372
  1963. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/asio/security/tls.hpp +0 -474
  1964. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/connection.hpp +0 -238
  1965. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/base/endpoint.hpp +0 -77
  1966. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/base.hpp +0 -104
  1967. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/connection.hpp +0 -412
  1968. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/debug/endpoint.hpp +0 -140
  1969. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/base.hpp +0 -133
  1970. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/connection.hpp +0 -714
  1971. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/iostream/endpoint.hpp +0 -222
  1972. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/base.hpp +0 -95
  1973. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/connection.hpp +0 -286
  1974. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/transport/stub/endpoint.hpp +0 -140
  1975. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/uri.hpp +0 -356
  1976. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utf8_validator.hpp +0 -154
  1977. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/utilities.hpp +0 -180
  1978. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/version.hpp +0 -61
@@ -1,3033 +0,0 @@
1
- //
2
- // read_until.hpp
3
- // ~~~~~~~~~~~~~~
4
- //
5
- // Copyright (c) 2003-2021 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 BOOST_ASIO_READ_UNTIL_HPP
12
- #define BOOST_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 <boost/asio/detail/config.hpp>
19
- #include <cstddef>
20
- #include <string>
21
- #include <boost/asio/async_result.hpp>
22
- #include <boost/asio/buffer.hpp>
23
- #include <boost/asio/detail/regex_fwd.hpp>
24
- #include <boost/asio/detail/string_view.hpp>
25
- #include <boost/asio/detail/type_traits.hpp>
26
- #include <boost/asio/error.hpp>
27
-
28
- #if !defined(BOOST_ASIO_NO_EXTENSIONS)
29
- # include <boost/asio/basic_streambuf_fwd.hpp>
30
- #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
31
-
32
- #include <boost/asio/detail/push_options.hpp>
33
-
34
- namespace boost {
35
- namespace asio {
36
-
37
- namespace detail
38
- {
39
- char (&has_result_type_helper(...))[2];
40
-
41
- template <typename T>
42
- char has_result_type_helper(T*, typename T::result_type* = 0);
43
-
44
- template <typename T>
45
- struct has_result_type
46
- {
47
- enum { value = (sizeof((has_result_type_helper)((T*)(0))) == 1) };
48
- };
49
- } // namespace detail
50
-
51
- /// Type trait used to determine whether a type can be used as a match condition
52
- /// function with read_until and async_read_until.
53
- template <typename T>
54
- struct is_match_condition
55
- {
56
- #if defined(GENERATING_DOCUMENTATION)
57
- /// The value member is true if the type may be used as a match condition.
58
- static const bool value;
59
- #else
60
- enum
61
- {
62
- value = boost::asio::is_function<
63
- typename boost::asio::remove_pointer<T>::type>::value
64
- || detail::has_result_type<T>::value
65
- };
66
- #endif
67
- };
68
-
69
- /**
70
- * @defgroup read_until boost::asio::read_until
71
- *
72
- * @brief The @c read_until function is a composed operation that reads data
73
- * into a dynamic buffer sequence, or into a streambuf, until it contains a
74
- * delimiter, matches a regular expression, or a function object indicates a
75
- * match.
76
- */
77
- /*@{*/
78
-
79
- #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
80
-
81
- /// Read data into a dynamic buffer sequence until it contains a specified
82
- /// delimiter.
83
- /**
84
- * This function is used to read data into the specified dynamic buffer
85
- * sequence until the dynamic buffer sequence's get area contains the specified
86
- * delimiter. The call will block until one of the following conditions is
87
- * true:
88
- *
89
- * @li The get area of the dynamic buffer sequence contains the specified
90
- * delimiter.
91
- *
92
- * @li An error occurred.
93
- *
94
- * This operation is implemented in terms of zero or more calls to the stream's
95
- * read_some function. If the dynamic buffer sequence's get area already
96
- * contains the delimiter, the function returns immediately.
97
- *
98
- * @param s The stream from which the data is to be read. The type must support
99
- * the SyncReadStream concept.
100
- *
101
- * @param buffers The dynamic buffer sequence into which the data will be read.
102
- *
103
- * @param delim The delimiter character.
104
- *
105
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
106
- * and including the delimiter.
107
- *
108
- * @throws boost::system::system_error Thrown on failure.
109
- *
110
- * @note After a successful read_until operation, the dynamic buffer sequence
111
- * may contain additional data beyond the delimiter. An application will
112
- * typically leave that data in the dynamic buffer sequence for a subsequent
113
- * read_until operation to examine.
114
- *
115
- * @par Example
116
- * To read data into a @c std::string until a newline is encountered:
117
- * @code std::string data;
118
- * std::size_t n = boost::asio::read_until(s,
119
- * boost::asio::dynamic_buffer(data), '\n');
120
- * std::string line = data.substr(0, n);
121
- * data.erase(0, n); @endcode
122
- * After the @c read_until operation completes successfully, the string @c data
123
- * contains the delimiter:
124
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
125
- * The call to @c substr then extracts the data up to and including the
126
- * delimiter, so that the string @c line contains:
127
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
128
- * After the call to @c erase, the remaining data is left in the buffer @c b as
129
- * follows:
130
- * @code { 'd', 'e', ... } @endcode
131
- * This data may be the start of a new line, to be extracted by a subsequent
132
- * @c read_until operation.
133
- */
134
- template <typename SyncReadStream, typename DynamicBuffer_v1>
135
- std::size_t read_until(SyncReadStream& s,
136
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
137
- typename constraint<
138
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
139
- >::type = 0,
140
- typename constraint<
141
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
142
- >::type = 0);
143
-
144
- /// Read data into a dynamic buffer sequence until it contains a specified
145
- /// delimiter.
146
- /**
147
- * This function is used to read data into the specified dynamic buffer
148
- * sequence until the dynamic buffer sequence's get area contains the specified
149
- * delimiter. The call will block until one of the following conditions is
150
- * true:
151
- *
152
- * @li The get area of the dynamic buffer sequence contains the specified
153
- * delimiter.
154
- *
155
- * @li An error occurred.
156
- *
157
- * This operation is implemented in terms of zero or more calls to the stream's
158
- * read_some function. If the dynamic buffer sequence's get area already
159
- * contains the delimiter, the function returns immediately.
160
- *
161
- * @param s The stream from which the data is to be read. The type must support
162
- * the SyncReadStream concept.
163
- *
164
- * @param buffers The dynamic buffer sequence into which the data will be read.
165
- *
166
- * @param delim The delimiter character.
167
- *
168
- * @param ec Set to indicate what error occurred, if any.
169
- *
170
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
171
- * and including the delimiter. Returns 0 if an error occurred.
172
- *
173
- * @note After a successful read_until operation, the dynamic buffer sequence
174
- * may contain additional data beyond the delimiter. An application will
175
- * typically leave that data in the dynamic buffer sequence for a subsequent
176
- * read_until operation to examine.
177
- */
178
- template <typename SyncReadStream, typename DynamicBuffer_v1>
179
- std::size_t read_until(SyncReadStream& s,
180
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
181
- char delim, boost::system::error_code& ec,
182
- typename constraint<
183
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
184
- >::type = 0,
185
- typename constraint<
186
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
187
- >::type = 0);
188
-
189
- /// Read data into a dynamic buffer sequence until it contains a specified
190
- /// delimiter.
191
- /**
192
- * This function is used to read data into the specified dynamic buffer
193
- * sequence until the dynamic buffer sequence's get area contains the specified
194
- * delimiter. The call will block until one of the following conditions is
195
- * true:
196
- *
197
- * @li The get area of the dynamic buffer sequence contains the specified
198
- * delimiter.
199
- *
200
- * @li An error occurred.
201
- *
202
- * This operation is implemented in terms of zero or more calls to the stream's
203
- * read_some function. If the dynamic buffer sequence's get area already
204
- * contains the delimiter, the function returns immediately.
205
- *
206
- * @param s The stream from which the data is to be read. The type must support
207
- * the SyncReadStream concept.
208
- *
209
- * @param buffers The dynamic buffer sequence into which the data will be read.
210
- *
211
- * @param delim The delimiter string.
212
- *
213
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
214
- * and including the delimiter.
215
- *
216
- * @note After a successful read_until operation, the dynamic buffer sequence
217
- * may contain additional data beyond the delimiter. An application will
218
- * typically leave that data in the dynamic buffer sequence for a subsequent
219
- * read_until operation to examine.
220
- *
221
- * @par Example
222
- * To read data into a @c std::string until a CR-LF sequence is encountered:
223
- * @code std::string data;
224
- * std::size_t n = boost::asio::read_until(s,
225
- * boost::asio::dynamic_buffer(data), "\r\n");
226
- * std::string line = data.substr(0, n);
227
- * data.erase(0, n); @endcode
228
- * After the @c read_until operation completes successfully, the string @c data
229
- * contains the delimiter:
230
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
231
- * The call to @c substr then extracts the data up to and including the
232
- * delimiter, so that the string @c line contains:
233
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
234
- * After the call to @c erase, the remaining data is left in the buffer @c b as
235
- * follows:
236
- * @code { 'd', 'e', ... } @endcode
237
- * This data may be the start of a new line, to be extracted by a subsequent
238
- * @c read_until operation.
239
- */
240
- template <typename SyncReadStream, typename DynamicBuffer_v1>
241
- std::size_t read_until(SyncReadStream& s,
242
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
243
- BOOST_ASIO_STRING_VIEW_PARAM delim,
244
- typename constraint<
245
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
246
- >::type = 0,
247
- typename constraint<
248
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
249
- >::type = 0);
250
-
251
- /// Read data into a dynamic buffer sequence until it contains a specified
252
- /// delimiter.
253
- /**
254
- * This function is used to read data into the specified dynamic buffer
255
- * sequence until the dynamic buffer sequence's get area contains the specified
256
- * delimiter. The call will block until one of the following conditions is
257
- * true:
258
- *
259
- * @li The get area of the dynamic buffer sequence contains the specified
260
- * delimiter.
261
- *
262
- * @li An error occurred.
263
- *
264
- * This operation is implemented in terms of zero or more calls to the stream's
265
- * read_some function. If the dynamic buffer sequence's get area already
266
- * contains the delimiter, the function returns immediately.
267
- *
268
- * @param s The stream from which the data is to be read. The type must support
269
- * the SyncReadStream concept.
270
- *
271
- * @param buffers The dynamic buffer sequence into which the data will be read.
272
- *
273
- * @param delim The delimiter string.
274
- *
275
- * @param ec Set to indicate what error occurred, if any.
276
- *
277
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
278
- * and including the delimiter. Returns 0 if an error occurred.
279
- *
280
- * @note After a successful read_until operation, the dynamic buffer sequence
281
- * may contain additional data beyond the delimiter. An application will
282
- * typically leave that data in the dynamic buffer sequence for a subsequent
283
- * read_until operation to examine.
284
- */
285
- template <typename SyncReadStream, typename DynamicBuffer_v1>
286
- std::size_t read_until(SyncReadStream& s,
287
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
288
- BOOST_ASIO_STRING_VIEW_PARAM delim,
289
- boost::system::error_code& ec,
290
- typename constraint<
291
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
292
- >::type = 0,
293
- typename constraint<
294
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
295
- >::type = 0);
296
-
297
- #if !defined(BOOST_ASIO_NO_EXTENSIONS)
298
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
299
- || defined(GENERATING_DOCUMENTATION)
300
-
301
- /// Read data into a dynamic buffer sequence until some part of the data it
302
- /// contains matches a regular expression.
303
- /**
304
- * This function is used to read data into the specified dynamic buffer
305
- * sequence until the dynamic buffer sequence's get area contains some data
306
- * that matches a regular expression. The call will block until one of the
307
- * following conditions is true:
308
- *
309
- * @li A substring of the dynamic buffer sequence's get area matches the
310
- * regular expression.
311
- *
312
- * @li An error occurred.
313
- *
314
- * This operation is implemented in terms of zero or more calls to the stream's
315
- * read_some function. If the dynamic buffer sequence's get area already
316
- * contains data that matches the regular expression, the function returns
317
- * immediately.
318
- *
319
- * @param s The stream from which the data is to be read. The type must support
320
- * the SyncReadStream concept.
321
- *
322
- * @param buffers A dynamic buffer sequence into which the data will be read.
323
- *
324
- * @param expr The regular expression.
325
- *
326
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
327
- * and including the substring that matches the regular expression.
328
- *
329
- * @throws boost::system::system_error Thrown on failure.
330
- *
331
- * @note After a successful read_until operation, the dynamic buffer sequence
332
- * may contain additional data beyond that which matched the regular
333
- * expression. An application will typically leave that data in the dynamic
334
- * buffer sequence for a subsequent read_until operation to examine.
335
- *
336
- * @par Example
337
- * To read data into a @c std::string until a CR-LF sequence is encountered:
338
- * @code std::string data;
339
- * std::size_t n = boost::asio::read_until(s,
340
- * boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
341
- * std::string line = data.substr(0, n);
342
- * data.erase(0, n); @endcode
343
- * After the @c read_until operation completes successfully, the string @c data
344
- * contains the delimiter:
345
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
346
- * The call to @c substr then extracts the data up to and including the
347
- * delimiter, so that the string @c line contains:
348
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
349
- * After the call to @c erase, the remaining data is left in the buffer @c b as
350
- * follows:
351
- * @code { 'd', 'e', ... } @endcode
352
- * This data may be the start of a new line, to be extracted by a subsequent
353
- * @c read_until operation.
354
- */
355
- template <typename SyncReadStream, typename DynamicBuffer_v1>
356
- std::size_t read_until(SyncReadStream& s,
357
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
358
- const boost::regex& expr,
359
- typename constraint<
360
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
361
- >::type = 0,
362
- typename constraint<
363
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
364
- >::type = 0);
365
-
366
- /// Read data into a dynamic buffer sequence until some part of the data it
367
- /// contains matches a regular expression.
368
- /**
369
- * This function is used to read data into the specified dynamic buffer
370
- * sequence until the dynamic buffer sequence's get area contains some data
371
- * that matches a regular expression. The call will block until one of the
372
- * following conditions is true:
373
- *
374
- * @li A substring of the dynamic buffer sequence's get area matches the
375
- * regular expression.
376
- *
377
- * @li An error occurred.
378
- *
379
- * This operation is implemented in terms of zero or more calls to the stream's
380
- * read_some function. If the dynamic buffer sequence's get area already
381
- * contains data that matches the regular expression, the function returns
382
- * immediately.
383
- *
384
- * @param s The stream from which the data is to be read. The type must support
385
- * the SyncReadStream concept.
386
- *
387
- * @param buffers A dynamic buffer sequence into which the data will be read.
388
- *
389
- * @param expr The regular expression.
390
- *
391
- * @param ec Set to indicate what error occurred, if any.
392
- *
393
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
394
- * and including the substring that matches the regular expression. Returns 0
395
- * if an error occurred.
396
- *
397
- * @note After a successful read_until operation, the dynamic buffer sequence
398
- * may contain additional data beyond that which matched the regular
399
- * expression. An application will typically leave that data in the dynamic
400
- * buffer sequence for a subsequent read_until operation to examine.
401
- */
402
- template <typename SyncReadStream, typename DynamicBuffer_v1>
403
- std::size_t read_until(SyncReadStream& s,
404
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
405
- const boost::regex& expr, boost::system::error_code& ec,
406
- typename constraint<
407
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
408
- >::type = 0,
409
- typename constraint<
410
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
411
- >::type = 0);
412
-
413
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
414
- // || defined(GENERATING_DOCUMENTATION)
415
-
416
- /// Read data into a dynamic buffer sequence until a function object indicates a
417
- /// match.
418
-
419
- /**
420
- * This function is used to read data into the specified dynamic buffer
421
- * sequence until a user-defined match condition function object, when applied
422
- * to the data contained in the dynamic buffer sequence, indicates a successful
423
- * match. The call will block until one of the following conditions is true:
424
- *
425
- * @li The match condition function object returns a std::pair where the second
426
- * element evaluates to true.
427
- *
428
- * @li An error occurred.
429
- *
430
- * This operation is implemented in terms of zero or more calls to the stream's
431
- * read_some function. If the match condition function object already indicates
432
- * a match, the function returns immediately.
433
- *
434
- * @param s The stream from which the data is to be read. The type must support
435
- * the SyncReadStream concept.
436
- *
437
- * @param buffers A dynamic buffer sequence into which the data will be read.
438
- *
439
- * @param match_condition The function object to be called to determine whether
440
- * a match exists. The signature of the function object must be:
441
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
442
- * @endcode
443
- * where @c iterator represents the type:
444
- * @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
445
- * @endcode
446
- * The iterator parameters @c begin and @c end define the range of bytes to be
447
- * scanned to determine whether there is a match. The @c first member of the
448
- * return value is an iterator marking one-past-the-end of the bytes that have
449
- * been consumed by the match function. This iterator is used to calculate the
450
- * @c begin parameter for any subsequent invocation of the match condition. The
451
- * @c second member of the return value is true if a match has been found, false
452
- * otherwise.
453
- *
454
- * @returns The number of bytes in the dynamic_buffer's get area that
455
- * have been fully consumed by the match function.
456
- *
457
- * @throws boost::system::system_error Thrown on failure.
458
- *
459
- * @note After a successful read_until operation, the dynamic buffer sequence
460
- * may contain additional data beyond that which matched the function object.
461
- * An application will typically leave that data in the dynamic buffer sequence
462
- * for a subsequent read_until operation to examine.
463
-
464
- * @note The default implementation of the @c is_match_condition type trait
465
- * evaluates to true for function pointers and function objects with a
466
- * @c result_type typedef. It must be specialised for other user-defined
467
- * function objects.
468
- *
469
- * @par Examples
470
- * To read data into a dynamic buffer sequence until whitespace is encountered:
471
- * @code typedef boost::asio::buffers_iterator<
472
- * boost::asio::const_buffers_1> iterator;
473
- *
474
- * std::pair<iterator, bool>
475
- * match_whitespace(iterator begin, iterator end)
476
- * {
477
- * iterator i = begin;
478
- * while (i != end)
479
- * if (std::isspace(*i++))
480
- * return std::make_pair(i, true);
481
- * return std::make_pair(i, false);
482
- * }
483
- * ...
484
- * std::string data;
485
- * boost::asio::read_until(s, data, match_whitespace);
486
- * @endcode
487
- *
488
- * To read data into a @c std::string until a matching character is found:
489
- * @code class match_char
490
- * {
491
- * public:
492
- * explicit match_char(char c) : c_(c) {}
493
- *
494
- * template <typename Iterator>
495
- * std::pair<Iterator, bool> operator()(
496
- * Iterator begin, Iterator end) const
497
- * {
498
- * Iterator i = begin;
499
- * while (i != end)
500
- * if (c_ == *i++)
501
- * return std::make_pair(i, true);
502
- * return std::make_pair(i, false);
503
- * }
504
- *
505
- * private:
506
- * char c_;
507
- * };
508
- *
509
- * namespace asio {
510
- * template <> struct is_match_condition<match_char>
511
- * : public boost::true_type {};
512
- * } // namespace asio
513
- * ...
514
- * std::string data;
515
- * boost::asio::read_until(s, data, match_char('a'));
516
- * @endcode
517
- */
518
- template <typename SyncReadStream,
519
- typename DynamicBuffer_v1, typename MatchCondition>
520
- std::size_t read_until(SyncReadStream& s,
521
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
522
- MatchCondition match_condition,
523
- typename constraint<
524
- is_match_condition<MatchCondition>::value
525
- >::type = 0,
526
- typename constraint<
527
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
528
- >::type = 0,
529
- typename constraint<
530
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
531
- >::type = 0);
532
-
533
- /// Read data into a dynamic buffer sequence until a function object indicates a
534
- /// match.
535
- /**
536
- * This function is used to read data into the specified dynamic buffer
537
- * sequence until a user-defined match condition function object, when applied
538
- * to the data contained in the dynamic buffer sequence, indicates a successful
539
- * match. The call will block until one of the following conditions is true:
540
- *
541
- * @li The match condition function object returns a std::pair where the second
542
- * element evaluates to true.
543
- *
544
- * @li An error occurred.
545
- *
546
- * This operation is implemented in terms of zero or more calls to the stream's
547
- * read_some function. If the match condition function object already indicates
548
- * a match, the function returns immediately.
549
- *
550
- * @param s The stream from which the data is to be read. The type must support
551
- * the SyncReadStream concept.
552
- *
553
- * @param buffers A dynamic buffer sequence into which the data will be read.
554
- *
555
- * @param match_condition The function object to be called to determine whether
556
- * a match exists. The signature of the function object must be:
557
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
558
- * @endcode
559
- * where @c iterator represents the type:
560
- * @code buffers_iterator<DynamicBuffer_v1::const_buffers_type>
561
- * @endcode
562
- * The iterator parameters @c begin and @c end define the range of bytes to be
563
- * scanned to determine whether there is a match. The @c first member of the
564
- * return value is an iterator marking one-past-the-end of the bytes that have
565
- * been consumed by the match function. This iterator is used to calculate the
566
- * @c begin parameter for any subsequent invocation of the match condition. The
567
- * @c second member of the return value is true if a match has been found, false
568
- * otherwise.
569
- *
570
- * @param ec Set to indicate what error occurred, if any.
571
- *
572
- * @returns The number of bytes in the dynamic buffer sequence's get area that
573
- * have been fully consumed by the match function. Returns 0 if an error
574
- * occurred.
575
- *
576
- * @note After a successful read_until operation, the dynamic buffer sequence
577
- * may contain additional data beyond that which matched the function object.
578
- * An application will typically leave that data in the dynamic buffer sequence
579
- * for a subsequent read_until operation to examine.
580
- *
581
- * @note The default implementation of the @c is_match_condition type trait
582
- * evaluates to true for function pointers and function objects with a
583
- * @c result_type typedef. It must be specialised for other user-defined
584
- * function objects.
585
- */
586
- template <typename SyncReadStream,
587
- typename DynamicBuffer_v1, typename MatchCondition>
588
- std::size_t read_until(SyncReadStream& s,
589
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
590
- MatchCondition match_condition, boost::system::error_code& ec,
591
- typename constraint<
592
- is_match_condition<MatchCondition>::value
593
- >::type = 0,
594
- typename constraint<
595
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
596
- >::type = 0,
597
- typename constraint<
598
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
599
- >::type = 0);
600
-
601
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
602
-
603
- /// Read data into a streambuf until it contains a specified delimiter.
604
- /**
605
- * This function is used to read data into the specified streambuf until the
606
- * streambuf's get area contains the specified delimiter. The call will block
607
- * until one of the following conditions is true:
608
- *
609
- * @li The get area of the streambuf contains the specified delimiter.
610
- *
611
- * @li An error occurred.
612
- *
613
- * This operation is implemented in terms of zero or more calls to the stream's
614
- * read_some function. If the streambuf's get area already contains the
615
- * delimiter, the function returns immediately.
616
- *
617
- * @param s The stream from which the data is to be read. The type must support
618
- * the SyncReadStream concept.
619
- *
620
- * @param b A streambuf object into which the data will be read.
621
- *
622
- * @param delim The delimiter character.
623
- *
624
- * @returns The number of bytes in the streambuf's get area up to and including
625
- * the delimiter.
626
- *
627
- * @throws boost::system::system_error Thrown on failure.
628
- *
629
- * @note After a successful read_until operation, the streambuf may contain
630
- * additional data beyond the delimiter. An application will typically leave
631
- * that data in the streambuf for a subsequent read_until operation to examine.
632
- *
633
- * @par Example
634
- * To read data into a streambuf until a newline is encountered:
635
- * @code boost::asio::streambuf b;
636
- * boost::asio::read_until(s, b, '\n');
637
- * std::istream is(&b);
638
- * std::string line;
639
- * std::getline(is, line); @endcode
640
- * After the @c read_until operation completes successfully, the buffer @c b
641
- * contains the delimiter:
642
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
643
- * The call to @c std::getline then extracts the data up to and including the
644
- * newline (which is discarded), so that the string @c line contains:
645
- * @code { 'a', 'b', ..., 'c' } @endcode
646
- * The remaining data is left in the buffer @c b as follows:
647
- * @code { 'd', 'e', ... } @endcode
648
- * This data may be the start of a new line, to be extracted by a subsequent
649
- * @c read_until operation.
650
- */
651
- template <typename SyncReadStream, typename Allocator>
652
- std::size_t read_until(SyncReadStream& s,
653
- boost::asio::basic_streambuf<Allocator>& b, char delim);
654
-
655
- /// Read data into a streambuf until it contains a specified delimiter.
656
- /**
657
- * This function is used to read data into the specified streambuf until the
658
- * streambuf's get area contains the specified delimiter. The call will block
659
- * until one of the following conditions is true:
660
- *
661
- * @li The get area of the streambuf contains the specified delimiter.
662
- *
663
- * @li An error occurred.
664
- *
665
- * This operation is implemented in terms of zero or more calls to the stream's
666
- * read_some function. If the streambuf's get area already contains the
667
- * delimiter, the function returns immediately.
668
- *
669
- * @param s The stream from which the data is to be read. The type must support
670
- * the SyncReadStream concept.
671
- *
672
- * @param b A streambuf object into which the data will be read.
673
- *
674
- * @param delim The delimiter character.
675
- *
676
- * @param ec Set to indicate what error occurred, if any.
677
- *
678
- * @returns The number of bytes in the streambuf's get area up to and including
679
- * the delimiter. Returns 0 if an error occurred.
680
- *
681
- * @note After a successful read_until operation, the streambuf may contain
682
- * additional data beyond the delimiter. An application will typically leave
683
- * that data in the streambuf for a subsequent read_until operation to examine.
684
- */
685
- template <typename SyncReadStream, typename Allocator>
686
- std::size_t read_until(SyncReadStream& s,
687
- boost::asio::basic_streambuf<Allocator>& b, char delim,
688
- boost::system::error_code& ec);
689
-
690
- /// Read data into a streambuf until it contains a specified delimiter.
691
- /**
692
- * This function is used to read data into the specified streambuf until the
693
- * streambuf's get area contains the specified delimiter. The call will block
694
- * until one of the following conditions is true:
695
- *
696
- * @li The get area of the streambuf contains the specified delimiter.
697
- *
698
- * @li An error occurred.
699
- *
700
- * This operation is implemented in terms of zero or more calls to the stream's
701
- * read_some function. If the streambuf's get area already contains the
702
- * delimiter, the function returns immediately.
703
- *
704
- * @param s The stream from which the data is to be read. The type must support
705
- * the SyncReadStream concept.
706
- *
707
- * @param b A streambuf object into which the data will be read.
708
- *
709
- * @param delim The delimiter string.
710
- *
711
- * @returns The number of bytes in the streambuf's get area up to and including
712
- * the delimiter.
713
- *
714
- * @throws boost::system::system_error Thrown on failure.
715
- *
716
- * @note After a successful read_until operation, the streambuf may contain
717
- * additional data beyond the delimiter. An application will typically leave
718
- * that data in the streambuf for a subsequent read_until operation to examine.
719
- *
720
- * @par Example
721
- * To read data into a streambuf until a newline is encountered:
722
- * @code boost::asio::streambuf b;
723
- * boost::asio::read_until(s, b, "\r\n");
724
- * std::istream is(&b);
725
- * std::string line;
726
- * std::getline(is, line); @endcode
727
- * After the @c read_until operation completes successfully, the buffer @c b
728
- * contains the delimiter:
729
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
730
- * The call to @c std::getline then extracts the data up to and including the
731
- * newline (which is discarded), so that the string @c line contains:
732
- * @code { 'a', 'b', ..., 'c', '\r' } @endcode
733
- * The remaining data is left in the buffer @c b as follows:
734
- * @code { 'd', 'e', ... } @endcode
735
- * This data may be the start of a new line, to be extracted by a subsequent
736
- * @c read_until operation.
737
- */
738
- template <typename SyncReadStream, typename Allocator>
739
- std::size_t read_until(SyncReadStream& s,
740
- boost::asio::basic_streambuf<Allocator>& b,
741
- BOOST_ASIO_STRING_VIEW_PARAM delim);
742
-
743
- /// Read data into a streambuf until it contains a specified delimiter.
744
- /**
745
- * This function is used to read data into the specified streambuf until the
746
- * streambuf's get area contains the specified delimiter. The call will block
747
- * until one of the following conditions is true:
748
- *
749
- * @li The get area of the streambuf contains the specified delimiter.
750
- *
751
- * @li An error occurred.
752
- *
753
- * This operation is implemented in terms of zero or more calls to the stream's
754
- * read_some function. If the streambuf's get area already contains the
755
- * delimiter, the function returns immediately.
756
- *
757
- * @param s The stream from which the data is to be read. The type must support
758
- * the SyncReadStream concept.
759
- *
760
- * @param b A streambuf object into which the data will be read.
761
- *
762
- * @param delim The delimiter string.
763
- *
764
- * @param ec Set to indicate what error occurred, if any.
765
- *
766
- * @returns The number of bytes in the streambuf's get area up to and including
767
- * the delimiter. Returns 0 if an error occurred.
768
- *
769
- * @note After a successful read_until operation, the streambuf may contain
770
- * additional data beyond the delimiter. An application will typically leave
771
- * that data in the streambuf for a subsequent read_until operation to examine.
772
- */
773
- template <typename SyncReadStream, typename Allocator>
774
- std::size_t read_until(SyncReadStream& s,
775
- boost::asio::basic_streambuf<Allocator>& b,
776
- BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec);
777
-
778
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
779
- || defined(GENERATING_DOCUMENTATION)
780
-
781
- /// Read data into a streambuf until some part of the data it contains matches
782
- /// a regular expression.
783
- /**
784
- * This function is used to read data into the specified streambuf until the
785
- * streambuf's get area contains some data that matches a regular expression.
786
- * The call will block until one of the following conditions is true:
787
- *
788
- * @li A substring of the streambuf's get area matches the regular expression.
789
- *
790
- * @li An error occurred.
791
- *
792
- * This operation is implemented in terms of zero or more calls to the stream's
793
- * read_some function. If the streambuf's get area already contains data that
794
- * matches the regular expression, the function returns immediately.
795
- *
796
- * @param s The stream from which the data is to be read. The type must support
797
- * the SyncReadStream concept.
798
- *
799
- * @param b A streambuf object into which the data will be read.
800
- *
801
- * @param expr The regular expression.
802
- *
803
- * @returns The number of bytes in the streambuf's get area up to and including
804
- * the substring that matches the regular expression.
805
- *
806
- * @throws boost::system::system_error Thrown on failure.
807
- *
808
- * @note After a successful read_until operation, the streambuf may contain
809
- * additional data beyond that which matched the regular expression. An
810
- * application will typically leave that data in the streambuf for a subsequent
811
- * read_until operation to examine.
812
- *
813
- * @par Example
814
- * To read data into a streambuf until a CR-LF sequence is encountered:
815
- * @code boost::asio::streambuf b;
816
- * boost::asio::read_until(s, b, boost::regex("\r\n"));
817
- * std::istream is(&b);
818
- * std::string line;
819
- * std::getline(is, line); @endcode
820
- * After the @c read_until operation completes successfully, the buffer @c b
821
- * contains the data which matched the regular expression:
822
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
823
- * The call to @c std::getline then extracts the data up to and including the
824
- * newline (which is discarded), so that the string @c line contains:
825
- * @code { 'a', 'b', ..., 'c', '\r' } @endcode
826
- * The remaining data is left in the buffer @c b as follows:
827
- * @code { 'd', 'e', ... } @endcode
828
- * This data may be the start of a new line, to be extracted by a subsequent
829
- * @c read_until operation.
830
- */
831
- template <typename SyncReadStream, typename Allocator>
832
- std::size_t read_until(SyncReadStream& s,
833
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
834
-
835
- /// Read data into a streambuf until some part of the data it contains matches
836
- /// a regular expression.
837
- /**
838
- * This function is used to read data into the specified streambuf until the
839
- * streambuf's get area contains some data that matches a regular expression.
840
- * The call will block until one of the following conditions is true:
841
- *
842
- * @li A substring of the streambuf's get area matches the regular expression.
843
- *
844
- * @li An error occurred.
845
- *
846
- * This operation is implemented in terms of zero or more calls to the stream's
847
- * read_some function. If the streambuf's get area already contains data that
848
- * matches the regular expression, the function returns immediately.
849
- *
850
- * @param s The stream from which the data is to be read. The type must support
851
- * the SyncReadStream concept.
852
- *
853
- * @param b A streambuf object into which the data will be read.
854
- *
855
- * @param expr The regular expression.
856
- *
857
- * @param ec Set to indicate what error occurred, if any.
858
- *
859
- * @returns The number of bytes in the streambuf's get area up to and including
860
- * the substring that matches the regular expression. Returns 0 if an error
861
- * occurred.
862
- *
863
- * @note After a successful read_until operation, the streambuf may contain
864
- * additional data beyond that which matched the regular expression. An
865
- * application will typically leave that data in the streambuf for a subsequent
866
- * read_until operation to examine.
867
- */
868
- template <typename SyncReadStream, typename Allocator>
869
- std::size_t read_until(SyncReadStream& s,
870
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
871
- boost::system::error_code& ec);
872
-
873
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
874
- // || defined(GENERATING_DOCUMENTATION)
875
-
876
- /// Read data into a streambuf until a function object indicates a match.
877
- /**
878
- * This function is used to read data into the specified streambuf until a
879
- * user-defined match condition function object, when applied to the data
880
- * contained in the streambuf, indicates a successful match. The call will
881
- * block until one of the following conditions is true:
882
- *
883
- * @li The match condition function object returns a std::pair where the second
884
- * element evaluates to true.
885
- *
886
- * @li An error occurred.
887
- *
888
- * This operation is implemented in terms of zero or more calls to the stream's
889
- * read_some function. If the match condition function object already indicates
890
- * a match, the function returns immediately.
891
- *
892
- * @param s The stream from which the data is to be read. The type must support
893
- * the SyncReadStream concept.
894
- *
895
- * @param b A streambuf object into which the data will be read.
896
- *
897
- * @param match_condition The function object to be called to determine whether
898
- * a match exists. The signature of the function object must be:
899
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
900
- * @endcode
901
- * where @c iterator represents the type:
902
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
903
- * @endcode
904
- * The iterator parameters @c begin and @c end define the range of bytes to be
905
- * scanned to determine whether there is a match. The @c first member of the
906
- * return value is an iterator marking one-past-the-end of the bytes that have
907
- * been consumed by the match function. This iterator is used to calculate the
908
- * @c begin parameter for any subsequent invocation of the match condition. The
909
- * @c second member of the return value is true if a match has been found, false
910
- * otherwise.
911
- *
912
- * @returns The number of bytes in the streambuf's get area that have been fully
913
- * consumed by the match function.
914
- *
915
- * @throws boost::system::system_error Thrown on failure.
916
- *
917
- * @note After a successful read_until operation, the streambuf may contain
918
- * additional data beyond that which matched the function object. An application
919
- * will typically leave that data in the streambuf for a subsequent read_until
920
- * operation to examine.
921
- *
922
- * @note The default implementation of the @c is_match_condition type trait
923
- * evaluates to true for function pointers and function objects with a
924
- * @c result_type typedef. It must be specialised for other user-defined
925
- * function objects.
926
- *
927
- * @par Examples
928
- * To read data into a streambuf until whitespace is encountered:
929
- * @code typedef boost::asio::buffers_iterator<
930
- * boost::asio::streambuf::const_buffers_type> iterator;
931
- *
932
- * std::pair<iterator, bool>
933
- * match_whitespace(iterator begin, iterator end)
934
- * {
935
- * iterator i = begin;
936
- * while (i != end)
937
- * if (std::isspace(*i++))
938
- * return std::make_pair(i, true);
939
- * return std::make_pair(i, false);
940
- * }
941
- * ...
942
- * boost::asio::streambuf b;
943
- * boost::asio::read_until(s, b, match_whitespace);
944
- * @endcode
945
- *
946
- * To read data into a streambuf until a matching character is found:
947
- * @code class match_char
948
- * {
949
- * public:
950
- * explicit match_char(char c) : c_(c) {}
951
- *
952
- * template <typename Iterator>
953
- * std::pair<Iterator, bool> operator()(
954
- * Iterator begin, Iterator end) const
955
- * {
956
- * Iterator i = begin;
957
- * while (i != end)
958
- * if (c_ == *i++)
959
- * return std::make_pair(i, true);
960
- * return std::make_pair(i, false);
961
- * }
962
- *
963
- * private:
964
- * char c_;
965
- * };
966
- *
967
- * namespace asio {
968
- * template <> struct is_match_condition<match_char>
969
- * : public boost::true_type {};
970
- * } // namespace asio
971
- * ...
972
- * boost::asio::streambuf b;
973
- * boost::asio::read_until(s, b, match_char('a'));
974
- * @endcode
975
- */
976
- template <typename SyncReadStream, typename Allocator, typename MatchCondition>
977
- std::size_t read_until(SyncReadStream& s,
978
- boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
979
- typename constraint<is_match_condition<MatchCondition>::value>::type = 0);
980
-
981
- /// Read data into a streambuf until a function object indicates a match.
982
- /**
983
- * This function is used to read data into the specified streambuf until a
984
- * user-defined match condition function object, when applied to the data
985
- * contained in the streambuf, indicates a successful match. The call will
986
- * block until one of the following conditions is true:
987
- *
988
- * @li The match condition function object returns a std::pair where the second
989
- * element evaluates to true.
990
- *
991
- * @li An error occurred.
992
- *
993
- * This operation is implemented in terms of zero or more calls to the stream's
994
- * read_some function. If the match condition function object already indicates
995
- * a match, the function returns immediately.
996
- *
997
- * @param s The stream from which the data is to be read. The type must support
998
- * the SyncReadStream concept.
999
- *
1000
- * @param b A streambuf object into which the data will be read.
1001
- *
1002
- * @param match_condition The function object to be called to determine whether
1003
- * a match exists. The signature of the function object must be:
1004
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1005
- * @endcode
1006
- * where @c iterator represents the type:
1007
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
1008
- * @endcode
1009
- * The iterator parameters @c begin and @c end define the range of bytes to be
1010
- * scanned to determine whether there is a match. The @c first member of the
1011
- * return value is an iterator marking one-past-the-end of the bytes that have
1012
- * been consumed by the match function. This iterator is used to calculate the
1013
- * @c begin parameter for any subsequent invocation of the match condition. The
1014
- * @c second member of the return value is true if a match has been found, false
1015
- * otherwise.
1016
- *
1017
- * @param ec Set to indicate what error occurred, if any.
1018
- *
1019
- * @returns The number of bytes in the streambuf's get area that have been fully
1020
- * consumed by the match function. Returns 0 if an error occurred.
1021
- *
1022
- * @note After a successful read_until operation, the streambuf may contain
1023
- * additional data beyond that which matched the function object. An application
1024
- * will typically leave that data in the streambuf for a subsequent read_until
1025
- * operation to examine.
1026
- *
1027
- * @note The default implementation of the @c is_match_condition type trait
1028
- * evaluates to true for function pointers and function objects with a
1029
- * @c result_type typedef. It must be specialised for other user-defined
1030
- * function objects.
1031
- */
1032
- template <typename SyncReadStream, typename Allocator, typename MatchCondition>
1033
- std::size_t read_until(SyncReadStream& s,
1034
- boost::asio::basic_streambuf<Allocator>& b,
1035
- MatchCondition match_condition, boost::system::error_code& ec,
1036
- typename constraint<is_match_condition<MatchCondition>::value>::type = 0);
1037
-
1038
- #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
1039
- #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1040
- #endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1041
-
1042
- /// Read data into a dynamic buffer sequence until it contains a specified
1043
- /// delimiter.
1044
- /**
1045
- * This function is used to read data into the specified dynamic buffer
1046
- * sequence until the dynamic buffer sequence's get area contains the specified
1047
- * delimiter. The call will block until one of the following conditions is
1048
- * true:
1049
- *
1050
- * @li The get area of the dynamic buffer sequence contains the specified
1051
- * delimiter.
1052
- *
1053
- * @li An error occurred.
1054
- *
1055
- * This operation is implemented in terms of zero or more calls to the stream's
1056
- * read_some function. If the dynamic buffer sequence's get area already
1057
- * contains the delimiter, the function returns immediately.
1058
- *
1059
- * @param s The stream from which the data is to be read. The type must support
1060
- * the SyncReadStream concept.
1061
- *
1062
- * @param buffers The dynamic buffer sequence into which the data will be read.
1063
- *
1064
- * @param delim The delimiter character.
1065
- *
1066
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
1067
- * and including the delimiter.
1068
- *
1069
- * @throws boost::system::system_error Thrown on failure.
1070
- *
1071
- * @note After a successful read_until operation, the dynamic buffer sequence
1072
- * may contain additional data beyond the delimiter. An application will
1073
- * typically leave that data in the dynamic buffer sequence for a subsequent
1074
- * read_until operation to examine.
1075
- *
1076
- * @par Example
1077
- * To read data into a @c std::string until a newline is encountered:
1078
- * @code std::string data;
1079
- * std::size_t n = boost::asio::read_until(s,
1080
- * boost::asio::dynamic_buffer(data), '\n');
1081
- * std::string line = data.substr(0, n);
1082
- * data.erase(0, n); @endcode
1083
- * After the @c read_until operation completes successfully, the string @c data
1084
- * contains the delimiter:
1085
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1086
- * The call to @c substr then extracts the data up to and including the
1087
- * delimiter, so that the string @c line contains:
1088
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1089
- * After the call to @c erase, the remaining data is left in the buffer @c b as
1090
- * follows:
1091
- * @code { 'd', 'e', ... } @endcode
1092
- * This data may be the start of a new line, to be extracted by a subsequent
1093
- * @c read_until operation.
1094
- */
1095
- template <typename SyncReadStream, typename DynamicBuffer_v2>
1096
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
1097
- typename constraint<
1098
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1099
- >::type = 0);
1100
-
1101
- /// Read data into a dynamic buffer sequence until it contains a specified
1102
- /// delimiter.
1103
- /**
1104
- * This function is used to read data into the specified dynamic buffer
1105
- * sequence until the dynamic buffer sequence's get area contains the specified
1106
- * delimiter. The call will block until one of the following conditions is
1107
- * true:
1108
- *
1109
- * @li The get area of the dynamic buffer sequence contains the specified
1110
- * delimiter.
1111
- *
1112
- * @li An error occurred.
1113
- *
1114
- * This operation is implemented in terms of zero or more calls to the stream's
1115
- * read_some function. If the dynamic buffer sequence's get area already
1116
- * contains the delimiter, the function returns immediately.
1117
- *
1118
- * @param s The stream from which the data is to be read. The type must support
1119
- * the SyncReadStream concept.
1120
- *
1121
- * @param buffers The dynamic buffer sequence into which the data will be read.
1122
- *
1123
- * @param delim The delimiter character.
1124
- *
1125
- * @param ec Set to indicate what error occurred, if any.
1126
- *
1127
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
1128
- * and including the delimiter. Returns 0 if an error occurred.
1129
- *
1130
- * @note After a successful read_until operation, the dynamic buffer sequence
1131
- * may contain additional data beyond the delimiter. An application will
1132
- * typically leave that data in the dynamic buffer sequence for a subsequent
1133
- * read_until operation to examine.
1134
- */
1135
- template <typename SyncReadStream, typename DynamicBuffer_v2>
1136
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1137
- char delim, boost::system::error_code& ec,
1138
- typename constraint<
1139
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1140
- >::type = 0);
1141
-
1142
- /// Read data into a dynamic buffer sequence until it contains a specified
1143
- /// delimiter.
1144
- /**
1145
- * This function is used to read data into the specified dynamic buffer
1146
- * sequence until the dynamic buffer sequence's get area contains the specified
1147
- * delimiter. The call will block until one of the following conditions is
1148
- * true:
1149
- *
1150
- * @li The get area of the dynamic buffer sequence contains the specified
1151
- * delimiter.
1152
- *
1153
- * @li An error occurred.
1154
- *
1155
- * This operation is implemented in terms of zero or more calls to the stream's
1156
- * read_some function. If the dynamic buffer sequence's get area already
1157
- * contains the delimiter, the function returns immediately.
1158
- *
1159
- * @param s The stream from which the data is to be read. The type must support
1160
- * the SyncReadStream concept.
1161
- *
1162
- * @param buffers The dynamic buffer sequence into which the data will be read.
1163
- *
1164
- * @param delim The delimiter string.
1165
- *
1166
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
1167
- * and including the delimiter.
1168
- *
1169
- * @note After a successful read_until operation, the dynamic buffer sequence
1170
- * may contain additional data beyond the delimiter. An application will
1171
- * typically leave that data in the dynamic buffer sequence for a subsequent
1172
- * read_until operation to examine.
1173
- *
1174
- * @par Example
1175
- * To read data into a @c std::string until a CR-LF sequence is encountered:
1176
- * @code std::string data;
1177
- * std::size_t n = boost::asio::read_until(s,
1178
- * boost::asio::dynamic_buffer(data), "\r\n");
1179
- * std::string line = data.substr(0, n);
1180
- * data.erase(0, n); @endcode
1181
- * After the @c read_until operation completes successfully, the string @c data
1182
- * contains the delimiter:
1183
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1184
- * The call to @c substr then extracts the data up to and including the
1185
- * delimiter, so that the string @c line contains:
1186
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1187
- * After the call to @c erase, the remaining data is left in the buffer @c b as
1188
- * follows:
1189
- * @code { 'd', 'e', ... } @endcode
1190
- * This data may be the start of a new line, to be extracted by a subsequent
1191
- * @c read_until operation.
1192
- */
1193
- template <typename SyncReadStream, typename DynamicBuffer_v2>
1194
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1195
- BOOST_ASIO_STRING_VIEW_PARAM delim,
1196
- typename constraint<
1197
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1198
- >::type = 0);
1199
-
1200
- /// Read data into a dynamic buffer sequence until it contains a specified
1201
- /// delimiter.
1202
- /**
1203
- * This function is used to read data into the specified dynamic buffer
1204
- * sequence until the dynamic buffer sequence's get area contains the specified
1205
- * delimiter. The call will block until one of the following conditions is
1206
- * true:
1207
- *
1208
- * @li The get area of the dynamic buffer sequence contains the specified
1209
- * delimiter.
1210
- *
1211
- * @li An error occurred.
1212
- *
1213
- * This operation is implemented in terms of zero or more calls to the stream's
1214
- * read_some function. If the dynamic buffer sequence's get area already
1215
- * contains the delimiter, the function returns immediately.
1216
- *
1217
- * @param s The stream from which the data is to be read. The type must support
1218
- * the SyncReadStream concept.
1219
- *
1220
- * @param buffers The dynamic buffer sequence into which the data will be read.
1221
- *
1222
- * @param delim The delimiter string.
1223
- *
1224
- * @param ec Set to indicate what error occurred, if any.
1225
- *
1226
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
1227
- * and including the delimiter. Returns 0 if an error occurred.
1228
- *
1229
- * @note After a successful read_until operation, the dynamic buffer sequence
1230
- * may contain additional data beyond the delimiter. An application will
1231
- * typically leave that data in the dynamic buffer sequence for a subsequent
1232
- * read_until operation to examine.
1233
- */
1234
- template <typename SyncReadStream, typename DynamicBuffer_v2>
1235
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1236
- BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec,
1237
- typename constraint<
1238
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1239
- >::type = 0);
1240
-
1241
- #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1242
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1243
- || defined(GENERATING_DOCUMENTATION)
1244
-
1245
- /// Read data into a dynamic buffer sequence until some part of the data it
1246
- /// contains matches a regular expression.
1247
- /**
1248
- * This function is used to read data into the specified dynamic buffer
1249
- * sequence until the dynamic buffer sequence's get area contains some data
1250
- * that matches a regular expression. The call will block until one of the
1251
- * following conditions is true:
1252
- *
1253
- * @li A substring of the dynamic buffer sequence's get area matches the
1254
- * regular expression.
1255
- *
1256
- * @li An error occurred.
1257
- *
1258
- * This operation is implemented in terms of zero or more calls to the stream's
1259
- * read_some function. If the dynamic buffer sequence's get area already
1260
- * contains data that matches the regular expression, the function returns
1261
- * immediately.
1262
- *
1263
- * @param s The stream from which the data is to be read. The type must support
1264
- * the SyncReadStream concept.
1265
- *
1266
- * @param buffers A dynamic buffer sequence into which the data will be read.
1267
- *
1268
- * @param expr The regular expression.
1269
- *
1270
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
1271
- * and including the substring that matches the regular expression.
1272
- *
1273
- * @throws boost::system::system_error Thrown on failure.
1274
- *
1275
- * @note After a successful read_until operation, the dynamic buffer sequence
1276
- * may contain additional data beyond that which matched the regular
1277
- * expression. An application will typically leave that data in the dynamic
1278
- * buffer sequence for a subsequent read_until operation to examine.
1279
- *
1280
- * @par Example
1281
- * To read data into a @c std::string until a CR-LF sequence is encountered:
1282
- * @code std::string data;
1283
- * std::size_t n = boost::asio::read_until(s,
1284
- * boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
1285
- * std::string line = data.substr(0, n);
1286
- * data.erase(0, n); @endcode
1287
- * After the @c read_until operation completes successfully, the string @c data
1288
- * contains the delimiter:
1289
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1290
- * The call to @c substr then extracts the data up to and including the
1291
- * delimiter, so that the string @c line contains:
1292
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1293
- * After the call to @c erase, the remaining data is left in the buffer @c b as
1294
- * follows:
1295
- * @code { 'd', 'e', ... } @endcode
1296
- * This data may be the start of a new line, to be extracted by a subsequent
1297
- * @c read_until operation.
1298
- */
1299
- template <typename SyncReadStream, typename DynamicBuffer_v2>
1300
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1301
- const boost::regex& expr,
1302
- typename constraint<
1303
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1304
- >::type = 0);
1305
-
1306
- /// Read data into a dynamic buffer sequence until some part of the data it
1307
- /// contains matches a regular expression.
1308
- /**
1309
- * This function is used to read data into the specified dynamic buffer
1310
- * sequence until the dynamic buffer sequence's get area contains some data
1311
- * that matches a regular expression. The call will block until one of the
1312
- * following conditions is true:
1313
- *
1314
- * @li A substring of the dynamic buffer sequence's get area matches the
1315
- * regular expression.
1316
- *
1317
- * @li An error occurred.
1318
- *
1319
- * This operation is implemented in terms of zero or more calls to the stream's
1320
- * read_some function. If the dynamic buffer sequence's get area already
1321
- * contains data that matches the regular expression, the function returns
1322
- * immediately.
1323
- *
1324
- * @param s The stream from which the data is to be read. The type must support
1325
- * the SyncReadStream concept.
1326
- *
1327
- * @param buffers A dynamic buffer sequence into which the data will be read.
1328
- *
1329
- * @param expr The regular expression.
1330
- *
1331
- * @param ec Set to indicate what error occurred, if any.
1332
- *
1333
- * @returns The number of bytes in the dynamic buffer sequence's get area up to
1334
- * and including the substring that matches the regular expression. Returns 0
1335
- * if an error occurred.
1336
- *
1337
- * @note After a successful read_until operation, the dynamic buffer sequence
1338
- * may contain additional data beyond that which matched the regular
1339
- * expression. An application will typically leave that data in the dynamic
1340
- * buffer sequence for a subsequent read_until operation to examine.
1341
- */
1342
- template <typename SyncReadStream, typename DynamicBuffer_v2>
1343
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1344
- const boost::regex& expr, boost::system::error_code& ec,
1345
- typename constraint<
1346
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1347
- >::type = 0);
1348
-
1349
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1350
- // || defined(GENERATING_DOCUMENTATION)
1351
-
1352
- /// Read data into a dynamic buffer sequence until a function object indicates a
1353
- /// match.
1354
-
1355
- /**
1356
- * This function is used to read data into the specified dynamic buffer
1357
- * sequence until a user-defined match condition function object, when applied
1358
- * to the data contained in the dynamic buffer sequence, indicates a successful
1359
- * match. The call will block until one of the following conditions is true:
1360
- *
1361
- * @li The match condition function object returns a std::pair where the second
1362
- * element evaluates to true.
1363
- *
1364
- * @li An error occurred.
1365
- *
1366
- * This operation is implemented in terms of zero or more calls to the stream's
1367
- * read_some function. If the match condition function object already indicates
1368
- * a match, the function returns immediately.
1369
- *
1370
- * @param s The stream from which the data is to be read. The type must support
1371
- * the SyncReadStream concept.
1372
- *
1373
- * @param buffers A dynamic buffer sequence into which the data will be read.
1374
- *
1375
- * @param match_condition The function object to be called to determine whether
1376
- * a match exists. The signature of the function object must be:
1377
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1378
- * @endcode
1379
- * where @c iterator represents the type:
1380
- * @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
1381
- * @endcode
1382
- * The iterator parameters @c begin and @c end define the range of bytes to be
1383
- * scanned to determine whether there is a match. The @c first member of the
1384
- * return value is an iterator marking one-past-the-end of the bytes that have
1385
- * been consumed by the match function. This iterator is used to calculate the
1386
- * @c begin parameter for any subsequent invocation of the match condition. The
1387
- * @c second member of the return value is true if a match has been found, false
1388
- * otherwise.
1389
- *
1390
- * @returns The number of bytes in the dynamic_buffer's get area that
1391
- * have been fully consumed by the match function.
1392
- *
1393
- * @throws boost::system::system_error Thrown on failure.
1394
- *
1395
- * @note After a successful read_until operation, the dynamic buffer sequence
1396
- * may contain additional data beyond that which matched the function object.
1397
- * An application will typically leave that data in the dynamic buffer sequence
1398
- * for a subsequent read_until operation to examine.
1399
-
1400
- * @note The default implementation of the @c is_match_condition type trait
1401
- * evaluates to true for function pointers and function objects with a
1402
- * @c result_type typedef. It must be specialised for other user-defined
1403
- * function objects.
1404
- *
1405
- * @par Examples
1406
- * To read data into a dynamic buffer sequence until whitespace is encountered:
1407
- * @code typedef boost::asio::buffers_iterator<
1408
- * boost::asio::const_buffers_1> iterator;
1409
- *
1410
- * std::pair<iterator, bool>
1411
- * match_whitespace(iterator begin, iterator end)
1412
- * {
1413
- * iterator i = begin;
1414
- * while (i != end)
1415
- * if (std::isspace(*i++))
1416
- * return std::make_pair(i, true);
1417
- * return std::make_pair(i, false);
1418
- * }
1419
- * ...
1420
- * std::string data;
1421
- * boost::asio::read_until(s, data, match_whitespace);
1422
- * @endcode
1423
- *
1424
- * To read data into a @c std::string until a matching character is found:
1425
- * @code class match_char
1426
- * {
1427
- * public:
1428
- * explicit match_char(char c) : c_(c) {}
1429
- *
1430
- * template <typename Iterator>
1431
- * std::pair<Iterator, bool> operator()(
1432
- * Iterator begin, Iterator end) const
1433
- * {
1434
- * Iterator i = begin;
1435
- * while (i != end)
1436
- * if (c_ == *i++)
1437
- * return std::make_pair(i, true);
1438
- * return std::make_pair(i, false);
1439
- * }
1440
- *
1441
- * private:
1442
- * char c_;
1443
- * };
1444
- *
1445
- * namespace asio {
1446
- * template <> struct is_match_condition<match_char>
1447
- * : public boost::true_type {};
1448
- * } // namespace asio
1449
- * ...
1450
- * std::string data;
1451
- * boost::asio::read_until(s, data, match_char('a'));
1452
- * @endcode
1453
- */
1454
- template <typename SyncReadStream,
1455
- typename DynamicBuffer_v2, typename MatchCondition>
1456
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1457
- MatchCondition match_condition,
1458
- typename constraint<
1459
- is_match_condition<MatchCondition>::value
1460
- >::type = 0,
1461
- typename constraint<
1462
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1463
- >::type = 0);
1464
-
1465
- /// Read data into a dynamic buffer sequence until a function object indicates a
1466
- /// match.
1467
- /**
1468
- * This function is used to read data into the specified dynamic buffer
1469
- * sequence until a user-defined match condition function object, when applied
1470
- * to the data contained in the dynamic buffer sequence, indicates a successful
1471
- * match. The call will block until one of the following conditions is true:
1472
- *
1473
- * @li The match condition function object returns a std::pair where the second
1474
- * element evaluates to true.
1475
- *
1476
- * @li An error occurred.
1477
- *
1478
- * This operation is implemented in terms of zero or more calls to the stream's
1479
- * read_some function. If the match condition function object already indicates
1480
- * a match, the function returns immediately.
1481
- *
1482
- * @param s The stream from which the data is to be read. The type must support
1483
- * the SyncReadStream concept.
1484
- *
1485
- * @param buffers A dynamic buffer sequence into which the data will be read.
1486
- *
1487
- * @param match_condition The function object to be called to determine whether
1488
- * a match exists. The signature of the function object must be:
1489
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1490
- * @endcode
1491
- * where @c iterator represents the type:
1492
- * @code buffers_iterator<DynamicBuffer_v2::const_buffers_type>
1493
- * @endcode
1494
- * The iterator parameters @c begin and @c end define the range of bytes to be
1495
- * scanned to determine whether there is a match. The @c first member of the
1496
- * return value is an iterator marking one-past-the-end of the bytes that have
1497
- * been consumed by the match function. This iterator is used to calculate the
1498
- * @c begin parameter for any subsequent invocation of the match condition. The
1499
- * @c second member of the return value is true if a match has been found, false
1500
- * otherwise.
1501
- *
1502
- * @param ec Set to indicate what error occurred, if any.
1503
- *
1504
- * @returns The number of bytes in the dynamic buffer sequence's get area that
1505
- * have been fully consumed by the match function. Returns 0 if an error
1506
- * occurred.
1507
- *
1508
- * @note After a successful read_until operation, the dynamic buffer sequence
1509
- * may contain additional data beyond that which matched the function object.
1510
- * An application will typically leave that data in the dynamic buffer sequence
1511
- * for a subsequent read_until operation to examine.
1512
- *
1513
- * @note The default implementation of the @c is_match_condition type trait
1514
- * evaluates to true for function pointers and function objects with a
1515
- * @c result_type typedef. It must be specialised for other user-defined
1516
- * function objects.
1517
- */
1518
- template <typename SyncReadStream,
1519
- typename DynamicBuffer_v2, typename MatchCondition>
1520
- std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1521
- MatchCondition match_condition, boost::system::error_code& ec,
1522
- typename constraint<
1523
- is_match_condition<MatchCondition>::value
1524
- >::type = 0,
1525
- typename constraint<
1526
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1527
- >::type = 0);
1528
-
1529
- #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1530
-
1531
- /*@}*/
1532
- /**
1533
- * @defgroup async_read_until boost::asio::async_read_until
1534
- *
1535
- * @brief The @c async_read_until function is a composed asynchronous operation
1536
- * that reads data into a dynamic buffer sequence, or into a streambuf, until
1537
- * it contains a delimiter, matches a regular expression, or a function object
1538
- * indicates a match.
1539
- */
1540
- /*@{*/
1541
-
1542
- #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1543
-
1544
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1545
- /// until it contains a specified delimiter.
1546
- /**
1547
- * This function is used to asynchronously read data into the specified dynamic
1548
- * buffer sequence until the dynamic buffer sequence's get area contains the
1549
- * specified delimiter. The function call always returns immediately. The
1550
- * asynchronous operation will continue until one of the following conditions
1551
- * is true:
1552
- *
1553
- * @li The get area of the dynamic buffer sequence contains the specified
1554
- * delimiter.
1555
- *
1556
- * @li An error occurred.
1557
- *
1558
- * This operation is implemented in terms of zero or more calls to the stream's
1559
- * async_read_some function, and is known as a <em>composed operation</em>. If
1560
- * the dynamic buffer sequence's get area already contains the delimiter, this
1561
- * asynchronous operation completes immediately. The program must ensure that
1562
- * the stream performs no other read operations (such as async_read,
1563
- * async_read_until, the stream's async_read_some function, or any other
1564
- * composed operations that perform reads) until this operation completes.
1565
- *
1566
- * @param s The stream from which the data is to be read. The type must support
1567
- * the AsyncReadStream concept.
1568
- *
1569
- * @param buffers The dynamic buffer sequence into which the data will be read.
1570
- * Although the buffers object may be copied as necessary, ownership of the
1571
- * underlying memory blocks is retained by the caller, which must guarantee
1572
- * that they remain valid until the handler is called.
1573
- *
1574
- * @param delim The delimiter character.
1575
- *
1576
- * @param handler The handler to be called when the read operation completes.
1577
- * Copies will be made of the handler as required. The function signature of the
1578
- * handler must be:
1579
- * @code void handler(
1580
- * // Result of operation.
1581
- * const boost::system::error_code& error,
1582
- *
1583
- * // The number of bytes in the dynamic buffer sequence's
1584
- * // get area up to and including the delimiter.
1585
- * // 0 if an error occurred.
1586
- * std::size_t bytes_transferred
1587
- * ); @endcode
1588
- * Regardless of whether the asynchronous operation completes immediately or
1589
- * not, the handler will not be invoked from within this function. On
1590
- * immediate completion, invocation of the handler will be performed in a
1591
- * manner equivalent to using boost::asio::post().
1592
- *
1593
- * @note After a successful async_read_until operation, the dynamic buffer
1594
- * sequence may contain additional data beyond the delimiter. An application
1595
- * will typically leave that data in the dynamic buffer sequence for a
1596
- * subsequent async_read_until operation to examine.
1597
- *
1598
- * @par Example
1599
- * To asynchronously read data into a @c std::string until a newline is
1600
- * encountered:
1601
- * @code std::string data;
1602
- * ...
1603
- * void handler(const boost::system::error_code& e, std::size_t size)
1604
- * {
1605
- * if (!e)
1606
- * {
1607
- * std::string line = data.substr(0, n);
1608
- * data.erase(0, n);
1609
- * ...
1610
- * }
1611
- * }
1612
- * ...
1613
- * boost::asio::async_read_until(s, data, '\n', handler); @endcode
1614
- * After the @c async_read_until operation completes successfully, the buffer
1615
- * @c data contains the delimiter:
1616
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1617
- * The call to @c substr then extracts the data up to and including the
1618
- * delimiter, so that the string @c line contains:
1619
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1620
- * After the call to @c erase, the remaining data is left in the buffer @c data
1621
- * as follows:
1622
- * @code { 'd', 'e', ... } @endcode
1623
- * This data may be the start of a new line, to be extracted by a subsequent
1624
- * @c async_read_until operation.
1625
- *
1626
- * @par Per-Operation Cancellation
1627
- * This asynchronous operation supports cancellation for the following
1628
- * boost::asio::cancellation_type values:
1629
- *
1630
- * @li @c cancellation_type::terminal
1631
- *
1632
- * @li @c cancellation_type::partial
1633
- *
1634
- * if they are also supported by the @c AsyncReadStream type's
1635
- * @c async_read_some operation.
1636
- */
1637
- template <typename AsyncReadStream, typename DynamicBuffer_v1,
1638
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1639
- std::size_t)) ReadHandler
1640
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1641
- typename AsyncReadStream::executor_type)>
1642
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1643
- void (boost::system::error_code, std::size_t))
1644
- async_read_until(AsyncReadStream& s,
1645
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
1646
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1647
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1648
- typename AsyncReadStream::executor_type),
1649
- typename constraint<
1650
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1651
- >::type = 0,
1652
- typename constraint<
1653
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1654
- >::type = 0);
1655
-
1656
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1657
- /// until it contains a specified delimiter.
1658
- /**
1659
- * This function is used to asynchronously read data into the specified dynamic
1660
- * buffer sequence until the dynamic buffer sequence's get area contains the
1661
- * specified delimiter. The function call always returns immediately. The
1662
- * asynchronous operation will continue until one of the following conditions
1663
- * is true:
1664
- *
1665
- * @li The get area of the dynamic buffer sequence contains the specified
1666
- * delimiter.
1667
- *
1668
- * @li An error occurred.
1669
- *
1670
- * This operation is implemented in terms of zero or more calls to the stream's
1671
- * async_read_some function, and is known as a <em>composed operation</em>. If
1672
- * the dynamic buffer sequence's get area already contains the delimiter, this
1673
- * asynchronous operation completes immediately. The program must ensure that
1674
- * the stream performs no other read operations (such as async_read,
1675
- * async_read_until, the stream's async_read_some function, or any other
1676
- * composed operations that perform reads) until this operation completes.
1677
- *
1678
- * @param s The stream from which the data is to be read. The type must support
1679
- * the AsyncReadStream concept.
1680
- *
1681
- * @param buffers The dynamic buffer sequence into which the data will be read.
1682
- * Although the buffers object may be copied as necessary, ownership of the
1683
- * underlying memory blocks is retained by the caller, which must guarantee
1684
- * that they remain valid until the handler is called.
1685
- *
1686
- * @param delim The delimiter string.
1687
- *
1688
- * @param handler The handler to be called when the read operation completes.
1689
- * Copies will be made of the handler as required. The function signature of the
1690
- * handler must be:
1691
- * @code void handler(
1692
- * // Result of operation.
1693
- * const boost::system::error_code& error,
1694
- *
1695
- * // The number of bytes in the dynamic buffer sequence's
1696
- * // get area up to and including the delimiter.
1697
- * // 0 if an error occurred.
1698
- * std::size_t bytes_transferred
1699
- * ); @endcode
1700
- * Regardless of whether the asynchronous operation completes immediately or
1701
- * not, the handler will not be invoked from within this function. On
1702
- * immediate completion, invocation of the handler will be performed in a
1703
- * manner equivalent to using boost::asio::post().
1704
- *
1705
- * @note After a successful async_read_until operation, the dynamic buffer
1706
- * sequence may contain additional data beyond the delimiter. An application
1707
- * will typically leave that data in the dynamic buffer sequence for a
1708
- * subsequent async_read_until operation to examine.
1709
- *
1710
- * @par Example
1711
- * To asynchronously read data into a @c std::string until a CR-LF sequence is
1712
- * encountered:
1713
- * @code std::string data;
1714
- * ...
1715
- * void handler(const boost::system::error_code& e, std::size_t size)
1716
- * {
1717
- * if (!e)
1718
- * {
1719
- * std::string line = data.substr(0, n);
1720
- * data.erase(0, n);
1721
- * ...
1722
- * }
1723
- * }
1724
- * ...
1725
- * boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
1726
- * After the @c async_read_until operation completes successfully, the string
1727
- * @c data contains the delimiter:
1728
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1729
- * The call to @c substr then extracts the data up to and including the
1730
- * delimiter, so that the string @c line contains:
1731
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1732
- * After the call to @c erase, the remaining data is left in the string @c data
1733
- * as follows:
1734
- * @code { 'd', 'e', ... } @endcode
1735
- * This data may be the start of a new line, to be extracted by a subsequent
1736
- * @c async_read_until operation.
1737
- *
1738
- * @par Per-Operation Cancellation
1739
- * This asynchronous operation supports cancellation for the following
1740
- * boost::asio::cancellation_type values:
1741
- *
1742
- * @li @c cancellation_type::terminal
1743
- *
1744
- * @li @c cancellation_type::partial
1745
- *
1746
- * if they are also supported by the @c AsyncReadStream type's
1747
- * @c async_read_some operation.
1748
- */
1749
- template <typename AsyncReadStream, typename DynamicBuffer_v1,
1750
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1751
- std::size_t)) ReadHandler
1752
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1753
- typename AsyncReadStream::executor_type)>
1754
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1755
- void (boost::system::error_code, std::size_t))
1756
- async_read_until(AsyncReadStream& s,
1757
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1758
- BOOST_ASIO_STRING_VIEW_PARAM delim,
1759
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1760
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1761
- typename AsyncReadStream::executor_type),
1762
- typename constraint<
1763
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1764
- >::type = 0,
1765
- typename constraint<
1766
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1767
- >::type = 0);
1768
-
1769
- #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1770
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1771
- || defined(GENERATING_DOCUMENTATION)
1772
-
1773
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1774
- /// until some part of its data matches a regular expression.
1775
- /**
1776
- * This function is used to asynchronously read data into the specified dynamic
1777
- * buffer sequence until the dynamic buffer sequence's get area contains some
1778
- * data that matches a regular expression. The function call always returns
1779
- * immediately. The asynchronous operation will continue until one of the
1780
- * following conditions is true:
1781
- *
1782
- * @li A substring of the dynamic buffer sequence's get area matches the regular
1783
- * expression.
1784
- *
1785
- * @li An error occurred.
1786
- *
1787
- * This operation is implemented in terms of zero or more calls to the stream's
1788
- * async_read_some function, and is known as a <em>composed operation</em>. If
1789
- * the dynamic buffer sequence's get area already contains data that matches
1790
- * the regular expression, this asynchronous operation completes immediately.
1791
- * The program must ensure that the stream performs no other read operations
1792
- * (such as async_read, async_read_until, the stream's async_read_some
1793
- * function, or any other composed operations that perform reads) until this
1794
- * operation completes.
1795
- *
1796
- * @param s The stream from which the data is to be read. The type must support
1797
- * the AsyncReadStream concept.
1798
- *
1799
- * @param buffers The dynamic buffer sequence into which the data will be read.
1800
- * Although the buffers object may be copied as necessary, ownership of the
1801
- * underlying memory blocks is retained by the caller, which must guarantee
1802
- * that they remain valid until the handler is called.
1803
- *
1804
- * @param expr The regular expression.
1805
- *
1806
- * @param handler The handler to be called when the read operation completes.
1807
- * Copies will be made of the handler as required. The function signature of the
1808
- * handler must be:
1809
- * @code void handler(
1810
- * // Result of operation.
1811
- * const boost::system::error_code& error,
1812
- *
1813
- * // The number of bytes in the dynamic buffer
1814
- * // sequence's get area up to and including the
1815
- * // substring that matches the regular expression.
1816
- * // 0 if an error occurred.
1817
- * std::size_t bytes_transferred
1818
- * ); @endcode
1819
- * Regardless of whether the asynchronous operation completes immediately or
1820
- * not, the handler will not be invoked from within this function. On
1821
- * immediate completion, invocation of the handler will be performed in a
1822
- * manner equivalent to using boost::asio::post().
1823
- *
1824
- * @note After a successful async_read_until operation, the dynamic buffer
1825
- * sequence may contain additional data beyond that which matched the regular
1826
- * expression. An application will typically leave that data in the dynamic
1827
- * buffer sequence for a subsequent async_read_until operation to examine.
1828
- *
1829
- * @par Example
1830
- * To asynchronously read data into a @c std::string until a CR-LF sequence is
1831
- * encountered:
1832
- * @code std::string data;
1833
- * ...
1834
- * void handler(const boost::system::error_code& e, std::size_t size)
1835
- * {
1836
- * if (!e)
1837
- * {
1838
- * std::string line = data.substr(0, n);
1839
- * data.erase(0, n);
1840
- * ...
1841
- * }
1842
- * }
1843
- * ...
1844
- * boost::asio::async_read_until(s, data,
1845
- * boost::regex("\r\n"), handler); @endcode
1846
- * After the @c async_read_until operation completes successfully, the string
1847
- * @c data contains the data which matched the regular expression:
1848
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1849
- * The call to @c substr then extracts the data up to and including the match,
1850
- * so that the string @c line contains:
1851
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1852
- * After the call to @c erase, the remaining data is left in the string @c data
1853
- * as follows:
1854
- * @code { 'd', 'e', ... } @endcode
1855
- * This data may be the start of a new line, to be extracted by a subsequent
1856
- * @c async_read_until operation.
1857
- *
1858
- * @par Per-Operation Cancellation
1859
- * This asynchronous operation supports cancellation for the following
1860
- * boost::asio::cancellation_type values:
1861
- *
1862
- * @li @c cancellation_type::terminal
1863
- *
1864
- * @li @c cancellation_type::partial
1865
- *
1866
- * if they are also supported by the @c AsyncReadStream type's
1867
- * @c async_read_some operation.
1868
- */
1869
- template <typename AsyncReadStream, typename DynamicBuffer_v1,
1870
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1871
- std::size_t)) ReadHandler
1872
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1873
- typename AsyncReadStream::executor_type)>
1874
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1875
- void (boost::system::error_code, std::size_t))
1876
- async_read_until(AsyncReadStream& s,
1877
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1878
- const boost::regex& expr,
1879
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1880
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1881
- typename AsyncReadStream::executor_type),
1882
- typename constraint<
1883
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1884
- >::type = 0,
1885
- typename constraint<
1886
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1887
- >::type = 0);
1888
-
1889
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1890
- // || defined(GENERATING_DOCUMENTATION)
1891
-
1892
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1893
- /// until a function object indicates a match.
1894
- /**
1895
- * This function is used to asynchronously read data into the specified dynamic
1896
- * buffer sequence until a user-defined match condition function object, when
1897
- * applied to the data contained in the dynamic buffer sequence, indicates a
1898
- * successful match. The function call always returns immediately. The
1899
- * asynchronous operation will continue until one of the following conditions
1900
- * is true:
1901
- *
1902
- * @li The match condition function object returns a std::pair where the second
1903
- * element evaluates to true.
1904
- *
1905
- * @li An error occurred.
1906
- *
1907
- * This operation is implemented in terms of zero or more calls to the stream's
1908
- * async_read_some function, and is known as a <em>composed operation</em>. If
1909
- * the match condition function object already indicates a match, this
1910
- * asynchronous operation completes immediately. The program must ensure that
1911
- * the stream performs no other read operations (such as async_read,
1912
- * async_read_until, the stream's async_read_some function, or any other
1913
- * composed operations that perform reads) until this operation completes.
1914
- *
1915
- * @param s The stream from which the data is to be read. The type must support
1916
- * the AsyncReadStream concept.
1917
- *
1918
- * @param buffers The dynamic buffer sequence into which the data will be read.
1919
- * Although the buffers object may be copied as necessary, ownership of the
1920
- * underlying memory blocks is retained by the caller, which must guarantee
1921
- * that they remain valid until the handler is called.
1922
- *
1923
- * @param match_condition The function object to be called to determine whether
1924
- * a match exists. The signature of the function object must be:
1925
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1926
- * @endcode
1927
- * where @c iterator represents the type:
1928
- * @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
1929
- * @endcode
1930
- * The iterator parameters @c begin and @c end define the range of bytes to be
1931
- * scanned to determine whether there is a match. The @c first member of the
1932
- * return value is an iterator marking one-past-the-end of the bytes that have
1933
- * been consumed by the match function. This iterator is used to calculate the
1934
- * @c begin parameter for any subsequent invocation of the match condition. The
1935
- * @c second member of the return value is true if a match has been found, false
1936
- * otherwise.
1937
- *
1938
- * @param handler The handler to be called when the read operation completes.
1939
- * Copies will be made of the handler as required. The function signature of the
1940
- * handler must be:
1941
- * @code void handler(
1942
- * // Result of operation.
1943
- * const boost::system::error_code& error,
1944
- *
1945
- * // The number of bytes in the dynamic buffer sequence's
1946
- * // get area that have been fully consumed by the match
1947
- * // function. O if an error occurred.
1948
- * std::size_t bytes_transferred
1949
- * ); @endcode
1950
- * Regardless of whether the asynchronous operation completes immediately or
1951
- * not, the handler will not be invoked from within this function. On
1952
- * immediate completion, invocation of the handler will be performed in a
1953
- * manner equivalent to using boost::asio::post().
1954
- *
1955
- * @note After a successful async_read_until operation, the dynamic buffer
1956
- * sequence may contain additional data beyond that which matched the function
1957
- * object. An application will typically leave that data in the dynamic buffer
1958
- * sequence for a subsequent async_read_until operation to examine.
1959
- *
1960
- * @note The default implementation of the @c is_match_condition type trait
1961
- * evaluates to true for function pointers and function objects with a
1962
- * @c result_type typedef. It must be specialised for other user-defined
1963
- * function objects.
1964
- *
1965
- * @par Examples
1966
- * To asynchronously read data into a @c std::string until whitespace is
1967
- * encountered:
1968
- * @code typedef boost::asio::buffers_iterator<
1969
- * boost::asio::const_buffers_1> iterator;
1970
- *
1971
- * std::pair<iterator, bool>
1972
- * match_whitespace(iterator begin, iterator end)
1973
- * {
1974
- * iterator i = begin;
1975
- * while (i != end)
1976
- * if (std::isspace(*i++))
1977
- * return std::make_pair(i, true);
1978
- * return std::make_pair(i, false);
1979
- * }
1980
- * ...
1981
- * void handler(const boost::system::error_code& e, std::size_t size);
1982
- * ...
1983
- * std::string data;
1984
- * boost::asio::async_read_until(s, data, match_whitespace, handler);
1985
- * @endcode
1986
- *
1987
- * To asynchronously read data into a @c std::string until a matching character
1988
- * is found:
1989
- * @code class match_char
1990
- * {
1991
- * public:
1992
- * explicit match_char(char c) : c_(c) {}
1993
- *
1994
- * template <typename Iterator>
1995
- * std::pair<Iterator, bool> operator()(
1996
- * Iterator begin, Iterator end) const
1997
- * {
1998
- * Iterator i = begin;
1999
- * while (i != end)
2000
- * if (c_ == *i++)
2001
- * return std::make_pair(i, true);
2002
- * return std::make_pair(i, false);
2003
- * }
2004
- *
2005
- * private:
2006
- * char c_;
2007
- * };
2008
- *
2009
- * namespace asio {
2010
- * template <> struct is_match_condition<match_char>
2011
- * : public boost::true_type {};
2012
- * } // namespace asio
2013
- * ...
2014
- * void handler(const boost::system::error_code& e, std::size_t size);
2015
- * ...
2016
- * std::string data;
2017
- * boost::asio::async_read_until(s, data, match_char('a'), handler);
2018
- * @endcode
2019
- *
2020
- * @par Per-Operation Cancellation
2021
- * This asynchronous operation supports cancellation for the following
2022
- * boost::asio::cancellation_type values:
2023
- *
2024
- * @li @c cancellation_type::terminal
2025
- *
2026
- * @li @c cancellation_type::partial
2027
- *
2028
- * if they are also supported by the @c AsyncReadStream type's
2029
- * @c async_read_some operation.
2030
- */
2031
- template <typename AsyncReadStream,
2032
- typename DynamicBuffer_v1, typename MatchCondition,
2033
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2034
- std::size_t)) ReadHandler
2035
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2036
- typename AsyncReadStream::executor_type)>
2037
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2038
- void (boost::system::error_code, std::size_t))
2039
- async_read_until(AsyncReadStream& s,
2040
- BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
2041
- MatchCondition match_condition,
2042
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2043
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2044
- typename AsyncReadStream::executor_type),
2045
- typename constraint<
2046
- is_match_condition<MatchCondition>::value
2047
- >::type = 0,
2048
- typename constraint<
2049
- is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
2050
- >::type = 0,
2051
- typename constraint<
2052
- !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
2053
- >::type = 0);
2054
-
2055
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
2056
-
2057
- /// Start an asynchronous operation to read data into a streambuf until it
2058
- /// contains a specified delimiter.
2059
- /**
2060
- * This function is used to asynchronously read data into the specified
2061
- * streambuf until the streambuf's get area contains the specified delimiter.
2062
- * The function call always returns immediately. The asynchronous operation
2063
- * will continue until one of the following conditions is true:
2064
- *
2065
- * @li The get area of the streambuf contains the specified delimiter.
2066
- *
2067
- * @li An error occurred.
2068
- *
2069
- * This operation is implemented in terms of zero or more calls to the stream's
2070
- * async_read_some function, and is known as a <em>composed operation</em>. If
2071
- * the streambuf's get area already contains the delimiter, this asynchronous
2072
- * operation completes immediately. The program must ensure that the stream
2073
- * performs no other read operations (such as async_read, async_read_until, the
2074
- * stream's async_read_some function, or any other composed operations that
2075
- * perform reads) until this operation completes.
2076
- *
2077
- * @param s The stream from which the data is to be read. The type must support
2078
- * the AsyncReadStream concept.
2079
- *
2080
- * @param b A streambuf object into which the data will be read. Ownership of
2081
- * the streambuf is retained by the caller, which must guarantee that it remains
2082
- * valid until the handler is called.
2083
- *
2084
- * @param delim The delimiter character.
2085
- *
2086
- * @param handler The handler to be called when the read operation completes.
2087
- * Copies will be made of the handler as required. The function signature of the
2088
- * handler must be:
2089
- * @code void handler(
2090
- * // Result of operation.
2091
- * const boost::system::error_code& error,
2092
- *
2093
- * // The number of bytes in the streambuf's get
2094
- * // area up to and including the delimiter.
2095
- * // 0 if an error occurred.
2096
- * std::size_t bytes_transferred
2097
- * ); @endcode
2098
- * Regardless of whether the asynchronous operation completes immediately or
2099
- * not, the handler will not be invoked from within this function. On
2100
- * immediate completion, invocation of the handler will be performed in a
2101
- * manner equivalent to using boost::asio::post().
2102
- *
2103
- * @note After a successful async_read_until operation, the streambuf may
2104
- * contain additional data beyond the delimiter. An application will typically
2105
- * leave that data in the streambuf for a subsequent async_read_until operation
2106
- * to examine.
2107
- *
2108
- * @par Example
2109
- * To asynchronously read data into a streambuf until a newline is encountered:
2110
- * @code boost::asio::streambuf b;
2111
- * ...
2112
- * void handler(const boost::system::error_code& e, std::size_t size)
2113
- * {
2114
- * if (!e)
2115
- * {
2116
- * std::istream is(&b);
2117
- * std::string line;
2118
- * std::getline(is, line);
2119
- * ...
2120
- * }
2121
- * }
2122
- * ...
2123
- * boost::asio::async_read_until(s, b, '\n', handler); @endcode
2124
- * After the @c async_read_until operation completes successfully, the buffer
2125
- * @c b contains the delimiter:
2126
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
2127
- * The call to @c std::getline then extracts the data up to and including the
2128
- * newline (which is discarded), so that the string @c line contains:
2129
- * @code { 'a', 'b', ..., 'c' } @endcode
2130
- * The remaining data is left in the buffer @c b as follows:
2131
- * @code { 'd', 'e', ... } @endcode
2132
- * This data may be the start of a new line, to be extracted by a subsequent
2133
- * @c async_read_until operation.
2134
- *
2135
- * @par Per-Operation Cancellation
2136
- * This asynchronous operation supports cancellation for the following
2137
- * boost::asio::cancellation_type values:
2138
- *
2139
- * @li @c cancellation_type::terminal
2140
- *
2141
- * @li @c cancellation_type::partial
2142
- *
2143
- * if they are also supported by the @c AsyncReadStream type's
2144
- * @c async_read_some operation.
2145
- */
2146
- template <typename AsyncReadStream, typename Allocator,
2147
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2148
- std::size_t)) ReadHandler
2149
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2150
- typename AsyncReadStream::executor_type)>
2151
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2152
- void (boost::system::error_code, std::size_t))
2153
- async_read_until(AsyncReadStream& s,
2154
- boost::asio::basic_streambuf<Allocator>& b, char delim,
2155
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2156
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2157
- typename AsyncReadStream::executor_type));
2158
-
2159
- /// Start an asynchronous operation to read data into a streambuf until it
2160
- /// contains a specified delimiter.
2161
- /**
2162
- * This function is used to asynchronously read data into the specified
2163
- * streambuf until the streambuf's get area contains the specified delimiter.
2164
- * The function call always returns immediately. The asynchronous operation
2165
- * will continue until one of the following conditions is true:
2166
- *
2167
- * @li The get area of the streambuf contains the specified delimiter.
2168
- *
2169
- * @li An error occurred.
2170
- *
2171
- * This operation is implemented in terms of zero or more calls to the stream's
2172
- * async_read_some function, and is known as a <em>composed operation</em>. If
2173
- * the streambuf's get area already contains the delimiter, this asynchronous
2174
- * operation completes immediately. The program must ensure that the stream
2175
- * performs no other read operations (such as async_read, async_read_until, the
2176
- * stream's async_read_some function, or any other composed operations that
2177
- * perform reads) until this operation completes.
2178
- *
2179
- * @param s The stream from which the data is to be read. The type must support
2180
- * the AsyncReadStream concept.
2181
- *
2182
- * @param b A streambuf object into which the data will be read. Ownership of
2183
- * the streambuf is retained by the caller, which must guarantee that it remains
2184
- * valid until the handler is called.
2185
- *
2186
- * @param delim The delimiter string.
2187
- *
2188
- * @param handler The handler to be called when the read operation completes.
2189
- * Copies will be made of the handler as required. The function signature of the
2190
- * handler must be:
2191
- * @code void handler(
2192
- * // Result of operation.
2193
- * const boost::system::error_code& error,
2194
- *
2195
- * // The number of bytes in the streambuf's get
2196
- * // area up to and including the delimiter.
2197
- * // 0 if an error occurred.
2198
- * std::size_t bytes_transferred
2199
- * ); @endcode
2200
- * Regardless of whether the asynchronous operation completes immediately or
2201
- * not, the handler will not be invoked from within this function. On
2202
- * immediate completion, invocation of the handler will be performed in a
2203
- * manner equivalent to using boost::asio::post().
2204
- *
2205
- * @note After a successful async_read_until operation, the streambuf may
2206
- * contain additional data beyond the delimiter. An application will typically
2207
- * leave that data in the streambuf for a subsequent async_read_until operation
2208
- * to examine.
2209
- *
2210
- * @par Example
2211
- * To asynchronously read data into a streambuf until a newline is encountered:
2212
- * @code boost::asio::streambuf b;
2213
- * ...
2214
- * void handler(const boost::system::error_code& e, std::size_t size)
2215
- * {
2216
- * if (!e)
2217
- * {
2218
- * std::istream is(&b);
2219
- * std::string line;
2220
- * std::getline(is, line);
2221
- * ...
2222
- * }
2223
- * }
2224
- * ...
2225
- * boost::asio::async_read_until(s, b, "\r\n", handler); @endcode
2226
- * After the @c async_read_until operation completes successfully, the buffer
2227
- * @c b contains the delimiter:
2228
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2229
- * The call to @c std::getline then extracts the data up to and including the
2230
- * newline (which is discarded), so that the string @c line contains:
2231
- * @code { 'a', 'b', ..., 'c', '\r' } @endcode
2232
- * The remaining data is left in the buffer @c b as follows:
2233
- * @code { 'd', 'e', ... } @endcode
2234
- * This data may be the start of a new line, to be extracted by a subsequent
2235
- * @c async_read_until operation.
2236
- *
2237
- * @par Per-Operation Cancellation
2238
- * This asynchronous operation supports cancellation for the following
2239
- * boost::asio::cancellation_type values:
2240
- *
2241
- * @li @c cancellation_type::terminal
2242
- *
2243
- * @li @c cancellation_type::partial
2244
- *
2245
- * if they are also supported by the @c AsyncReadStream type's
2246
- * @c async_read_some operation.
2247
- */
2248
- template <typename AsyncReadStream, typename Allocator,
2249
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2250
- std::size_t)) ReadHandler
2251
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2252
- typename AsyncReadStream::executor_type)>
2253
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2254
- void (boost::system::error_code, std::size_t))
2255
- async_read_until(AsyncReadStream& s,
2256
- boost::asio::basic_streambuf<Allocator>& b,
2257
- BOOST_ASIO_STRING_VIEW_PARAM delim,
2258
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2259
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2260
- typename AsyncReadStream::executor_type));
2261
-
2262
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
2263
- || defined(GENERATING_DOCUMENTATION)
2264
-
2265
- /// Start an asynchronous operation to read data into a streambuf until some
2266
- /// part of its data matches a regular expression.
2267
- /**
2268
- * This function is used to asynchronously read data into the specified
2269
- * streambuf until the streambuf's get area contains some data that matches a
2270
- * regular expression. The function call always returns immediately. The
2271
- * asynchronous operation will continue until one of the following conditions
2272
- * is true:
2273
- *
2274
- * @li A substring of the streambuf's get area matches the regular expression.
2275
- *
2276
- * @li An error occurred.
2277
- *
2278
- * This operation is implemented in terms of zero or more calls to the stream's
2279
- * async_read_some function, and is known as a <em>composed operation</em>. If
2280
- * the streambuf's get area already contains data that matches the regular
2281
- * expression, this asynchronous operation completes immediately. The program
2282
- * must ensure that the stream performs no other read operations (such as
2283
- * async_read, async_read_until, the stream's async_read_some function, or any
2284
- * other composed operations that perform reads) until this operation
2285
- * completes.
2286
- *
2287
- * @param s The stream from which the data is to be read. The type must support
2288
- * the AsyncReadStream concept.
2289
- *
2290
- * @param b A streambuf object into which the data will be read. Ownership of
2291
- * the streambuf is retained by the caller, which must guarantee that it remains
2292
- * valid until the handler is called.
2293
- *
2294
- * @param expr The regular expression.
2295
- *
2296
- * @param handler The handler to be called when the read operation completes.
2297
- * Copies will be made of the handler as required. The function signature of the
2298
- * handler must be:
2299
- * @code void handler(
2300
- * // Result of operation.
2301
- * const boost::system::error_code& error,
2302
- *
2303
- * // The number of bytes in the streambuf's get
2304
- * // area up to and including the substring
2305
- * // that matches the regular. expression.
2306
- * // 0 if an error occurred.
2307
- * std::size_t bytes_transferred
2308
- * ); @endcode
2309
- * Regardless of whether the asynchronous operation completes immediately or
2310
- * not, the handler will not be invoked from within this function. On
2311
- * immediate completion, invocation of the handler will be performed in a
2312
- * manner equivalent to using boost::asio::post().
2313
- *
2314
- * @note After a successful async_read_until operation, the streambuf may
2315
- * contain additional data beyond that which matched the regular expression. An
2316
- * application will typically leave that data in the streambuf for a subsequent
2317
- * async_read_until operation to examine.
2318
- *
2319
- * @par Example
2320
- * To asynchronously read data into a streambuf until a CR-LF sequence is
2321
- * encountered:
2322
- * @code boost::asio::streambuf b;
2323
- * ...
2324
- * void handler(const boost::system::error_code& e, std::size_t size)
2325
- * {
2326
- * if (!e)
2327
- * {
2328
- * std::istream is(&b);
2329
- * std::string line;
2330
- * std::getline(is, line);
2331
- * ...
2332
- * }
2333
- * }
2334
- * ...
2335
- * boost::asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
2336
- * After the @c async_read_until operation completes successfully, the buffer
2337
- * @c b contains the data which matched the regular expression:
2338
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2339
- * The call to @c std::getline then extracts the data up to and including the
2340
- * newline (which is discarded), so that the string @c line contains:
2341
- * @code { 'a', 'b', ..., 'c', '\r' } @endcode
2342
- * The remaining data is left in the buffer @c b as follows:
2343
- * @code { 'd', 'e', ... } @endcode
2344
- * This data may be the start of a new line, to be extracted by a subsequent
2345
- * @c async_read_until operation.
2346
- *
2347
- * @par Per-Operation Cancellation
2348
- * This asynchronous operation supports cancellation for the following
2349
- * boost::asio::cancellation_type values:
2350
- *
2351
- * @li @c cancellation_type::terminal
2352
- *
2353
- * @li @c cancellation_type::partial
2354
- *
2355
- * if they are also supported by the @c AsyncReadStream type's
2356
- * @c async_read_some operation.
2357
- */
2358
- template <typename AsyncReadStream, typename Allocator,
2359
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2360
- std::size_t)) ReadHandler
2361
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2362
- typename AsyncReadStream::executor_type)>
2363
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2364
- void (boost::system::error_code, std::size_t))
2365
- async_read_until(AsyncReadStream& s,
2366
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
2367
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2368
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2369
- typename AsyncReadStream::executor_type));
2370
-
2371
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
2372
- // || defined(GENERATING_DOCUMENTATION)
2373
-
2374
- /// Start an asynchronous operation to read data into a streambuf until a
2375
- /// function object indicates a match.
2376
- /**
2377
- * This function is used to asynchronously read data into the specified
2378
- * streambuf until a user-defined match condition function object, when applied
2379
- * to the data contained in the streambuf, indicates a successful match. The
2380
- * function call always returns immediately. The asynchronous operation will
2381
- * continue until one of the following conditions is true:
2382
- *
2383
- * @li The match condition function object returns a std::pair where the second
2384
- * element evaluates to true.
2385
- *
2386
- * @li An error occurred.
2387
- *
2388
- * This operation is implemented in terms of zero or more calls to the stream's
2389
- * async_read_some function, and is known as a <em>composed operation</em>. If
2390
- * the match condition function object already indicates a match, this
2391
- * asynchronous operation completes immediately. The program must ensure that
2392
- * the stream performs no other read operations (such as async_read,
2393
- * async_read_until, the stream's async_read_some function, or any other
2394
- * composed operations that perform reads) until this operation completes.
2395
- *
2396
- * @param s The stream from which the data is to be read. The type must support
2397
- * the AsyncReadStream concept.
2398
- *
2399
- * @param b A streambuf object into which the data will be read.
2400
- *
2401
- * @param match_condition The function object to be called to determine whether
2402
- * a match exists. The signature of the function object must be:
2403
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
2404
- * @endcode
2405
- * where @c iterator represents the type:
2406
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
2407
- * @endcode
2408
- * The iterator parameters @c begin and @c end define the range of bytes to be
2409
- * scanned to determine whether there is a match. The @c first member of the
2410
- * return value is an iterator marking one-past-the-end of the bytes that have
2411
- * been consumed by the match function. This iterator is used to calculate the
2412
- * @c begin parameter for any subsequent invocation of the match condition. The
2413
- * @c second member of the return value is true if a match has been found, false
2414
- * otherwise.
2415
- *
2416
- * @param handler The handler to be called when the read operation completes.
2417
- * Copies will be made of the handler as required. The function signature of the
2418
- * handler must be:
2419
- * @code void handler(
2420
- * // Result of operation.
2421
- * const boost::system::error_code& error,
2422
- *
2423
- * // The number of bytes in the streambuf's get
2424
- * // area that have been fully consumed by the
2425
- * // match function. O if an error occurred.
2426
- * std::size_t bytes_transferred
2427
- * ); @endcode
2428
- * Regardless of whether the asynchronous operation completes immediately or
2429
- * not, the handler will not be invoked from within this function. On
2430
- * immediate completion, invocation of the handler will be performed in a
2431
- * manner equivalent to using boost::asio::post().
2432
- *
2433
- * @note After a successful async_read_until operation, the streambuf may
2434
- * contain additional data beyond that which matched the function object. An
2435
- * application will typically leave that data in the streambuf for a subsequent
2436
- * async_read_until operation to examine.
2437
- *
2438
- * @note The default implementation of the @c is_match_condition type trait
2439
- * evaluates to true for function pointers and function objects with a
2440
- * @c result_type typedef. It must be specialised for other user-defined
2441
- * function objects.
2442
- *
2443
- * @par Examples
2444
- * To asynchronously read data into a streambuf until whitespace is encountered:
2445
- * @code typedef boost::asio::buffers_iterator<
2446
- * boost::asio::streambuf::const_buffers_type> iterator;
2447
- *
2448
- * std::pair<iterator, bool>
2449
- * match_whitespace(iterator begin, iterator end)
2450
- * {
2451
- * iterator i = begin;
2452
- * while (i != end)
2453
- * if (std::isspace(*i++))
2454
- * return std::make_pair(i, true);
2455
- * return std::make_pair(i, false);
2456
- * }
2457
- * ...
2458
- * void handler(const boost::system::error_code& e, std::size_t size);
2459
- * ...
2460
- * boost::asio::streambuf b;
2461
- * boost::asio::async_read_until(s, b, match_whitespace, handler);
2462
- * @endcode
2463
- *
2464
- * To asynchronously read data into a streambuf until a matching character is
2465
- * found:
2466
- * @code class match_char
2467
- * {
2468
- * public:
2469
- * explicit match_char(char c) : c_(c) {}
2470
- *
2471
- * template <typename Iterator>
2472
- * std::pair<Iterator, bool> operator()(
2473
- * Iterator begin, Iterator end) const
2474
- * {
2475
- * Iterator i = begin;
2476
- * while (i != end)
2477
- * if (c_ == *i++)
2478
- * return std::make_pair(i, true);
2479
- * return std::make_pair(i, false);
2480
- * }
2481
- *
2482
- * private:
2483
- * char c_;
2484
- * };
2485
- *
2486
- * namespace asio {
2487
- * template <> struct is_match_condition<match_char>
2488
- * : public boost::true_type {};
2489
- * } // namespace asio
2490
- * ...
2491
- * void handler(const boost::system::error_code& e, std::size_t size);
2492
- * ...
2493
- * boost::asio::streambuf b;
2494
- * boost::asio::async_read_until(s, b, match_char('a'), handler);
2495
- * @endcode
2496
- *
2497
- * @par Per-Operation Cancellation
2498
- * This asynchronous operation supports cancellation for the following
2499
- * boost::asio::cancellation_type values:
2500
- *
2501
- * @li @c cancellation_type::terminal
2502
- *
2503
- * @li @c cancellation_type::partial
2504
- *
2505
- * if they are also supported by the @c AsyncReadStream type's
2506
- * @c async_read_some operation.
2507
- */
2508
- template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
2509
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2510
- std::size_t)) ReadHandler
2511
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2512
- typename AsyncReadStream::executor_type)>
2513
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2514
- void (boost::system::error_code, std::size_t))
2515
- async_read_until(AsyncReadStream& s,
2516
- boost::asio::basic_streambuf<Allocator>& b,
2517
- MatchCondition match_condition,
2518
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2519
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2520
- typename AsyncReadStream::executor_type),
2521
- typename constraint<is_match_condition<MatchCondition>::value>::type = 0);
2522
-
2523
- #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
2524
- #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
2525
- #endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
2526
-
2527
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
2528
- /// until it contains a specified delimiter.
2529
- /**
2530
- * This function is used to asynchronously read data into the specified dynamic
2531
- * buffer sequence until the dynamic buffer sequence's get area contains the
2532
- * specified delimiter. The function call always returns immediately. The
2533
- * asynchronous operation will continue until one of the following conditions
2534
- * is true:
2535
- *
2536
- * @li The get area of the dynamic buffer sequence contains the specified
2537
- * delimiter.
2538
- *
2539
- * @li An error occurred.
2540
- *
2541
- * This operation is implemented in terms of zero or more calls to the stream's
2542
- * async_read_some function, and is known as a <em>composed operation</em>. If
2543
- * the dynamic buffer sequence's get area already contains the delimiter, this
2544
- * asynchronous operation completes immediately. The program must ensure that
2545
- * the stream performs no other read operations (such as async_read,
2546
- * async_read_until, the stream's async_read_some function, or any other
2547
- * composed operations that perform reads) until this operation completes.
2548
- *
2549
- * @param s The stream from which the data is to be read. The type must support
2550
- * the AsyncReadStream concept.
2551
- *
2552
- * @param buffers The dynamic buffer sequence into which the data will be read.
2553
- * Although the buffers object may be copied as necessary, ownership of the
2554
- * underlying memory blocks is retained by the caller, which must guarantee
2555
- * that they remain valid until the handler is called.
2556
- *
2557
- * @param delim The delimiter character.
2558
- *
2559
- * @param handler The handler to be called when the read operation completes.
2560
- * Copies will be made of the handler as required. The function signature of the
2561
- * handler must be:
2562
- * @code void handler(
2563
- * // Result of operation.
2564
- * const boost::system::error_code& error,
2565
- *
2566
- * // The number of bytes in the dynamic buffer sequence's
2567
- * // get area up to and including the delimiter.
2568
- * // 0 if an error occurred.
2569
- * std::size_t bytes_transferred
2570
- * ); @endcode
2571
- * Regardless of whether the asynchronous operation completes immediately or
2572
- * not, the handler will not be invoked from within this function. On
2573
- * immediate completion, invocation of the handler will be performed in a
2574
- * manner equivalent to using boost::asio::post().
2575
- *
2576
- * @note After a successful async_read_until operation, the dynamic buffer
2577
- * sequence may contain additional data beyond the delimiter. An application
2578
- * will typically leave that data in the dynamic buffer sequence for a
2579
- * subsequent async_read_until operation to examine.
2580
- *
2581
- * @par Example
2582
- * To asynchronously read data into a @c std::string until a newline is
2583
- * encountered:
2584
- * @code std::string data;
2585
- * ...
2586
- * void handler(const boost::system::error_code& e, std::size_t size)
2587
- * {
2588
- * if (!e)
2589
- * {
2590
- * std::string line = data.substr(0, n);
2591
- * data.erase(0, n);
2592
- * ...
2593
- * }
2594
- * }
2595
- * ...
2596
- * boost::asio::async_read_until(s, data, '\n', handler); @endcode
2597
- * After the @c async_read_until operation completes successfully, the buffer
2598
- * @c data contains the delimiter:
2599
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
2600
- * The call to @c substr then extracts the data up to and including the
2601
- * delimiter, so that the string @c line contains:
2602
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
2603
- * After the call to @c erase, the remaining data is left in the buffer @c data
2604
- * as follows:
2605
- * @code { 'd', 'e', ... } @endcode
2606
- * This data may be the start of a new line, to be extracted by a subsequent
2607
- * @c async_read_until operation.
2608
- *
2609
- * @par Per-Operation Cancellation
2610
- * This asynchronous operation supports cancellation for the following
2611
- * boost::asio::cancellation_type values:
2612
- *
2613
- * @li @c cancellation_type::terminal
2614
- *
2615
- * @li @c cancellation_type::partial
2616
- *
2617
- * if they are also supported by the @c AsyncReadStream type's
2618
- * @c async_read_some operation.
2619
- */
2620
- template <typename AsyncReadStream, typename DynamicBuffer_v2,
2621
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2622
- std::size_t)) ReadHandler
2623
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2624
- typename AsyncReadStream::executor_type)>
2625
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2626
- void (boost::system::error_code, std::size_t))
2627
- async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2628
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2629
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2630
- typename AsyncReadStream::executor_type),
2631
- typename constraint<
2632
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2633
- >::type = 0);
2634
-
2635
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
2636
- /// until it contains a specified delimiter.
2637
- /**
2638
- * This function is used to asynchronously read data into the specified dynamic
2639
- * buffer sequence until the dynamic buffer sequence's get area contains the
2640
- * specified delimiter. The function call always returns immediately. The
2641
- * asynchronous operation will continue until one of the following conditions
2642
- * is true:
2643
- *
2644
- * @li The get area of the dynamic buffer sequence contains the specified
2645
- * delimiter.
2646
- *
2647
- * @li An error occurred.
2648
- *
2649
- * This operation is implemented in terms of zero or more calls to the stream's
2650
- * async_read_some function, and is known as a <em>composed operation</em>. If
2651
- * the dynamic buffer sequence's get area already contains the delimiter, this
2652
- * asynchronous operation completes immediately. The program must ensure that
2653
- * the stream performs no other read operations (such as async_read,
2654
- * async_read_until, the stream's async_read_some function, or any other
2655
- * composed operations that perform reads) until this operation completes.
2656
- *
2657
- * @param s The stream from which the data is to be read. The type must support
2658
- * the AsyncReadStream concept.
2659
- *
2660
- * @param buffers The dynamic buffer sequence into which the data will be read.
2661
- * Although the buffers object may be copied as necessary, ownership of the
2662
- * underlying memory blocks is retained by the caller, which must guarantee
2663
- * that they remain valid until the handler is called.
2664
- *
2665
- * @param delim The delimiter string.
2666
- *
2667
- * @param handler The handler to be called when the read operation completes.
2668
- * Copies will be made of the handler as required. The function signature of the
2669
- * handler must be:
2670
- * @code void handler(
2671
- * // Result of operation.
2672
- * const boost::system::error_code& error,
2673
- *
2674
- * // The number of bytes in the dynamic buffer sequence's
2675
- * // get area up to and including the delimiter.
2676
- * // 0 if an error occurred.
2677
- * std::size_t bytes_transferred
2678
- * ); @endcode
2679
- * Regardless of whether the asynchronous operation completes immediately or
2680
- * not, the handler will not be invoked from within this function. On
2681
- * immediate completion, invocation of the handler will be performed in a
2682
- * manner equivalent to using boost::asio::post().
2683
- *
2684
- * @note After a successful async_read_until operation, the dynamic buffer
2685
- * sequence may contain additional data beyond the delimiter. An application
2686
- * will typically leave that data in the dynamic buffer sequence for a
2687
- * subsequent async_read_until operation to examine.
2688
- *
2689
- * @par Example
2690
- * To asynchronously read data into a @c std::string until a CR-LF sequence is
2691
- * encountered:
2692
- * @code std::string data;
2693
- * ...
2694
- * void handler(const boost::system::error_code& e, std::size_t size)
2695
- * {
2696
- * if (!e)
2697
- * {
2698
- * std::string line = data.substr(0, n);
2699
- * data.erase(0, n);
2700
- * ...
2701
- * }
2702
- * }
2703
- * ...
2704
- * boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
2705
- * After the @c async_read_until operation completes successfully, the string
2706
- * @c data contains the delimiter:
2707
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2708
- * The call to @c substr then extracts the data up to and including the
2709
- * delimiter, so that the string @c line contains:
2710
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
2711
- * After the call to @c erase, the remaining data is left in the string @c data
2712
- * as follows:
2713
- * @code { 'd', 'e', ... } @endcode
2714
- * This data may be the start of a new line, to be extracted by a subsequent
2715
- * @c async_read_until operation.
2716
- *
2717
- * @par Per-Operation Cancellation
2718
- * This asynchronous operation supports cancellation for the following
2719
- * boost::asio::cancellation_type values:
2720
- *
2721
- * @li @c cancellation_type::terminal
2722
- *
2723
- * @li @c cancellation_type::partial
2724
- *
2725
- * if they are also supported by the @c AsyncReadStream type's
2726
- * @c async_read_some operation.
2727
- */
2728
- template <typename AsyncReadStream, typename DynamicBuffer_v2,
2729
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2730
- std::size_t)) ReadHandler
2731
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2732
- typename AsyncReadStream::executor_type)>
2733
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2734
- void (boost::system::error_code, std::size_t))
2735
- async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2736
- BOOST_ASIO_STRING_VIEW_PARAM delim,
2737
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2738
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2739
- typename AsyncReadStream::executor_type),
2740
- typename constraint<
2741
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2742
- >::type = 0);
2743
-
2744
- #if !defined(BOOST_ASIO_NO_EXTENSIONS)
2745
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
2746
- || defined(GENERATING_DOCUMENTATION)
2747
-
2748
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
2749
- /// until some part of its data matches a regular expression.
2750
- /**
2751
- * This function is used to asynchronously read data into the specified dynamic
2752
- * buffer sequence until the dynamic buffer sequence's get area contains some
2753
- * data that matches a regular expression. The function call always returns
2754
- * immediately. The asynchronous operation will continue until one of the
2755
- * following conditions is true:
2756
- *
2757
- * @li A substring of the dynamic buffer sequence's get area matches the regular
2758
- * expression.
2759
- *
2760
- * @li An error occurred.
2761
- *
2762
- * This operation is implemented in terms of zero or more calls to the stream's
2763
- * async_read_some function, and is known as a <em>composed operation</em>. If
2764
- * the dynamic buffer sequence's get area already contains data that matches
2765
- * the regular expression, this asynchronous operation completes immediately.
2766
- * The program must ensure that the stream performs no other read operations
2767
- * (such as async_read, async_read_until, the stream's async_read_some
2768
- * function, or any other composed operations that perform reads) until this
2769
- * operation completes.
2770
- *
2771
- * @param s The stream from which the data is to be read. The type must support
2772
- * the AsyncReadStream concept.
2773
- *
2774
- * @param buffers The dynamic buffer sequence into which the data will be read.
2775
- * Although the buffers object may be copied as necessary, ownership of the
2776
- * underlying memory blocks is retained by the caller, which must guarantee
2777
- * that they remain valid until the handler is called.
2778
- *
2779
- * @param expr The regular expression.
2780
- *
2781
- * @param handler The handler to be called when the read operation completes.
2782
- * Copies will be made of the handler as required. The function signature of the
2783
- * handler must be:
2784
- * @code void handler(
2785
- * // Result of operation.
2786
- * const boost::system::error_code& error,
2787
- *
2788
- * // The number of bytes in the dynamic buffer
2789
- * // sequence's get area up to and including the
2790
- * // substring that matches the regular expression.
2791
- * // 0 if an error occurred.
2792
- * std::size_t bytes_transferred
2793
- * ); @endcode
2794
- * Regardless of whether the asynchronous operation completes immediately or
2795
- * not, the handler will not be invoked from within this function. On
2796
- * immediate completion, invocation of the handler will be performed in a
2797
- * manner equivalent to using boost::asio::post().
2798
- *
2799
- * @note After a successful async_read_until operation, the dynamic buffer
2800
- * sequence may contain additional data beyond that which matched the regular
2801
- * expression. An application will typically leave that data in the dynamic
2802
- * buffer sequence for a subsequent async_read_until operation to examine.
2803
- *
2804
- * @par Example
2805
- * To asynchronously read data into a @c std::string until a CR-LF sequence is
2806
- * encountered:
2807
- * @code std::string data;
2808
- * ...
2809
- * void handler(const boost::system::error_code& e, std::size_t size)
2810
- * {
2811
- * if (!e)
2812
- * {
2813
- * std::string line = data.substr(0, n);
2814
- * data.erase(0, n);
2815
- * ...
2816
- * }
2817
- * }
2818
- * ...
2819
- * boost::asio::async_read_until(s, data,
2820
- * boost::regex("\r\n"), handler); @endcode
2821
- * After the @c async_read_until operation completes successfully, the string
2822
- * @c data contains the data which matched the regular expression:
2823
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2824
- * The call to @c substr then extracts the data up to and including the match,
2825
- * so that the string @c line contains:
2826
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
2827
- * After the call to @c erase, the remaining data is left in the string @c data
2828
- * as follows:
2829
- * @code { 'd', 'e', ... } @endcode
2830
- * This data may be the start of a new line, to be extracted by a subsequent
2831
- * @c async_read_until operation.
2832
- *
2833
- * @par Per-Operation Cancellation
2834
- * This asynchronous operation supports cancellation for the following
2835
- * boost::asio::cancellation_type values:
2836
- *
2837
- * @li @c cancellation_type::terminal
2838
- *
2839
- * @li @c cancellation_type::partial
2840
- *
2841
- * if they are also supported by the @c AsyncReadStream type's
2842
- * @c async_read_some operation.
2843
- */
2844
- template <typename AsyncReadStream, typename DynamicBuffer_v2,
2845
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2846
- std::size_t)) ReadHandler
2847
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2848
- typename AsyncReadStream::executor_type)>
2849
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2850
- void (boost::system::error_code, std::size_t))
2851
- async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2852
- const boost::regex& expr,
2853
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2854
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2855
- typename AsyncReadStream::executor_type),
2856
- typename constraint<
2857
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2858
- >::type = 0);
2859
-
2860
- #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
2861
- // || defined(GENERATING_DOCUMENTATION)
2862
-
2863
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
2864
- /// until a function object indicates a match.
2865
- /**
2866
- * This function is used to asynchronously read data into the specified dynamic
2867
- * buffer sequence until a user-defined match condition function object, when
2868
- * applied to the data contained in the dynamic buffer sequence, indicates a
2869
- * successful match. The function call always returns immediately. The
2870
- * asynchronous operation will continue until one of the following conditions
2871
- * is true:
2872
- *
2873
- * @li The match condition function object returns a std::pair where the second
2874
- * element evaluates to true.
2875
- *
2876
- * @li An error occurred.
2877
- *
2878
- * This operation is implemented in terms of zero or more calls to the stream's
2879
- * async_read_some function, and is known as a <em>composed operation</em>. If
2880
- * the match condition function object already indicates a match, this
2881
- * asynchronous operation completes immediately. The program must ensure that
2882
- * the stream performs no other read operations (such as async_read,
2883
- * async_read_until, the stream's async_read_some function, or any other
2884
- * composed operations that perform reads) until this operation completes.
2885
- *
2886
- * @param s The stream from which the data is to be read. The type must support
2887
- * the AsyncReadStream concept.
2888
- *
2889
- * @param buffers The dynamic buffer sequence into which the data will be read.
2890
- * Although the buffers object may be copied as necessary, ownership of the
2891
- * underlying memory blocks is retained by the caller, which must guarantee
2892
- * that they remain valid until the handler is called.
2893
- *
2894
- * @param match_condition The function object to be called to determine whether
2895
- * a match exists. The signature of the function object must be:
2896
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
2897
- * @endcode
2898
- * where @c iterator represents the type:
2899
- * @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
2900
- * @endcode
2901
- * The iterator parameters @c begin and @c end define the range of bytes to be
2902
- * scanned to determine whether there is a match. The @c first member of the
2903
- * return value is an iterator marking one-past-the-end of the bytes that have
2904
- * been consumed by the match function. This iterator is used to calculate the
2905
- * @c begin parameter for any subsequent invocation of the match condition. The
2906
- * @c second member of the return value is true if a match has been found, false
2907
- * otherwise.
2908
- *
2909
- * @param handler The handler to be called when the read operation completes.
2910
- * Copies will be made of the handler as required. The function signature of the
2911
- * handler must be:
2912
- * @code void handler(
2913
- * // Result of operation.
2914
- * const boost::system::error_code& error,
2915
- *
2916
- * // The number of bytes in the dynamic buffer sequence's
2917
- * // get area that have been fully consumed by the match
2918
- * // function. O if an error occurred.
2919
- * std::size_t bytes_transferred
2920
- * ); @endcode
2921
- * Regardless of whether the asynchronous operation completes immediately or
2922
- * not, the handler will not be invoked from within this function. On
2923
- * immediate completion, invocation of the handler will be performed in a
2924
- * manner equivalent to using boost::asio::post().
2925
- *
2926
- * @note After a successful async_read_until operation, the dynamic buffer
2927
- * sequence may contain additional data beyond that which matched the function
2928
- * object. An application will typically leave that data in the dynamic buffer
2929
- * sequence for a subsequent async_read_until operation to examine.
2930
- *
2931
- * @note The default implementation of the @c is_match_condition type trait
2932
- * evaluates to true for function pointers and function objects with a
2933
- * @c result_type typedef. It must be specialised for other user-defined
2934
- * function objects.
2935
- *
2936
- * @par Examples
2937
- * To asynchronously read data into a @c std::string until whitespace is
2938
- * encountered:
2939
- * @code typedef boost::asio::buffers_iterator<
2940
- * boost::asio::const_buffers_1> iterator;
2941
- *
2942
- * std::pair<iterator, bool>
2943
- * match_whitespace(iterator begin, iterator end)
2944
- * {
2945
- * iterator i = begin;
2946
- * while (i != end)
2947
- * if (std::isspace(*i++))
2948
- * return std::make_pair(i, true);
2949
- * return std::make_pair(i, false);
2950
- * }
2951
- * ...
2952
- * void handler(const boost::system::error_code& e, std::size_t size);
2953
- * ...
2954
- * std::string data;
2955
- * boost::asio::async_read_until(s, data, match_whitespace, handler);
2956
- * @endcode
2957
- *
2958
- * To asynchronously read data into a @c std::string until a matching character
2959
- * is found:
2960
- * @code class match_char
2961
- * {
2962
- * public:
2963
- * explicit match_char(char c) : c_(c) {}
2964
- *
2965
- * template <typename Iterator>
2966
- * std::pair<Iterator, bool> operator()(
2967
- * Iterator begin, Iterator end) const
2968
- * {
2969
- * Iterator i = begin;
2970
- * while (i != end)
2971
- * if (c_ == *i++)
2972
- * return std::make_pair(i, true);
2973
- * return std::make_pair(i, false);
2974
- * }
2975
- *
2976
- * private:
2977
- * char c_;
2978
- * };
2979
- *
2980
- * namespace asio {
2981
- * template <> struct is_match_condition<match_char>
2982
- * : public boost::true_type {};
2983
- * } // namespace asio
2984
- * ...
2985
- * void handler(const boost::system::error_code& e, std::size_t size);
2986
- * ...
2987
- * std::string data;
2988
- * boost::asio::async_read_until(s, data, match_char('a'), handler);
2989
- * @endcode
2990
- *
2991
- * @par Per-Operation Cancellation
2992
- * This asynchronous operation supports cancellation for the following
2993
- * boost::asio::cancellation_type values:
2994
- *
2995
- * @li @c cancellation_type::terminal
2996
- *
2997
- * @li @c cancellation_type::partial
2998
- *
2999
- * if they are also supported by the @c AsyncReadStream type's
3000
- * @c async_read_some operation.
3001
- */
3002
- template <typename AsyncReadStream,
3003
- typename DynamicBuffer_v2, typename MatchCondition,
3004
- BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
3005
- std::size_t)) ReadHandler
3006
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
3007
- typename AsyncReadStream::executor_type)>
3008
- BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
3009
- void (boost::system::error_code, std::size_t))
3010
- async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
3011
- MatchCondition match_condition,
3012
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler
3013
- BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
3014
- typename AsyncReadStream::executor_type),
3015
- typename constraint<
3016
- is_match_condition<MatchCondition>::value
3017
- >::type = 0,
3018
- typename constraint<
3019
- is_dynamic_buffer_v2<DynamicBuffer_v2>::value
3020
- >::type = 0);
3021
-
3022
- #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
3023
-
3024
- /*@}*/
3025
-
3026
- } // namespace asio
3027
- } // namespace boost
3028
-
3029
- #include <boost/asio/detail/pop_options.hpp>
3030
-
3031
- #include <boost/asio/impl/read_until.hpp>
3032
-
3033
- #endif // BOOST_ASIO_READ_UNTIL_HPP