passenger 5.1.12 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (824) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +18 -1
  3. data/Rakefile +4 -1
  4. data/build/agent.rb +2 -2
  5. data/build/apache2.rb +17 -10
  6. data/build/basics.rb +18 -4
  7. data/build/common_library.rb +7 -3
  8. data/build/cxx_tests.rb +2 -7
  9. data/build/misc.rb +3 -1
  10. data/build/nginx.rb +11 -5
  11. data/build/oxt_tests.rb +0 -3
  12. data/build/packaging.rb +3 -2
  13. data/build/schema_printer.rb +103 -0
  14. data/build/support/cplusplus.rb +2 -2
  15. data/build/support/cxx_dependency_map.rb +2575 -868
  16. data/dev/ci/lib/functions.sh +1 -1
  17. data/dev/ci/lib/set-container-envvars.sh +1 -1
  18. data/dev/ci/lib/setup-container.sh +1 -1
  19. data/dev/ci/run-tests-natively +1 -1
  20. data/dev/ci/run-tests-with-docker +1 -1
  21. data/dev/ci/scripts/debug-console-wrapper.sh +1 -1
  22. data/dev/ci/scripts/docker-entrypoint-stage2.sh +1 -1
  23. data/dev/ci/scripts/docker-entrypoint.sh +1 -1
  24. data/dev/ci/scripts/inituidgid +1 -1
  25. data/dev/ci/scripts/run-tests-natively-stage2.sh +1 -1
  26. data/dev/ci/scripts/setup-host-natively.sh +1 -1
  27. data/dev/ci/setup-host +1 -1
  28. data/dev/ci/tests/apache2/run +1 -1
  29. data/dev/ci/tests/apache2/setup +1 -1
  30. data/dev/ci/tests/cxx/run +1 -1
  31. data/dev/ci/tests/cxx/setup +1 -1
  32. data/dev/ci/tests/debian/Jenkinsfile +0 -1
  33. data/dev/ci/tests/debian/run +1 -1
  34. data/dev/ci/tests/nginx-dynamic/run +1 -1
  35. data/dev/ci/tests/nginx-dynamic/setup +1 -1
  36. data/dev/ci/tests/nginx/run +1 -1
  37. data/dev/ci/tests/nginx/setup +1 -1
  38. data/dev/ci/tests/nodejs/run +1 -1
  39. data/dev/ci/tests/nodejs/setup +1 -1
  40. data/dev/ci/tests/rpm/run +1 -1
  41. data/dev/ci/tests/ruby/run +1 -1
  42. data/dev/ci/tests/ruby/setup +1 -1
  43. data/dev/ci/tests/source-packaging/run +1 -1
  44. data/dev/ci/tests/source-packaging/setup +1 -1
  45. data/dev/ci/tests/standalone/run +1 -1
  46. data/dev/ci/tests/standalone/setup +1 -1
  47. data/dev/configkit-schemas/index.json +1708 -0
  48. data/dev/configkit-schemas/update_schema_inline_comments.rb +118 -0
  49. data/dev/copy_boost_headers +13 -1
  50. data/dev/index_cxx_dependencies.rb +20 -7
  51. data/dev/vagrant/provision.sh +1 -1
  52. data/resources/mime.types +1 -0
  53. data/resources/templates/standalone/http.erb +1 -6
  54. data/src/agent/Core/AdminPanelConnector.h +550 -0
  55. data/src/agent/Core/ApiServer.h +159 -97
  56. data/src/agent/Core/ApplicationPool/Group.h +2 -0
  57. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +3 -2
  58. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +109 -0
  59. data/src/agent/Core/ApplicationPool/Implementation.cpp +5 -3
  60. data/src/agent/Core/ApplicationPool/Options.h +5 -6
  61. data/src/agent/Core/ApplicationPool/Pool.h +59 -2
  62. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +3 -3
  63. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
  64. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +6 -0
  65. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +129 -0
  66. data/src/agent/Core/Config.h +475 -0
  67. data/src/agent/Core/ConfigChange.cpp +349 -0
  68. data/src/agent/Core/ConfigChange.h +54 -0
  69. data/src/agent/Core/Controller.h +35 -3
  70. data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
  71. data/src/agent/Core/Controller/Config.cpp +0 -2
  72. data/src/agent/Core/Controller/Config.h +168 -104
  73. data/src/agent/Core/Controller/ForwardResponse.cpp +1 -1
  74. data/src/agent/Core/Controller/InitRequest.cpp +14 -15
  75. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +34 -44
  76. data/src/agent/Core/Controller/Request.h +0 -1
  77. data/src/agent/Core/CoreMain.cpp +236 -349
  78. data/src/agent/Core/OptionParser.h +75 -89
  79. data/src/agent/Core/SecurityUpdateChecker.h +263 -100
  80. data/src/agent/Core/SpawningKit/Config.h +6 -2
  81. data/src/agent/Core/SpawningKit/Spawner.h +0 -45
  82. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -0
  83. data/src/agent/Shared/ApiAccountUtils.h +318 -0
  84. data/src/agent/Shared/ApiServerUtils.h +3 -104
  85. data/src/agent/Shared/Fundamentals/Initialization.cpp +81 -44
  86. data/src/agent/Shared/Fundamentals/Initialization.h +12 -7
  87. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +21 -0
  88. data/src/agent/Watchdog/AgentWatcher.cpp +1 -1
  89. data/src/agent/Watchdog/ApiServer.h +100 -14
  90. data/src/agent/Watchdog/Config.h +340 -0
  91. data/src/agent/Watchdog/CoreWatcher.cpp +27 -13
  92. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  93. data/src/agent/Watchdog/WatchdogMain.cpp +190 -206
  94. data/src/apache2_module/Bucket.cpp +4 -0
  95. data/src/apache2_module/Bucket.h +7 -3
  96. data/src/apache2_module/CBindings.cpp +49 -0
  97. data/src/apache2_module/Config.cpp +242 -0
  98. data/src/apache2_module/Config.h +109 -0
  99. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +485 -0
  100. data/src/apache2_module/{ConfigurationCommands.cpp.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder} +29 -15
  101. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +298 -0
  102. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +171 -0
  103. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +854 -0
  104. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +188 -0
  105. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +610 -0
  106. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +65 -0
  107. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +174 -0
  108. data/src/apache2_module/{MergeDirConfig.cpp.cxxcodebuilder → DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder} +54 -32
  109. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +113 -0
  110. data/src/apache2_module/{SetHeaders.cpp.cxxcodebuilder → DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder} +34 -23
  111. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +426 -0
  112. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +165 -0
  113. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +269 -0
  114. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +148 -0
  115. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +534 -0
  116. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +230 -0
  117. data/src/apache2_module/DirectoryMapper.h +19 -16
  118. data/src/apache2_module/Hooks.cpp +124 -138
  119. data/src/apache2_module/Hooks.h +9 -14
  120. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +263 -0
  121. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +152 -0
  122. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +299 -0
  123. data/src/apache2_module/{ConfigurationFields.hpp.cxxcodebuilder → ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder} +105 -18
  124. data/src/apache2_module/Utils.h +215 -0
  125. data/src/apache2_module/mod_passenger.c +16 -8
  126. data/src/cxx_supportlib/AppTypes.h +2 -0
  127. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  128. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +8 -8
  129. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +7 -41
  130. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +12 -66
  131. data/src/cxx_supportlib/ConfigKit/Schema.h +62 -11
  132. data/src/cxx_supportlib/ConfigKit/{ValidationUtils.h → SchemaUtils.h} +12 -3
  133. data/src/cxx_supportlib/ConfigKit/Store.h +17 -9
  134. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -1
  135. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +13 -70
  136. data/src/cxx_supportlib/ConfigKit/Translator.h +125 -0
  137. data/src/cxx_supportlib/Constants.h +1 -3
  138. data/src/cxx_supportlib/FileTools/FileManip.cpp +297 -0
  139. data/src/cxx_supportlib/FileTools/FileManip.h +162 -0
  140. data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.cpp +6 -3
  141. data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.h +7 -5
  142. data/src/cxx_supportlib/FileTools/PathManip.cpp +240 -0
  143. data/src/cxx_supportlib/FileTools/PathManip.h +91 -0
  144. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +62 -0
  145. data/src/{apache2_module/Configuration.h → cxx_supportlib/FileTools/PathManipCBindings.h} +12 -19
  146. data/src/cxx_supportlib/Hooks.h +19 -16
  147. data/src/cxx_supportlib/InstanceDirectory.h +11 -0
  148. data/src/cxx_supportlib/JsonTools/Autocast.h +79 -0
  149. data/src/cxx_supportlib/JsonTools/CBindings.cpp +364 -0
  150. data/src/cxx_supportlib/JsonTools/CBindings.h +101 -0
  151. data/src/cxx_supportlib/LoggingKit/Config.h +13 -0
  152. data/src/cxx_supportlib/LoggingKit/Context.h +5 -2
  153. data/src/cxx_supportlib/LoggingKit/Forward.h +0 -1
  154. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +12 -4
  155. data/src/cxx_supportlib/ResourceLocator.h +15 -0
  156. data/src/cxx_supportlib/ServerKit/Config.h +156 -0
  157. data/src/cxx_supportlib/ServerKit/Context.h +59 -38
  158. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -2
  159. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +2 -2
  160. data/src/cxx_supportlib/ServerKit/HttpServer.h +16 -2
  161. data/src/cxx_supportlib/ServerKit/Server.h +32 -15
  162. data/src/cxx_supportlib/Utils.cpp +0 -441
  163. data/src/cxx_supportlib/Utils.h +0 -158
  164. data/src/cxx_supportlib/Utils/Curl.h +1 -0
  165. data/src/cxx_supportlib/Utils/ProcessMetricsCollector.h +1 -0
  166. data/src/cxx_supportlib/Utils/StrIntUtilsNoStrictAliasing.cpp +2 -0
  167. data/src/cxx_supportlib/Utils/VariantMap.h +31 -0
  168. data/src/cxx_supportlib/WatchdogLauncher.cpp +7 -79
  169. data/src/cxx_supportlib/WatchdogLauncher.h +50 -53
  170. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +981 -0
  171. data/src/cxx_supportlib/oxt/macros.hpp +9 -0
  172. data/src/cxx_supportlib/vendor-copy/websocketpp/COPYING +145 -0
  173. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +342 -0
  174. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +49 -0
  175. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/base64/base64.hpp +178 -0
  176. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/client.hpp +33 -0
  177. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +342 -0
  178. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +131 -0
  179. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio_ssl.hpp +39 -0
  180. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/chrono.hpp +68 -0
  181. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/connection_hdl.hpp +52 -0
  182. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/cpp11.hpp +162 -0
  183. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/functional.hpp +105 -0
  184. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/md5.hpp +448 -0
  185. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +89 -0
  186. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/network.hpp +106 -0
  187. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/platforms.hpp +46 -0
  188. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/random.hpp +82 -0
  189. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/regex.hpp +59 -0
  190. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/stdint.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/system_error.hpp +84 -0
  192. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +84 -0
  193. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/time.hpp +56 -0
  194. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/type_traits.hpp +65 -0
  195. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/basic.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/none.hpp +80 -0
  197. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio.hpp +77 -0
  198. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_client.hpp +77 -0
  199. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls.hpp +73 -0
  200. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls_client.hpp +73 -0
  201. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/boost_config.hpp +72 -0
  202. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +285 -0
  203. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core_client.hpp +294 -0
  204. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug.hpp +286 -0
  205. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio.hpp +77 -0
  206. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +73 -0
  207. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_client.hpp +72 -0
  208. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_server.hpp +312 -0
  209. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +1651 -0
  210. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection_base.hpp +38 -0
  211. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +700 -0
  212. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint_base.hpp +38 -0
  213. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/error.hpp +277 -0
  214. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/extension.hpp +102 -0
  215. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +128 -0
  216. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +752 -0
  217. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +861 -0
  218. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/constants.hpp +308 -0
  219. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +196 -0
  220. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/request.hpp +191 -0
  221. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/response.hpp +266 -0
  222. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +619 -0
  223. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/request.hpp +124 -0
  224. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/response.hpp +188 -0
  225. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +2372 -0
  226. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +269 -0
  227. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/utilities_impl.hpp +87 -0
  228. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/basic.hpp +199 -0
  229. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/levels.hpp +203 -0
  230. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/stub.hpp +119 -0
  231. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/syslog.hpp +146 -0
  232. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/alloc.hpp +105 -0
  233. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/message.hpp +340 -0
  234. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/pool.hpp +229 -0
  235. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +299 -0
  236. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi00.hpp +462 -0
  237. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi07.hpp +78 -0
  238. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi08.hpp +83 -0
  239. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +1056 -0
  240. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/processor.hpp +407 -0
  241. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/none.hpp +60 -0
  242. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/random_device.hpp +80 -0
  243. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +173 -0
  244. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +190 -0
  245. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/server.hpp +33 -0
  246. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -0
  247. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/base.hpp +232 -0
  248. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +1204 -0
  249. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +1147 -0
  250. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/base.hpp +159 -0
  251. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +370 -0
  252. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +484 -0
  253. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/connection.hpp +238 -0
  254. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +77 -0
  255. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/base.hpp +104 -0
  256. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +412 -0
  257. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +140 -0
  258. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/base.hpp +133 -0
  259. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +714 -0
  260. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +222 -0
  261. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/base.hpp +95 -0
  262. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +286 -0
  263. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/endpoint.hpp +140 -0
  264. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +355 -0
  265. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utf8_validator.hpp +154 -0
  266. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +182 -0
  267. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +61 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +121 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +96 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +951 -0
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +520 -0
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +258 -0
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +942 -0
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +567 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +697 -0
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +386 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +1519 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +1137 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +288 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +569 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +854 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +371 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +35 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +521 -0
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2241 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +246 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +27 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +260 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +27 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +238 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +27 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +483 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +220 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +825 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +330 -0
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +438 -0
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +40 -0
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +173 -0
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +40 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +40 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +34 -0
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +32 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +47 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +70 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +491 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +68 -0
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +385 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +128 -0
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +127 -0
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +192 -0
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +83 -0
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +1050 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +294 -0
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +48 -0
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +34 -0
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +229 -0
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +38 -0
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +119 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +121 -0
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +121 -0
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +208 -0
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +244 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +50 -0
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +85 -0
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +41 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +82 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/function.hpp +40 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +91 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +68 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +65 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +99 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +82 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +45 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +57 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +161 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +480 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +333 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +120 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +453 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +80 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +432 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +78 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +688 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +167 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +307 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +82 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +498 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +126 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +49 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +48 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +76 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +48 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +210 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +153 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +269 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +132 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +89 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +315 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +90 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +190 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +649 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +3470 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +178 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +120 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +178 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +80 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.ipp +476 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +47 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +86 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +103 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +136 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +72 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +222 -0
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +26 -0
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +61 -0
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +63 -0
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +31 -0
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +50 -0
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +45 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +90 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +47 -0
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +66 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +69 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +71 -0
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +500 -0
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +62 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +63 -0
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +70 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +148 -0
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +216 -0
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +158 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +40 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +91 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +131 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +128 -0
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +120 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +78 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +87 -0
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +66 -0
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +107 -0
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +81 -0
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +166 -0
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +324 -0
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +90 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +236 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +138 -0
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +108 -0
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +125 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +135 -0
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +127 -0
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +122 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +125 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +460 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +452 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +32 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +42 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +63 -0
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +170 -0
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +35 -0
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +123 -0
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +133 -0
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +131 -0
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +131 -0
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +103 -0
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +81 -0
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +48 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +221 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +146 -0
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +40 -0
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +46 -0
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +84 -0
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +49 -0
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +51 -0
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +218 -0
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +100 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +336 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +318 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +93 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +410 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +63 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +54 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +178 -0
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +64 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +75 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +83 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +67 -0
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +144 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service.hpp +203 -0
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_operation.hpp +78 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_thread_info.hpp +42 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +58 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +93 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +55 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +53 -0
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +333 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +70 -0
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +95 -0
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +68 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +35 -0
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +42 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +71 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +60 -0
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +63 -0
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +85 -0
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +47 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +40 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +230 -0
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +130 -0
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +293 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +345 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +195 -0
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +125 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +135 -0
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +111 -0
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +123 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +124 -0
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +129 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +83 -0
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +56 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +87 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +114 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +65 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +360 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +340 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +432 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +130 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +79 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +156 -0
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +157 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +755 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +812 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +1149 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +61 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +556 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +355 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +25 -0
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +73 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +179 -0
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +767 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +827 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +772 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +202 -0
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +243 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +248 -0
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +265 -0
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +270 -0
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +96 -0
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +262 -0
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +246 -0
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +141 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +206 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +571 -0
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +44 -0
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +117 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +55 -0
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +228 -0
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +55 -0
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +180 -0
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +55 -0
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +300 -0
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +57 -0
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +56 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +193 -0
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +132 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +178 -0
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +157 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +113 -0
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +72 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +71 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +61 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +61 -0
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +241 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +106 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +82 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +135 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +130 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +92 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +125 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +492 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +364 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +99 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +39 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +262 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +438 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +633 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +666 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +925 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +386 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +38 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +169 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +255 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +30 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +136 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +308 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +522 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +267 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +30 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +42 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +789 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +194 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +42 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +112 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +166 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +70 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +327 -0
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +166 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +351 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +103 -0
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +30 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +74 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +75 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +62 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +128 -0
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +70 -0
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +75 -0
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +115 -0
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +73 -0
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +1177 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +102 -0
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +168 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +28 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +436 -0
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +176 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +396 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +526 -0
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +573 -0
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +503 -0
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +186 -0
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +102 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +758 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +54 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +42 -0
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +75 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +65 -0
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +63 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +254 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +382 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +35 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +59 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +88 -0
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +21 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +94 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +23 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +43 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +170 -0
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +283 -0
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +180 -0
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +378 -0
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +361 -0
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +40 -0
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +179 -0
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +118 -0
  613. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +39 -0
  614. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +222 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +39 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +220 -0
  617. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +620 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +672 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +23 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/chrono.hpp +20 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono.hpp +15 -0
  622. data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono_io.hpp +34 -0
  623. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/chrono.hpp +46 -0
  624. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +242 -0
  625. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +356 -0
  626. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +92 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +121 -0
  628. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +354 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +92 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/process_cpu_clocks.hpp +46 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/thread_clock.hpp +46 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp +54 -0
  633. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +163 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/chrono/floor.hpp +36 -0
  635. data/src/cxx_supportlib/vendor-modified/boost/chrono/include.hpp +23 -0
  636. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +593 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +295 -0
  638. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +317 -0
  639. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +35 -0
  640. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1003 -0
  641. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/ios_base_state.hpp +152 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_get.hpp +330 -0
  643. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1243 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_put.hpp +261 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +260 -0
  646. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +30 -0
  647. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +437 -0
  648. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/manip_base.hpp +101 -0
  649. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/to_string.hpp +50 -0
  650. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +637 -0
  651. data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +525 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/chrono/round.hpp +59 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/chrono/thread_clock.hpp +75 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/chrono/chrono.hpp +32 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/ratio.hpp +24 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +21 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +16 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +460 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +112 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +126 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +51 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +15 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +18 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +19 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +250 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +121 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +91 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +283 -0
  669. data/src/cxx_supportlib/vendor-modified/boost/random/bernoulli_distribution.hpp +197 -0
  670. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +184 -0
  671. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +434 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/random/cauchy_distribution.hpp +214 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/random/chi_squared_distribution.hpp +209 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/random/detail/auto_link.hpp +40 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +18 -0
  676. data/src/cxx_supportlib/vendor-modified/boost/random/detail/const_mod.hpp +216 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/random/detail/disable_warnings.hpp +29 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/random/detail/enable_warnings.hpp +22 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_bits.hpp +36 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_seed_seq.hpp +40 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +121 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +84 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/random/detail/iterator_mixin.hpp +45 -0
  684. data/src/cxx_supportlib/vendor-modified/boost/random/detail/large_arithmetic.hpp +122 -0
  685. data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +84 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/random/detail/polynomial.hpp +384 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/random/detail/ptr_helper.hpp +67 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +115 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +398 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/random/detail/signed_unsigned_tools.hpp +89 -0
  691. data/src/cxx_supportlib/vendor-modified/boost/random/detail/uniform_int_float.hpp +76 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +75 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +241 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +636 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/random/exponential_distribution.hpp +386 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/random/extreme_value_distribution.hpp +177 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/random/fisher_f_distribution.hpp +183 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +292 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +96 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/random/geometric_distribution.hpp +267 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +883 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +271 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +267 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +537 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/random/laplace_distribution.hpp +175 -0
  706. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +466 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +217 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/random/lognormal_distribution.hpp +254 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +682 -0
  710. data/src/cxx_supportlib/vendor-modified/boost/random/negative_binomial_distribution.hpp +220 -0
  711. data/src/cxx_supportlib/vendor-modified/boost/random/non_central_chi_squared_distribution.hpp +221 -0
  712. data/src/cxx_supportlib/vendor-modified/boost/random/normal_distribution.hpp +374 -0
  713. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +466 -0
  714. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +531 -0
  715. data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +360 -0
  716. data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +143 -0
  717. data/src/cxx_supportlib/vendor-modified/boost/random/random_number_generator.hpp +73 -0
  718. data/src/cxx_supportlib/vendor-modified/boost/random/ranlux.hpp +99 -0
  719. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +118 -0
  720. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +269 -0
  721. data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_output.hpp +51 -0
  722. data/src/cxx_supportlib/vendor-modified/boost/random/student_t_distribution.hpp +180 -0
  723. data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +613 -0
  724. data/src/cxx_supportlib/vendor-modified/boost/random/taus88.hpp +45 -0
  725. data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +107 -0
  726. data/src/cxx_supportlib/vendor-modified/boost/random/triangle_distribution.hpp +232 -0
  727. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_01.hpp +257 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int.hpp +99 -0
  729. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +419 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +284 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real.hpp +82 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +241 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +307 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/random/variate_generator.hpp +122 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/random/weibull_distribution.hpp +177 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +208 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/ratio.hpp +14 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +1342 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +16 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +30 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +22 -0
  742. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +19 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +30 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +30 -0
  745. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +30 -0
  746. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +30 -0
  747. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +30 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +30 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +30 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +30 -0
  751. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +30 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +30 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +30 -0
  754. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +31 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +30 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +25 -0
  757. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +15 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +30 -0
  759. data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +30 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +1076 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1002 -0
  762. data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +11 -0
  763. data/src/helper-scripts/rack-preloader.rb +1 -1
  764. data/src/nginx_module/{ConfigurationCommands.c → ConfigGeneral/AutoGeneratedDefinitions.c} +351 -134
  765. data/src/nginx_module/{ConfigurationCommands.c.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder} +14 -25
  766. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +396 -0
  767. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +160 -0
  768. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +831 -0
  769. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +168 -0
  770. data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +887 -0
  771. data/src/nginx_module/ConfigGeneral/ManifestGeneration.h +100 -0
  772. data/src/nginx_module/Configuration.c +165 -621
  773. data/src/nginx_module/Configuration.h +43 -33
  774. data/src/nginx_module/ContentHandler.c +46 -40
  775. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +282 -0
  776. data/src/nginx_module/{CreateLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder} +43 -17
  777. data/src/nginx_module/{CacheLocationConfig.c → LocationConfig/AutoGeneratedHeaderSerialization.c} +148 -180
  778. data/src/nginx_module/{CacheLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder} +13 -11
  779. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +595 -0
  780. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +190 -0
  781. data/src/nginx_module/{MergeLocationConfig.c → LocationConfig/AutoGeneratedMergeFunction.c} +32 -42
  782. data/src/nginx_module/{MergeLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder} +18 -11
  783. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +220 -0
  784. data/src/nginx_module/{LocationConfig.h.cxxcodebuilder → LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder} +70 -48
  785. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +163 -0
  786. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +125 -0
  787. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +303 -0
  788. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +173 -0
  789. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +133 -0
  790. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +154 -0
  791. data/src/nginx_module/config +13 -4
  792. data/src/nginx_module/ngx_http_passenger_module.c +154 -84
  793. data/src/ruby_supportlib/phusion_passenger.rb +2 -2
  794. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +613 -131
  795. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +52 -0
  796. data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -4
  797. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
  798. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +104 -0
  799. data/src/ruby_supportlib/phusion_passenger/constants.rb +0 -2
  800. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +470 -138
  801. data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
  802. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +17 -0
  803. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -1
  804. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +7 -7
  805. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +293 -0
  806. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +8 -54
  807. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -5
  808. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -7
  809. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  810. data/src/schema_printer/SchemaPrinterMain.cpp +78 -0
  811. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +116 -0
  812. metadata +671 -30
  813. data/src/apache2_module/Configuration.cpp +0 -737
  814. data/src/apache2_module/Configuration.hpp +0 -274
  815. data/src/apache2_module/ConfigurationCommands.cpp +0 -199
  816. data/src/apache2_module/ConfigurationFields.hpp +0 -187
  817. data/src/apache2_module/ConfigurationSetters.cpp +0 -436
  818. data/src/apache2_module/ConfigurationSetters.cpp.cxxcodebuilder +0 -144
  819. data/src/apache2_module/CreateDirConfig.cpp +0 -68
  820. data/src/apache2_module/CreateDirConfig.cpp.cxxcodebuilder +0 -81
  821. data/src/apache2_module/MergeDirConfig.cpp +0 -155
  822. data/src/apache2_module/SetHeaders.cpp +0 -111
  823. data/src/nginx_module/CreateLocationConfig.c +0 -100
  824. data/src/nginx_module/LocationConfig.h +0 -95
@@ -0,0 +1,220 @@
1
+ //
2
+ // completion_condition.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2017 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_COMPLETION_CONDITION_HPP
12
+ #define BOOST_ASIO_COMPLETION_CONDITION_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
+
21
+ #include <boost/asio/detail/push_options.hpp>
22
+
23
+ namespace boost {
24
+ namespace asio {
25
+
26
+ namespace detail {
27
+
28
+ // The default maximum number of bytes to transfer in a single operation.
29
+ enum default_max_transfer_size_t { default_max_transfer_size = 65536 };
30
+
31
+ // Adapt result of old-style completion conditions (which had a bool result
32
+ // where true indicated that the operation was complete).
33
+ inline std::size_t adapt_completion_condition_result(bool result)
34
+ {
35
+ return result ? 0 : default_max_transfer_size;
36
+ }
37
+
38
+ // Adapt result of current completion conditions (which have a size_t result
39
+ // where 0 means the operation is complete, and otherwise the result is the
40
+ // maximum number of bytes to transfer on the next underlying operation).
41
+ inline std::size_t adapt_completion_condition_result(std::size_t result)
42
+ {
43
+ return result;
44
+ }
45
+
46
+ class transfer_all_t
47
+ {
48
+ public:
49
+ typedef std::size_t result_type;
50
+
51
+ template <typename Error>
52
+ std::size_t operator()(const Error& err, std::size_t)
53
+ {
54
+ return !!err ? 0 : default_max_transfer_size;
55
+ }
56
+ };
57
+
58
+ class transfer_at_least_t
59
+ {
60
+ public:
61
+ typedef std::size_t result_type;
62
+
63
+ explicit transfer_at_least_t(std::size_t minimum)
64
+ : minimum_(minimum)
65
+ {
66
+ }
67
+
68
+ template <typename Error>
69
+ std::size_t operator()(const Error& err, std::size_t bytes_transferred)
70
+ {
71
+ return (!!err || bytes_transferred >= minimum_)
72
+ ? 0 : default_max_transfer_size;
73
+ }
74
+
75
+ private:
76
+ std::size_t minimum_;
77
+ };
78
+
79
+ class transfer_exactly_t
80
+ {
81
+ public:
82
+ typedef std::size_t result_type;
83
+
84
+ explicit transfer_exactly_t(std::size_t size)
85
+ : size_(size)
86
+ {
87
+ }
88
+
89
+ template <typename Error>
90
+ std::size_t operator()(const Error& err, std::size_t bytes_transferred)
91
+ {
92
+ return (!!err || bytes_transferred >= size_) ? 0 :
93
+ (size_ - bytes_transferred < default_max_transfer_size
94
+ ? size_ - bytes_transferred : std::size_t(default_max_transfer_size));
95
+ }
96
+
97
+ private:
98
+ std::size_t size_;
99
+ };
100
+
101
+ } // namespace detail
102
+
103
+ /**
104
+ * @defgroup completion_condition Completion Condition Function Objects
105
+ *
106
+ * Function objects used for determining when a read or write operation should
107
+ * complete.
108
+ */
109
+ /*@{*/
110
+
111
+ /// Return a completion condition function object that indicates that a read or
112
+ /// write operation should continue until all of the data has been transferred,
113
+ /// or until an error occurs.
114
+ /**
115
+ * This function is used to create an object, of unspecified type, that meets
116
+ * CompletionCondition requirements.
117
+ *
118
+ * @par Example
119
+ * Reading until a buffer is full:
120
+ * @code
121
+ * boost::array<char, 128> buf;
122
+ * boost::system::error_code ec;
123
+ * std::size_t n = boost::asio::read(
124
+ * sock, boost::asio::buffer(buf),
125
+ * boost::asio::transfer_all(), ec);
126
+ * if (ec)
127
+ * {
128
+ * // An error occurred.
129
+ * }
130
+ * else
131
+ * {
132
+ * // n == 128
133
+ * }
134
+ * @endcode
135
+ */
136
+ #if defined(GENERATING_DOCUMENTATION)
137
+ unspecified transfer_all();
138
+ #else
139
+ inline detail::transfer_all_t transfer_all()
140
+ {
141
+ return detail::transfer_all_t();
142
+ }
143
+ #endif
144
+
145
+ /// Return a completion condition function object that indicates that a read or
146
+ /// write operation should continue until a minimum number of bytes has been
147
+ /// transferred, or until an error occurs.
148
+ /**
149
+ * This function is used to create an object, of unspecified type, that meets
150
+ * CompletionCondition requirements.
151
+ *
152
+ * @par Example
153
+ * Reading until a buffer is full or contains at least 64 bytes:
154
+ * @code
155
+ * boost::array<char, 128> buf;
156
+ * boost::system::error_code ec;
157
+ * std::size_t n = boost::asio::read(
158
+ * sock, boost::asio::buffer(buf),
159
+ * boost::asio::transfer_at_least(64), ec);
160
+ * if (ec)
161
+ * {
162
+ * // An error occurred.
163
+ * }
164
+ * else
165
+ * {
166
+ * // n >= 64 && n <= 128
167
+ * }
168
+ * @endcode
169
+ */
170
+ #if defined(GENERATING_DOCUMENTATION)
171
+ unspecified transfer_at_least(std::size_t minimum);
172
+ #else
173
+ inline detail::transfer_at_least_t transfer_at_least(std::size_t minimum)
174
+ {
175
+ return detail::transfer_at_least_t(minimum);
176
+ }
177
+ #endif
178
+
179
+ /// Return a completion condition function object that indicates that a read or
180
+ /// write operation should continue until an exact number of bytes has been
181
+ /// transferred, or until an error occurs.
182
+ /**
183
+ * This function is used to create an object, of unspecified type, that meets
184
+ * CompletionCondition requirements.
185
+ *
186
+ * @par Example
187
+ * Reading until a buffer is full or contains exactly 64 bytes:
188
+ * @code
189
+ * boost::array<char, 128> buf;
190
+ * boost::system::error_code ec;
191
+ * std::size_t n = boost::asio::read(
192
+ * sock, boost::asio::buffer(buf),
193
+ * boost::asio::transfer_exactly(64), ec);
194
+ * if (ec)
195
+ * {
196
+ * // An error occurred.
197
+ * }
198
+ * else
199
+ * {
200
+ * // n == 64
201
+ * }
202
+ * @endcode
203
+ */
204
+ #if defined(GENERATING_DOCUMENTATION)
205
+ unspecified transfer_exactly(std::size_t size);
206
+ #else
207
+ inline detail::transfer_exactly_t transfer_exactly(std::size_t size)
208
+ {
209
+ return detail::transfer_exactly_t(size);
210
+ }
211
+ #endif
212
+
213
+ /*@}*/
214
+
215
+ } // namespace asio
216
+ } // namespace boost
217
+
218
+ #include <boost/asio/detail/pop_options.hpp>
219
+
220
+ #endif // BOOST_ASIO_COMPLETION_CONDITION_HPP
@@ -0,0 +1,825 @@
1
+ //
2
+ // connect.hpp
3
+ // ~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2017 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_CONNECT_HPP
12
+ #define BOOST_ASIO_CONNECT_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 <boost/asio/async_result.hpp>
20
+ #include <boost/asio/basic_socket.hpp>
21
+ #include <boost/asio/error.hpp>
22
+
23
+ #include <boost/asio/detail/push_options.hpp>
24
+
25
+ namespace boost {
26
+ namespace asio {
27
+
28
+ /**
29
+ * @defgroup connect boost::asio::connect
30
+ *
31
+ * @brief Establishes a socket connection by trying each endpoint in a sequence.
32
+ */
33
+ /*@{*/
34
+
35
+ /// Establishes a socket connection by trying each endpoint in a sequence.
36
+ /**
37
+ * This function attempts to connect a socket to one of a sequence of
38
+ * endpoints. It does this by repeated calls to the socket's @c connect member
39
+ * function, once for each endpoint in the sequence, until a connection is
40
+ * successfully established.
41
+ *
42
+ * @param s The socket to be connected. If the socket is already open, it will
43
+ * be closed.
44
+ *
45
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
46
+ *
47
+ * @returns On success, an iterator denoting the successfully connected
48
+ * endpoint. Otherwise, the end iterator.
49
+ *
50
+ * @throws boost::system::system_error Thrown on failure. If the sequence is
51
+ * empty, the associated @c error_code is boost::asio::error::not_found.
52
+ * Otherwise, contains the error from the last connection attempt.
53
+ *
54
+ * @note This overload assumes that a default constructed object of type @c
55
+ * Iterator represents the end of the sequence. This is a valid assumption for
56
+ * iterator types such as @c boost::asio::ip::tcp::resolver::iterator.
57
+ *
58
+ * @par Example
59
+ * @code tcp::resolver r(io_service);
60
+ * tcp::resolver::query q("host", "service");
61
+ * tcp::socket s(io_service);
62
+ * boost::asio::connect(s, r.resolve(q)); @endcode
63
+ */
64
+ template <typename Protocol, typename SocketService, typename Iterator>
65
+ Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin);
66
+
67
+ /// Establishes a socket connection by trying each endpoint in a sequence.
68
+ /**
69
+ * This function attempts to connect a socket to one of a sequence of
70
+ * endpoints. It does this by repeated calls to the socket's @c connect member
71
+ * function, once for each endpoint in the sequence, until a connection is
72
+ * successfully established.
73
+ *
74
+ * @param s The socket to be connected. If the socket is already open, it will
75
+ * be closed.
76
+ *
77
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
78
+ *
79
+ * @param ec Set to indicate what error occurred, if any. If the sequence is
80
+ * empty, set to boost::asio::error::not_found. Otherwise, contains the error
81
+ * from the last connection attempt.
82
+ *
83
+ * @returns On success, an iterator denoting the successfully connected
84
+ * endpoint. Otherwise, the end iterator.
85
+ *
86
+ * @note This overload assumes that a default constructed object of type @c
87
+ * Iterator represents the end of the sequence. This is a valid assumption for
88
+ * iterator types such as @c boost::asio::ip::tcp::resolver::iterator.
89
+ *
90
+ * @par Example
91
+ * @code tcp::resolver r(io_service);
92
+ * tcp::resolver::query q("host", "service");
93
+ * tcp::socket s(io_service);
94
+ * boost::system::error_code ec;
95
+ * boost::asio::connect(s, r.resolve(q), ec);
96
+ * if (ec)
97
+ * {
98
+ * // An error occurred.
99
+ * } @endcode
100
+ */
101
+ template <typename Protocol, typename SocketService, typename Iterator>
102
+ Iterator connect(basic_socket<Protocol, SocketService>& s,
103
+ Iterator begin, boost::system::error_code& ec);
104
+
105
+ /// Establishes a socket connection by trying each endpoint in a sequence.
106
+ /**
107
+ * This function attempts to connect a socket to one of a sequence of
108
+ * endpoints. It does this by repeated calls to the socket's @c connect member
109
+ * function, once for each endpoint in the sequence, until a connection is
110
+ * successfully established.
111
+ *
112
+ * @param s The socket to be connected. If the socket is already open, it will
113
+ * be closed.
114
+ *
115
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
116
+ *
117
+ * @param end An iterator pointing to the end of a sequence of endpoints.
118
+ *
119
+ * @returns On success, an iterator denoting the successfully connected
120
+ * endpoint. Otherwise, the end iterator.
121
+ *
122
+ * @throws boost::system::system_error Thrown on failure. If the sequence is
123
+ * empty, the associated @c error_code is boost::asio::error::not_found.
124
+ * Otherwise, contains the error from the last connection attempt.
125
+ *
126
+ * @par Example
127
+ * @code tcp::resolver r(io_service);
128
+ * tcp::resolver::query q("host", "service");
129
+ * tcp::resolver::iterator i = r.resolve(q), end;
130
+ * tcp::socket s(io_service);
131
+ * boost::asio::connect(s, i, end); @endcode
132
+ */
133
+ template <typename Protocol, typename SocketService, typename Iterator>
134
+ Iterator connect(basic_socket<Protocol, SocketService>& s,
135
+ Iterator begin, Iterator end);
136
+
137
+ /// Establishes a socket connection by trying each endpoint in a sequence.
138
+ /**
139
+ * This function attempts to connect a socket to one of a sequence of
140
+ * endpoints. It does this by repeated calls to the socket's @c connect member
141
+ * function, once for each endpoint in the sequence, until a connection is
142
+ * successfully established.
143
+ *
144
+ * @param s The socket to be connected. If the socket is already open, it will
145
+ * be closed.
146
+ *
147
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
148
+ *
149
+ * @param end An iterator pointing to the end of a sequence of endpoints.
150
+ *
151
+ * @param ec Set to indicate what error occurred, if any. If the sequence is
152
+ * empty, set to boost::asio::error::not_found. Otherwise, contains the error
153
+ * from the last connection attempt.
154
+ *
155
+ * @returns On success, an iterator denoting the successfully connected
156
+ * endpoint. Otherwise, the end iterator.
157
+ *
158
+ * @par Example
159
+ * @code tcp::resolver r(io_service);
160
+ * tcp::resolver::query q("host", "service");
161
+ * tcp::resolver::iterator i = r.resolve(q), end;
162
+ * tcp::socket s(io_service);
163
+ * boost::system::error_code ec;
164
+ * boost::asio::connect(s, i, end, ec);
165
+ * if (ec)
166
+ * {
167
+ * // An error occurred.
168
+ * } @endcode
169
+ */
170
+ template <typename Protocol, typename SocketService, typename Iterator>
171
+ Iterator connect(basic_socket<Protocol, SocketService>& s,
172
+ Iterator begin, Iterator end, boost::system::error_code& ec);
173
+
174
+ /// Establishes a socket connection by trying each endpoint in a sequence.
175
+ /**
176
+ * This function attempts to connect a socket to one of a sequence of
177
+ * endpoints. It does this by repeated calls to the socket's @c connect member
178
+ * function, once for each endpoint in the sequence, until a connection is
179
+ * successfully established.
180
+ *
181
+ * @param s The socket to be connected. If the socket is already open, it will
182
+ * be closed.
183
+ *
184
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
185
+ *
186
+ * @param connect_condition A function object that is called prior to each
187
+ * connection attempt. The signature of the function object must be:
188
+ * @code Iterator connect_condition(
189
+ * const boost::system::error_code& ec,
190
+ * Iterator next); @endcode
191
+ * The @c ec parameter contains the result from the most recent connect
192
+ * operation. Before the first connection attempt, @c ec is always set to
193
+ * indicate success. The @c next parameter is an iterator pointing to the next
194
+ * endpoint to be tried. The function object should return the next iterator,
195
+ * but is permitted to return a different iterator so that endpoints may be
196
+ * skipped. The implementation guarantees that the function object will never
197
+ * be called with the end iterator.
198
+ *
199
+ * @returns On success, an iterator denoting the successfully connected
200
+ * endpoint. Otherwise, the end iterator.
201
+ *
202
+ * @throws boost::system::system_error Thrown on failure. If the sequence is
203
+ * empty, the associated @c error_code is boost::asio::error::not_found.
204
+ * Otherwise, contains the error from the last connection attempt.
205
+ *
206
+ * @note This overload assumes that a default constructed object of type @c
207
+ * Iterator represents the end of the sequence. This is a valid assumption for
208
+ * iterator types such as @c boost::asio::ip::tcp::resolver::iterator.
209
+ *
210
+ * @par Example
211
+ * The following connect condition function object can be used to output
212
+ * information about the individual connection attempts:
213
+ * @code struct my_connect_condition
214
+ * {
215
+ * template <typename Iterator>
216
+ * Iterator operator()(
217
+ * const boost::system::error_code& ec,
218
+ * Iterator next)
219
+ * {
220
+ * if (ec) std::cout << "Error: " << ec.message() << std::endl;
221
+ * std::cout << "Trying: " << next->endpoint() << std::endl;
222
+ * return next;
223
+ * }
224
+ * }; @endcode
225
+ * It would be used with the boost::asio::connect function as follows:
226
+ * @code tcp::resolver r(io_service);
227
+ * tcp::resolver::query q("host", "service");
228
+ * tcp::socket s(io_service);
229
+ * tcp::resolver::iterator i = boost::asio::connect(
230
+ * s, r.resolve(q), my_connect_condition());
231
+ * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode
232
+ */
233
+ template <typename Protocol, typename SocketService,
234
+ typename Iterator, typename ConnectCondition>
235
+ Iterator connect(basic_socket<Protocol, SocketService>& s,
236
+ Iterator begin, ConnectCondition connect_condition);
237
+
238
+ /// Establishes a socket connection by trying each endpoint in a sequence.
239
+ /**
240
+ * This function attempts to connect a socket to one of a sequence of
241
+ * endpoints. It does this by repeated calls to the socket's @c connect member
242
+ * function, once for each endpoint in the sequence, until a connection is
243
+ * successfully established.
244
+ *
245
+ * @param s The socket to be connected. If the socket is already open, it will
246
+ * be closed.
247
+ *
248
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
249
+ *
250
+ * @param connect_condition A function object that is called prior to each
251
+ * connection attempt. The signature of the function object must be:
252
+ * @code Iterator connect_condition(
253
+ * const boost::system::error_code& ec,
254
+ * Iterator next); @endcode
255
+ * The @c ec parameter contains the result from the most recent connect
256
+ * operation. Before the first connection attempt, @c ec is always set to
257
+ * indicate success. The @c next parameter is an iterator pointing to the next
258
+ * endpoint to be tried. The function object should return the next iterator,
259
+ * but is permitted to return a different iterator so that endpoints may be
260
+ * skipped. The implementation guarantees that the function object will never
261
+ * be called with the end iterator.
262
+ *
263
+ * @param ec Set to indicate what error occurred, if any. If the sequence is
264
+ * empty, set to boost::asio::error::not_found. Otherwise, contains the error
265
+ * from the last connection attempt.
266
+ *
267
+ * @returns On success, an iterator denoting the successfully connected
268
+ * endpoint. Otherwise, the end iterator.
269
+ *
270
+ * @note This overload assumes that a default constructed object of type @c
271
+ * Iterator represents the end of the sequence. This is a valid assumption for
272
+ * iterator types such as @c boost::asio::ip::tcp::resolver::iterator.
273
+ *
274
+ * @par Example
275
+ * The following connect condition function object can be used to output
276
+ * information about the individual connection attempts:
277
+ * @code struct my_connect_condition
278
+ * {
279
+ * template <typename Iterator>
280
+ * Iterator operator()(
281
+ * const boost::system::error_code& ec,
282
+ * Iterator next)
283
+ * {
284
+ * if (ec) std::cout << "Error: " << ec.message() << std::endl;
285
+ * std::cout << "Trying: " << next->endpoint() << std::endl;
286
+ * return next;
287
+ * }
288
+ * }; @endcode
289
+ * It would be used with the boost::asio::connect function as follows:
290
+ * @code tcp::resolver r(io_service);
291
+ * tcp::resolver::query q("host", "service");
292
+ * tcp::socket s(io_service);
293
+ * boost::system::error_code ec;
294
+ * tcp::resolver::iterator i = boost::asio::connect(
295
+ * s, r.resolve(q), my_connect_condition(), ec);
296
+ * if (ec)
297
+ * {
298
+ * // An error occurred.
299
+ * }
300
+ * else
301
+ * {
302
+ * std::cout << "Connected to: " << i->endpoint() << std::endl;
303
+ * } @endcode
304
+ */
305
+ template <typename Protocol, typename SocketService,
306
+ typename Iterator, typename ConnectCondition>
307
+ Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
308
+ ConnectCondition connect_condition, boost::system::error_code& ec);
309
+
310
+ /// Establishes a socket connection by trying each endpoint in a sequence.
311
+ /**
312
+ * This function attempts to connect a socket to one of a sequence of
313
+ * endpoints. It does this by repeated calls to the socket's @c connect member
314
+ * function, once for each endpoint in the sequence, until a connection is
315
+ * successfully established.
316
+ *
317
+ * @param s The socket to be connected. If the socket is already open, it will
318
+ * be closed.
319
+ *
320
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
321
+ *
322
+ * @param end An iterator pointing to the end of a sequence of endpoints.
323
+ *
324
+ * @param connect_condition A function object that is called prior to each
325
+ * connection attempt. The signature of the function object must be:
326
+ * @code Iterator connect_condition(
327
+ * const boost::system::error_code& ec,
328
+ * Iterator next); @endcode
329
+ * The @c ec parameter contains the result from the most recent connect
330
+ * operation. Before the first connection attempt, @c ec is always set to
331
+ * indicate success. The @c next parameter is an iterator pointing to the next
332
+ * endpoint to be tried. The function object should return the next iterator,
333
+ * but is permitted to return a different iterator so that endpoints may be
334
+ * skipped. The implementation guarantees that the function object will never
335
+ * be called with the end iterator.
336
+ *
337
+ * @returns On success, an iterator denoting the successfully connected
338
+ * endpoint. Otherwise, the end iterator.
339
+ *
340
+ * @throws boost::system::system_error Thrown on failure. If the sequence is
341
+ * empty, the associated @c error_code is boost::asio::error::not_found.
342
+ * Otherwise, contains the error from the last connection attempt.
343
+ *
344
+ * @par Example
345
+ * The following connect condition function object can be used to output
346
+ * information about the individual connection attempts:
347
+ * @code struct my_connect_condition
348
+ * {
349
+ * template <typename Iterator>
350
+ * Iterator operator()(
351
+ * const boost::system::error_code& ec,
352
+ * Iterator next)
353
+ * {
354
+ * if (ec) std::cout << "Error: " << ec.message() << std::endl;
355
+ * std::cout << "Trying: " << next->endpoint() << std::endl;
356
+ * return next;
357
+ * }
358
+ * }; @endcode
359
+ * It would be used with the boost::asio::connect function as follows:
360
+ * @code tcp::resolver r(io_service);
361
+ * tcp::resolver::query q("host", "service");
362
+ * tcp::resolver::iterator i = r.resolve(q), end;
363
+ * tcp::socket s(io_service);
364
+ * i = boost::asio::connect(s, i, end, my_connect_condition());
365
+ * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode
366
+ */
367
+ template <typename Protocol, typename SocketService,
368
+ typename Iterator, typename ConnectCondition>
369
+ Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
370
+ Iterator end, ConnectCondition connect_condition);
371
+
372
+ /// Establishes a socket connection by trying each endpoint in a sequence.
373
+ /**
374
+ * This function attempts to connect a socket to one of a sequence of
375
+ * endpoints. It does this by repeated calls to the socket's @c connect member
376
+ * function, once for each endpoint in the sequence, until a connection is
377
+ * successfully established.
378
+ *
379
+ * @param s The socket to be connected. If the socket is already open, it will
380
+ * be closed.
381
+ *
382
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
383
+ *
384
+ * @param end An iterator pointing to the end of a sequence of endpoints.
385
+ *
386
+ * @param connect_condition A function object that is called prior to each
387
+ * connection attempt. The signature of the function object must be:
388
+ * @code Iterator connect_condition(
389
+ * const boost::system::error_code& ec,
390
+ * Iterator next); @endcode
391
+ * The @c ec parameter contains the result from the most recent connect
392
+ * operation. Before the first connection attempt, @c ec is always set to
393
+ * indicate success. The @c next parameter is an iterator pointing to the next
394
+ * endpoint to be tried. The function object should return the next iterator,
395
+ * but is permitted to return a different iterator so that endpoints may be
396
+ * skipped. The implementation guarantees that the function object will never
397
+ * be called with the end iterator.
398
+ *
399
+ * @param ec Set to indicate what error occurred, if any. If the sequence is
400
+ * empty, set to boost::asio::error::not_found. Otherwise, contains the error
401
+ * from the last connection attempt.
402
+ *
403
+ * @returns On success, an iterator denoting the successfully connected
404
+ * endpoint. Otherwise, the end iterator.
405
+ *
406
+ * @par Example
407
+ * The following connect condition function object can be used to output
408
+ * information about the individual connection attempts:
409
+ * @code struct my_connect_condition
410
+ * {
411
+ * template <typename Iterator>
412
+ * Iterator operator()(
413
+ * const boost::system::error_code& ec,
414
+ * Iterator next)
415
+ * {
416
+ * if (ec) std::cout << "Error: " << ec.message() << std::endl;
417
+ * std::cout << "Trying: " << next->endpoint() << std::endl;
418
+ * return next;
419
+ * }
420
+ * }; @endcode
421
+ * It would be used with the boost::asio::connect function as follows:
422
+ * @code tcp::resolver r(io_service);
423
+ * tcp::resolver::query q("host", "service");
424
+ * tcp::resolver::iterator i = r.resolve(q), end;
425
+ * tcp::socket s(io_service);
426
+ * boost::system::error_code ec;
427
+ * i = boost::asio::connect(s, i, end, my_connect_condition(), ec);
428
+ * if (ec)
429
+ * {
430
+ * // An error occurred.
431
+ * }
432
+ * else
433
+ * {
434
+ * std::cout << "Connected to: " << i->endpoint() << std::endl;
435
+ * } @endcode
436
+ */
437
+ template <typename Protocol, typename SocketService,
438
+ typename Iterator, typename ConnectCondition>
439
+ Iterator connect(basic_socket<Protocol, SocketService>& s,
440
+ Iterator begin, Iterator end, ConnectCondition connect_condition,
441
+ boost::system::error_code& ec);
442
+
443
+ /*@}*/
444
+
445
+ /**
446
+ * @defgroup async_connect boost::asio::async_connect
447
+ *
448
+ * @brief Asynchronously establishes a socket connection by trying each
449
+ * endpoint in a sequence.
450
+ */
451
+ /*@{*/
452
+
453
+ /// Asynchronously establishes a socket connection by trying each endpoint in a
454
+ /// sequence.
455
+ /**
456
+ * This function attempts to connect a socket to one of a sequence of
457
+ * endpoints. It does this by repeated calls to the socket's @c async_connect
458
+ * member function, once for each endpoint in the sequence, until a connection
459
+ * is successfully established.
460
+ *
461
+ * @param s The socket to be connected. If the socket is already open, it will
462
+ * be closed.
463
+ *
464
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
465
+ *
466
+ * @param handler The handler to be called when the connect operation
467
+ * completes. Copies will be made of the handler as required. The function
468
+ * signature of the handler must be:
469
+ * @code void handler(
470
+ * // Result of operation. if the sequence is empty, set to
471
+ * // boost::asio::error::not_found. Otherwise, contains the
472
+ * // error from the last connection attempt.
473
+ * const boost::system::error_code& error,
474
+ *
475
+ * // On success, an iterator denoting the successfully
476
+ * // connected endpoint. Otherwise, the end iterator.
477
+ * Iterator iterator
478
+ * ); @endcode
479
+ * Regardless of whether the asynchronous operation completes immediately or
480
+ * not, the handler will not be invoked from within this function. Invocation
481
+ * of the handler will be performed in a manner equivalent to using
482
+ * boost::asio::io_service::post().
483
+ *
484
+ * @note This overload assumes that a default constructed object of type @c
485
+ * Iterator represents the end of the sequence. This is a valid assumption for
486
+ * iterator types such as @c boost::asio::ip::tcp::resolver::iterator.
487
+ *
488
+ * @par Example
489
+ * @code tcp::resolver r(io_service);
490
+ * tcp::resolver::query q("host", "service");
491
+ * tcp::socket s(io_service);
492
+ *
493
+ * // ...
494
+ *
495
+ * r.async_resolve(q, resolve_handler);
496
+ *
497
+ * // ...
498
+ *
499
+ * void resolve_handler(
500
+ * const boost::system::error_code& ec,
501
+ * tcp::resolver::iterator i)
502
+ * {
503
+ * if (!ec)
504
+ * {
505
+ * boost::asio::async_connect(s, i, connect_handler);
506
+ * }
507
+ * }
508
+ *
509
+ * // ...
510
+ *
511
+ * void connect_handler(
512
+ * const boost::system::error_code& ec,
513
+ * tcp::resolver::iterator i)
514
+ * {
515
+ * // ...
516
+ * } @endcode
517
+ */
518
+ template <typename Protocol, typename SocketService,
519
+ typename Iterator, typename ComposedConnectHandler>
520
+ BOOST_ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
521
+ void (boost::system::error_code, Iterator))
522
+ async_connect(basic_socket<Protocol, SocketService>& s,
523
+ Iterator begin, BOOST_ASIO_MOVE_ARG(ComposedConnectHandler) handler);
524
+
525
+ /// Asynchronously establishes a socket connection by trying each endpoint in a
526
+ /// sequence.
527
+ /**
528
+ * This function attempts to connect a socket to one of a sequence of
529
+ * endpoints. It does this by repeated calls to the socket's @c async_connect
530
+ * member function, once for each endpoint in the sequence, until a connection
531
+ * is successfully established.
532
+ *
533
+ * @param s The socket to be connected. If the socket is already open, it will
534
+ * be closed.
535
+ *
536
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
537
+ *
538
+ * @param end An iterator pointing to the end of a sequence of endpoints.
539
+ *
540
+ * @param handler The handler to be called when the connect operation
541
+ * completes. Copies will be made of the handler as required. The function
542
+ * signature of the handler must be:
543
+ * @code void handler(
544
+ * // Result of operation. if the sequence is empty, set to
545
+ * // boost::asio::error::not_found. Otherwise, contains the
546
+ * // error from the last connection attempt.
547
+ * const boost::system::error_code& error,
548
+ *
549
+ * // On success, an iterator denoting the successfully
550
+ * // connected endpoint. Otherwise, the end iterator.
551
+ * Iterator iterator
552
+ * ); @endcode
553
+ * Regardless of whether the asynchronous operation completes immediately or
554
+ * not, the handler will not be invoked from within this function. Invocation
555
+ * of the handler will be performed in a manner equivalent to using
556
+ * boost::asio::io_service::post().
557
+ *
558
+ * @par Example
559
+ * @code tcp::resolver r(io_service);
560
+ * tcp::resolver::query q("host", "service");
561
+ * tcp::socket s(io_service);
562
+ *
563
+ * // ...
564
+ *
565
+ * r.async_resolve(q, resolve_handler);
566
+ *
567
+ * // ...
568
+ *
569
+ * void resolve_handler(
570
+ * const boost::system::error_code& ec,
571
+ * tcp::resolver::iterator i)
572
+ * {
573
+ * if (!ec)
574
+ * {
575
+ * tcp::resolver::iterator end;
576
+ * boost::asio::async_connect(s, i, end, connect_handler);
577
+ * }
578
+ * }
579
+ *
580
+ * // ...
581
+ *
582
+ * void connect_handler(
583
+ * const boost::system::error_code& ec,
584
+ * tcp::resolver::iterator i)
585
+ * {
586
+ * // ...
587
+ * } @endcode
588
+ */
589
+ template <typename Protocol, typename SocketService,
590
+ typename Iterator, typename ComposedConnectHandler>
591
+ BOOST_ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
592
+ void (boost::system::error_code, Iterator))
593
+ async_connect(basic_socket<Protocol, SocketService>& s,
594
+ Iterator begin, Iterator end,
595
+ BOOST_ASIO_MOVE_ARG(ComposedConnectHandler) handler);
596
+
597
+ /// Asynchronously establishes a socket connection by trying each endpoint in a
598
+ /// sequence.
599
+ /**
600
+ * This function attempts to connect a socket to one of a sequence of
601
+ * endpoints. It does this by repeated calls to the socket's @c async_connect
602
+ * member function, once for each endpoint in the sequence, until a connection
603
+ * is successfully established.
604
+ *
605
+ * @param s The socket to be connected. If the socket is already open, it will
606
+ * be closed.
607
+ *
608
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
609
+ *
610
+ * @param connect_condition A function object that is called prior to each
611
+ * connection attempt. The signature of the function object must be:
612
+ * @code Iterator connect_condition(
613
+ * const boost::system::error_code& ec,
614
+ * Iterator next); @endcode
615
+ * The @c ec parameter contains the result from the most recent connect
616
+ * operation. Before the first connection attempt, @c ec is always set to
617
+ * indicate success. The @c next parameter is an iterator pointing to the next
618
+ * endpoint to be tried. The function object should return the next iterator,
619
+ * but is permitted to return a different iterator so that endpoints may be
620
+ * skipped. The implementation guarantees that the function object will never
621
+ * be called with the end iterator.
622
+ *
623
+ * @param handler The handler to be called when the connect operation
624
+ * completes. Copies will be made of the handler as required. The function
625
+ * signature of the handler must be:
626
+ * @code void handler(
627
+ * // Result of operation. if the sequence is empty, set to
628
+ * // boost::asio::error::not_found. Otherwise, contains the
629
+ * // error from the last connection attempt.
630
+ * const boost::system::error_code& error,
631
+ *
632
+ * // On success, an iterator denoting the successfully
633
+ * // connected endpoint. Otherwise, the end iterator.
634
+ * Iterator iterator
635
+ * ); @endcode
636
+ * Regardless of whether the asynchronous operation completes immediately or
637
+ * not, the handler will not be invoked from within this function. Invocation
638
+ * of the handler will be performed in a manner equivalent to using
639
+ * boost::asio::io_service::post().
640
+ *
641
+ * @note This overload assumes that a default constructed object of type @c
642
+ * Iterator represents the end of the sequence. This is a valid assumption for
643
+ * iterator types such as @c boost::asio::ip::tcp::resolver::iterator.
644
+ *
645
+ * @par Example
646
+ * The following connect condition function object can be used to output
647
+ * information about the individual connection attempts:
648
+ * @code struct my_connect_condition
649
+ * {
650
+ * template <typename Iterator>
651
+ * Iterator operator()(
652
+ * const boost::system::error_code& ec,
653
+ * Iterator next)
654
+ * {
655
+ * if (ec) std::cout << "Error: " << ec.message() << std::endl;
656
+ * std::cout << "Trying: " << next->endpoint() << std::endl;
657
+ * return next;
658
+ * }
659
+ * }; @endcode
660
+ * It would be used with the boost::asio::connect function as follows:
661
+ * @code tcp::resolver r(io_service);
662
+ * tcp::resolver::query q("host", "service");
663
+ * tcp::socket s(io_service);
664
+ *
665
+ * // ...
666
+ *
667
+ * r.async_resolve(q, resolve_handler);
668
+ *
669
+ * // ...
670
+ *
671
+ * void resolve_handler(
672
+ * const boost::system::error_code& ec,
673
+ * tcp::resolver::iterator i)
674
+ * {
675
+ * if (!ec)
676
+ * {
677
+ * boost::asio::async_connect(s, i,
678
+ * my_connect_condition(),
679
+ * connect_handler);
680
+ * }
681
+ * }
682
+ *
683
+ * // ...
684
+ *
685
+ * void connect_handler(
686
+ * const boost::system::error_code& ec,
687
+ * tcp::resolver::iterator i)
688
+ * {
689
+ * if (ec)
690
+ * {
691
+ * // An error occurred.
692
+ * }
693
+ * else
694
+ * {
695
+ * std::cout << "Connected to: " << i->endpoint() << std::endl;
696
+ * }
697
+ * } @endcode
698
+ */
699
+ template <typename Protocol, typename SocketService, typename Iterator,
700
+ typename ConnectCondition, typename ComposedConnectHandler>
701
+ BOOST_ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
702
+ void (boost::system::error_code, Iterator))
703
+ async_connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
704
+ ConnectCondition connect_condition,
705
+ BOOST_ASIO_MOVE_ARG(ComposedConnectHandler) handler);
706
+
707
+ /// Asynchronously establishes a socket connection by trying each endpoint in a
708
+ /// sequence.
709
+ /**
710
+ * This function attempts to connect a socket to one of a sequence of
711
+ * endpoints. It does this by repeated calls to the socket's @c async_connect
712
+ * member function, once for each endpoint in the sequence, until a connection
713
+ * is successfully established.
714
+ *
715
+ * @param s The socket to be connected. If the socket is already open, it will
716
+ * be closed.
717
+ *
718
+ * @param begin An iterator pointing to the start of a sequence of endpoints.
719
+ *
720
+ * @param end An iterator pointing to the end of a sequence of endpoints.
721
+ *
722
+ * @param connect_condition A function object that is called prior to each
723
+ * connection attempt. The signature of the function object must be:
724
+ * @code Iterator connect_condition(
725
+ * const boost::system::error_code& ec,
726
+ * Iterator next); @endcode
727
+ * The @c ec parameter contains the result from the most recent connect
728
+ * operation. Before the first connection attempt, @c ec is always set to
729
+ * indicate success. The @c next parameter is an iterator pointing to the next
730
+ * endpoint to be tried. The function object should return the next iterator,
731
+ * but is permitted to return a different iterator so that endpoints may be
732
+ * skipped. The implementation guarantees that the function object will never
733
+ * be called with the end iterator.
734
+ *
735
+ * @param handler The handler to be called when the connect operation
736
+ * completes. Copies will be made of the handler as required. The function
737
+ * signature of the handler must be:
738
+ * @code void handler(
739
+ * // Result of operation. if the sequence is empty, set to
740
+ * // boost::asio::error::not_found. Otherwise, contains the
741
+ * // error from the last connection attempt.
742
+ * const boost::system::error_code& error,
743
+ *
744
+ * // On success, an iterator denoting the successfully
745
+ * // connected endpoint. Otherwise, the end iterator.
746
+ * Iterator iterator
747
+ * ); @endcode
748
+ * Regardless of whether the asynchronous operation completes immediately or
749
+ * not, the handler will not be invoked from within this function. Invocation
750
+ * of the handler will be performed in a manner equivalent to using
751
+ * boost::asio::io_service::post().
752
+ *
753
+ * @par Example
754
+ * The following connect condition function object can be used to output
755
+ * information about the individual connection attempts:
756
+ * @code struct my_connect_condition
757
+ * {
758
+ * template <typename Iterator>
759
+ * Iterator operator()(
760
+ * const boost::system::error_code& ec,
761
+ * Iterator next)
762
+ * {
763
+ * if (ec) std::cout << "Error: " << ec.message() << std::endl;
764
+ * std::cout << "Trying: " << next->endpoint() << std::endl;
765
+ * return next;
766
+ * }
767
+ * }; @endcode
768
+ * It would be used with the boost::asio::connect function as follows:
769
+ * @code tcp::resolver r(io_service);
770
+ * tcp::resolver::query q("host", "service");
771
+ * tcp::socket s(io_service);
772
+ *
773
+ * // ...
774
+ *
775
+ * r.async_resolve(q, resolve_handler);
776
+ *
777
+ * // ...
778
+ *
779
+ * void resolve_handler(
780
+ * const boost::system::error_code& ec,
781
+ * tcp::resolver::iterator i)
782
+ * {
783
+ * if (!ec)
784
+ * {
785
+ * tcp::resolver::iterator end;
786
+ * boost::asio::async_connect(s, i, end,
787
+ * my_connect_condition(),
788
+ * connect_handler);
789
+ * }
790
+ * }
791
+ *
792
+ * // ...
793
+ *
794
+ * void connect_handler(
795
+ * const boost::system::error_code& ec,
796
+ * tcp::resolver::iterator i)
797
+ * {
798
+ * if (ec)
799
+ * {
800
+ * // An error occurred.
801
+ * }
802
+ * else
803
+ * {
804
+ * std::cout << "Connected to: " << i->endpoint() << std::endl;
805
+ * }
806
+ * } @endcode
807
+ */
808
+ template <typename Protocol, typename SocketService, typename Iterator,
809
+ typename ConnectCondition, typename ComposedConnectHandler>
810
+ BOOST_ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
811
+ void (boost::system::error_code, Iterator))
812
+ async_connect(basic_socket<Protocol, SocketService>& s,
813
+ Iterator begin, Iterator end, ConnectCondition connect_condition,
814
+ BOOST_ASIO_MOVE_ARG(ComposedConnectHandler) handler);
815
+
816
+ /*@}*/
817
+
818
+ } // namespace asio
819
+ } // namespace boost
820
+
821
+ #include <boost/asio/detail/pop_options.hpp>
822
+
823
+ #include <boost/asio/impl/connect.hpp>
824
+
825
+ #endif