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,186 @@
1
+ //
2
+ // ssl/old/stream_service.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
6
+ // Copyright (c) 2005-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
7
+ //
8
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
9
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
10
+ //
11
+
12
+ #ifndef BOOST_ASIO_SSL_OLD_STREAM_SERVICE_HPP
13
+ #define BOOST_ASIO_SSL_OLD_STREAM_SERVICE_HPP
14
+
15
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
16
+ # pragma once
17
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
18
+
19
+ #include <boost/asio/detail/config.hpp>
20
+ #include <cstddef>
21
+ #include <boost/noncopyable.hpp>
22
+ #include <boost/asio/io_service.hpp>
23
+ #include <boost/asio/ssl/basic_context.hpp>
24
+ #include <boost/asio/ssl/old/detail/openssl_stream_service.hpp>
25
+ #include <boost/asio/ssl/stream_base.hpp>
26
+
27
+ #include <boost/asio/detail/push_options.hpp>
28
+
29
+ namespace boost {
30
+ namespace asio {
31
+ namespace ssl {
32
+ namespace old {
33
+
34
+ /// Default service implementation for an SSL stream.
35
+ class stream_service
36
+ #if defined(GENERATING_DOCUMENTATION)
37
+ : public boost::asio::io_service::service
38
+ #else
39
+ : public boost::asio::detail::service_base<stream_service>
40
+ #endif
41
+ {
42
+ private:
43
+ // The type of the platform-specific implementation.
44
+ typedef old::detail::openssl_stream_service service_impl_type;
45
+
46
+ public:
47
+ #if defined(GENERATING_DOCUMENTATION)
48
+ /// The unique service identifier.
49
+ static boost::asio::io_service::id id;
50
+ #endif
51
+
52
+ /// The type of a stream implementation.
53
+ #if defined(GENERATING_DOCUMENTATION)
54
+ typedef implementation_defined impl_type;
55
+ #else
56
+ typedef service_impl_type::impl_type impl_type;
57
+ #endif
58
+
59
+ /// Construct a new stream service for the specified io_service.
60
+ explicit stream_service(boost::asio::io_service& io_service)
61
+ : boost::asio::detail::service_base<stream_service>(io_service),
62
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
63
+ {
64
+ }
65
+
66
+ /// Return a null stream implementation.
67
+ impl_type null() const
68
+ {
69
+ return service_impl_.null();
70
+ }
71
+
72
+ /// Create a new stream implementation.
73
+ template <typename Stream, typename Context_Service>
74
+ void create(impl_type& impl, Stream& next_layer,
75
+ basic_context<Context_Service>& context)
76
+ {
77
+ service_impl_.create(impl, next_layer, context);
78
+ }
79
+
80
+ /// Destroy a stream implementation.
81
+ template <typename Stream>
82
+ void destroy(impl_type& impl, Stream& next_layer)
83
+ {
84
+ service_impl_.destroy(impl, next_layer);
85
+ }
86
+
87
+ /// Perform SSL handshaking.
88
+ template <typename Stream>
89
+ boost::system::error_code handshake(impl_type& impl, Stream& next_layer,
90
+ stream_base::handshake_type type, boost::system::error_code& ec)
91
+ {
92
+ return service_impl_.handshake(impl, next_layer, type, ec);
93
+ }
94
+
95
+ /// Start an asynchronous SSL handshake.
96
+ template <typename Stream, typename HandshakeHandler>
97
+ void async_handshake(impl_type& impl, Stream& next_layer,
98
+ stream_base::handshake_type type, HandshakeHandler handler)
99
+ {
100
+ service_impl_.async_handshake(impl, next_layer, type, handler);
101
+ }
102
+
103
+ /// Shut down SSL on the stream.
104
+ template <typename Stream>
105
+ boost::system::error_code shutdown(impl_type& impl, Stream& next_layer,
106
+ boost::system::error_code& ec)
107
+ {
108
+ return service_impl_.shutdown(impl, next_layer, ec);
109
+ }
110
+
111
+ /// Asynchronously shut down SSL on the stream.
112
+ template <typename Stream, typename ShutdownHandler>
113
+ void async_shutdown(impl_type& impl, Stream& next_layer,
114
+ ShutdownHandler handler)
115
+ {
116
+ service_impl_.async_shutdown(impl, next_layer, handler);
117
+ }
118
+
119
+ /// Write some data to the stream.
120
+ template <typename Stream, typename ConstBufferSequence>
121
+ std::size_t write_some(impl_type& impl, Stream& next_layer,
122
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
123
+ {
124
+ return service_impl_.write_some(impl, next_layer, buffers, ec);
125
+ }
126
+
127
+ /// Start an asynchronous write.
128
+ template <typename Stream, typename ConstBufferSequence,
129
+ typename WriteHandler>
130
+ void async_write_some(impl_type& impl, Stream& next_layer,
131
+ const ConstBufferSequence& buffers, WriteHandler handler)
132
+ {
133
+ service_impl_.async_write_some(impl, next_layer, buffers, handler);
134
+ }
135
+
136
+ /// Read some data from the stream.
137
+ template <typename Stream, typename MutableBufferSequence>
138
+ std::size_t read_some(impl_type& impl, Stream& next_layer,
139
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
140
+ {
141
+ return service_impl_.read_some(impl, next_layer, buffers, ec);
142
+ }
143
+
144
+ /// Start an asynchronous read.
145
+ template <typename Stream, typename MutableBufferSequence,
146
+ typename ReadHandler>
147
+ void async_read_some(impl_type& impl, Stream& next_layer,
148
+ const MutableBufferSequence& buffers, ReadHandler handler)
149
+ {
150
+ service_impl_.async_read_some(impl, next_layer, buffers, handler);
151
+ }
152
+
153
+ /// Peek at the incoming data on the stream.
154
+ template <typename Stream, typename MutableBufferSequence>
155
+ std::size_t peek(impl_type& impl, Stream& next_layer,
156
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
157
+ {
158
+ return service_impl_.peek(impl, next_layer, buffers, ec);
159
+ }
160
+
161
+ /// Determine the amount of data that may be read without blocking.
162
+ template <typename Stream>
163
+ std::size_t in_avail(impl_type& impl, Stream& next_layer,
164
+ boost::system::error_code& ec)
165
+ {
166
+ return service_impl_.in_avail(impl, next_layer, ec);
167
+ }
168
+
169
+ private:
170
+ // Destroy all user-defined handler objects owned by the service.
171
+ void shutdown_service()
172
+ {
173
+ }
174
+
175
+ // The service that provides the platform-specific implementation.
176
+ service_impl_type& service_impl_;
177
+ };
178
+
179
+ } // namespace old
180
+ } // namespace ssl
181
+ } // namespace asio
182
+ } // namespace boost
183
+
184
+ #include <boost/asio/detail/pop_options.hpp>
185
+
186
+ #endif // BOOST_ASIO_SSL_OLD_STREAM_SERVICE_HPP
@@ -0,0 +1,102 @@
1
+ //
2
+ // ssl/rfc2818_verification.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_SSL_RFC2818_VERIFICATION_HPP
12
+ #define BOOST_ASIO_SSL_RFC2818_VERIFICATION_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
+
20
+ #if !defined(BOOST_ASIO_ENABLE_OLD_SSL)
21
+ # include <string>
22
+ # include <boost/asio/ssl/detail/openssl_types.hpp>
23
+ # include <boost/asio/ssl/verify_context.hpp>
24
+ #endif // !defined(BOOST_ASIO_ENABLE_OLD_SSL)
25
+
26
+ #include <boost/asio/detail/push_options.hpp>
27
+
28
+ namespace boost {
29
+ namespace asio {
30
+ namespace ssl {
31
+
32
+ #if !defined(BOOST_ASIO_ENABLE_OLD_SSL)
33
+
34
+ /// Verifies a certificate against a hostname according to the rules described
35
+ /// in RFC 2818.
36
+ /**
37
+ * @par Example
38
+ * The following example shows how to synchronously open a secure connection to
39
+ * a given host name:
40
+ * @code
41
+ * using boost::asio::ip::tcp;
42
+ * namespace ssl = boost::asio::ssl;
43
+ * typedef ssl::stream<tcp::socket> ssl_socket;
44
+ *
45
+ * // Create a context that uses the default paths for finding CA certificates.
46
+ * ssl::context ctx(ssl::context::sslv23);
47
+ * ctx.set_default_verify_paths();
48
+ *
49
+ * // Open a socket and connect it to the remote host.
50
+ * boost::asio::io_service io_service;
51
+ * ssl_socket sock(io_service, ctx);
52
+ * tcp::resolver resolver(io_service);
53
+ * tcp::resolver::query query("host.name", "https");
54
+ * boost::asio::connect(sock.lowest_layer(), resolver.resolve(query));
55
+ * sock.lowest_layer().set_option(tcp::no_delay(true));
56
+ *
57
+ * // Perform SSL handshake and verify the remote host's certificate.
58
+ * sock.set_verify_mode(ssl::verify_peer);
59
+ * sock.set_verify_callback(ssl::rfc2818_verification("host.name"));
60
+ * sock.handshake(ssl_socket::client);
61
+ *
62
+ * // ... read and write as normal ...
63
+ * @endcode
64
+ */
65
+ class rfc2818_verification
66
+ {
67
+ public:
68
+ /// The type of the function object's result.
69
+ typedef bool result_type;
70
+
71
+ /// Constructor.
72
+ explicit rfc2818_verification(const std::string& host)
73
+ : host_(host)
74
+ {
75
+ }
76
+
77
+ /// Perform certificate verification.
78
+ BOOST_ASIO_DECL bool operator()(bool preverified, verify_context& ctx) const;
79
+
80
+ private:
81
+ // Helper function to check a host name against a pattern.
82
+ BOOST_ASIO_DECL static bool match_pattern(const char* pattern,
83
+ std::size_t pattern_length, const char* host);
84
+
85
+ // Helper function to check a host name against an IPv4 address
86
+ // The host name to be checked.
87
+ std::string host_;
88
+ };
89
+
90
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
91
+
92
+ } // namespace ssl
93
+ } // namespace asio
94
+ } // namespace boost
95
+
96
+ #include <boost/asio/detail/pop_options.hpp>
97
+
98
+ #if defined(BOOST_ASIO_HEADER_ONLY)
99
+ # include <boost/asio/ssl/impl/rfc2818_verification.ipp>
100
+ #endif // defined(BOOST_ASIO_HEADER_ONLY)
101
+
102
+ #endif // BOOST_ASIO_SSL_RFC2818_VERIFICATION_HPP
@@ -0,0 +1,758 @@
1
+ //
2
+ // ssl/stream.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_SSL_STREAM_HPP
12
+ #define BOOST_ASIO_SSL_STREAM_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
+
20
+ #if defined(BOOST_ASIO_ENABLE_OLD_SSL)
21
+ # include <boost/asio/ssl/old/stream.hpp>
22
+ #else // defined(BOOST_ASIO_ENABLE_OLD_SSL)
23
+ # include <boost/asio/async_result.hpp>
24
+ # include <boost/asio/detail/buffer_sequence_adapter.hpp>
25
+ # include <boost/asio/detail/handler_type_requirements.hpp>
26
+ # include <boost/asio/detail/noncopyable.hpp>
27
+ # include <boost/asio/detail/type_traits.hpp>
28
+ # include <boost/asio/ssl/context.hpp>
29
+ # include <boost/asio/ssl/detail/buffered_handshake_op.hpp>
30
+ # include <boost/asio/ssl/detail/handshake_op.hpp>
31
+ # include <boost/asio/ssl/detail/io.hpp>
32
+ # include <boost/asio/ssl/detail/read_op.hpp>
33
+ # include <boost/asio/ssl/detail/shutdown_op.hpp>
34
+ # include <boost/asio/ssl/detail/stream_core.hpp>
35
+ # include <boost/asio/ssl/detail/write_op.hpp>
36
+ # include <boost/asio/ssl/stream_base.hpp>
37
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
38
+
39
+ #include <boost/asio/detail/push_options.hpp>
40
+
41
+ namespace boost {
42
+ namespace asio {
43
+ namespace ssl {
44
+
45
+ #if defined(BOOST_ASIO_ENABLE_OLD_SSL)
46
+
47
+ using boost::asio::ssl::old::stream;
48
+
49
+ #else // defined(BOOST_ASIO_ENABLE_OLD_SSL)
50
+
51
+ /// Provides stream-oriented functionality using SSL.
52
+ /**
53
+ * The stream class template provides asynchronous and blocking stream-oriented
54
+ * functionality using SSL.
55
+ *
56
+ * @par Thread Safety
57
+ * @e Distinct @e objects: Safe.@n
58
+ * @e Shared @e objects: Unsafe. The application must also ensure that all
59
+ * asynchronous operations are performed within the same implicit or explicit
60
+ * strand.
61
+ *
62
+ * @par Example
63
+ * To use the SSL stream template with an ip::tcp::socket, you would write:
64
+ * @code
65
+ * boost::asio::io_service io_service;
66
+ * boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23);
67
+ * boost::asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);
68
+ * @endcode
69
+ *
70
+ * @par Concepts:
71
+ * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
72
+ */
73
+ template <typename Stream>
74
+ class stream :
75
+ public stream_base,
76
+ private noncopyable
77
+ {
78
+ public:
79
+ /// The native handle type of the SSL stream.
80
+ typedef SSL* native_handle_type;
81
+
82
+ /// Structure for use with deprecated impl_type.
83
+ struct impl_struct
84
+ {
85
+ SSL* ssl;
86
+ };
87
+
88
+ /// (Deprecated: Use native_handle_type.) The underlying implementation type.
89
+ typedef impl_struct* impl_type;
90
+
91
+ /// The type of the next layer.
92
+ typedef typename remove_reference<Stream>::type next_layer_type;
93
+
94
+ /// The type of the lowest layer.
95
+ typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
96
+
97
+ /// Construct a stream.
98
+ /**
99
+ * This constructor creates a stream and initialises the underlying stream
100
+ * object.
101
+ *
102
+ * @param arg The argument to be passed to initialise the underlying stream.
103
+ *
104
+ * @param ctx The SSL context to be used for the stream.
105
+ */
106
+ template <typename Arg>
107
+ stream(Arg& arg, context& ctx)
108
+ : next_layer_(arg),
109
+ core_(ctx.native_handle(), next_layer_.lowest_layer().get_io_service())
110
+ {
111
+ backwards_compatible_impl_.ssl = core_.engine_.native_handle();
112
+ }
113
+
114
+ /// Destructor.
115
+ ~stream()
116
+ {
117
+ }
118
+
119
+ /// Get the io_service associated with the object.
120
+ /**
121
+ * This function may be used to obtain the io_service object that the stream
122
+ * uses to dispatch handlers for asynchronous operations.
123
+ *
124
+ * @return A reference to the io_service object that stream will use to
125
+ * dispatch handlers. Ownership is not transferred to the caller.
126
+ */
127
+ boost::asio::io_service& get_io_service()
128
+ {
129
+ return next_layer_.lowest_layer().get_io_service();
130
+ }
131
+
132
+ /// Get the underlying implementation in the native type.
133
+ /**
134
+ * This function may be used to obtain the underlying implementation of the
135
+ * context. This is intended to allow access to context functionality that is
136
+ * not otherwise provided.
137
+ *
138
+ * @par Example
139
+ * The native_handle() function returns a pointer of type @c SSL* that is
140
+ * suitable for passing to functions such as @c SSL_get_verify_result and
141
+ * @c SSL_get_peer_certificate:
142
+ * @code
143
+ * boost::asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);
144
+ *
145
+ * // ... establish connection and perform handshake ...
146
+ *
147
+ * if (X509* cert = SSL_get_peer_certificate(sock.native_handle()))
148
+ * {
149
+ * if (SSL_get_verify_result(sock.native_handle()) == X509_V_OK)
150
+ * {
151
+ * // ...
152
+ * }
153
+ * }
154
+ * @endcode
155
+ */
156
+ native_handle_type native_handle()
157
+ {
158
+ return core_.engine_.native_handle();
159
+ }
160
+
161
+ /// (Deprecated: Use native_handle().) Get the underlying implementation in
162
+ /// the native type.
163
+ /**
164
+ * This function may be used to obtain the underlying implementation of the
165
+ * context. This is intended to allow access to stream functionality that is
166
+ * not otherwise provided.
167
+ */
168
+ impl_type impl()
169
+ {
170
+ return &backwards_compatible_impl_;
171
+ }
172
+
173
+ /// Get a reference to the next layer.
174
+ /**
175
+ * This function returns a reference to the next layer in a stack of stream
176
+ * layers.
177
+ *
178
+ * @return A reference to the next layer in the stack of stream layers.
179
+ * Ownership is not transferred to the caller.
180
+ */
181
+ const next_layer_type& next_layer() const
182
+ {
183
+ return next_layer_;
184
+ }
185
+
186
+ /// Get a reference to the next layer.
187
+ /**
188
+ * This function returns a reference to the next layer in a stack of stream
189
+ * layers.
190
+ *
191
+ * @return A reference to the next layer in the stack of stream layers.
192
+ * Ownership is not transferred to the caller.
193
+ */
194
+ next_layer_type& next_layer()
195
+ {
196
+ return next_layer_;
197
+ }
198
+
199
+ /// Get a reference to the lowest layer.
200
+ /**
201
+ * This function returns a reference to the lowest layer in a stack of
202
+ * stream layers.
203
+ *
204
+ * @return A reference to the lowest layer in the stack of stream layers.
205
+ * Ownership is not transferred to the caller.
206
+ */
207
+ lowest_layer_type& lowest_layer()
208
+ {
209
+ return next_layer_.lowest_layer();
210
+ }
211
+
212
+ /// Get a reference to the lowest layer.
213
+ /**
214
+ * This function returns a reference to the lowest layer in a stack of
215
+ * stream layers.
216
+ *
217
+ * @return A reference to the lowest layer in the stack of stream layers.
218
+ * Ownership is not transferred to the caller.
219
+ */
220
+ const lowest_layer_type& lowest_layer() const
221
+ {
222
+ return next_layer_.lowest_layer();
223
+ }
224
+
225
+ /// Set the peer verification mode.
226
+ /**
227
+ * This function may be used to configure the peer verification mode used by
228
+ * the stream. The new mode will override the mode inherited from the context.
229
+ *
230
+ * @param v A bitmask of peer verification modes. See @ref verify_mode for
231
+ * available values.
232
+ *
233
+ * @throws boost::system::system_error Thrown on failure.
234
+ *
235
+ * @note Calls @c SSL_set_verify.
236
+ */
237
+ void set_verify_mode(verify_mode v)
238
+ {
239
+ boost::system::error_code ec;
240
+ set_verify_mode(v, ec);
241
+ boost::asio::detail::throw_error(ec, "set_verify_mode");
242
+ }
243
+
244
+ /// Set the peer verification mode.
245
+ /**
246
+ * This function may be used to configure the peer verification mode used by
247
+ * the stream. The new mode will override the mode inherited from the context.
248
+ *
249
+ * @param v A bitmask of peer verification modes. See @ref verify_mode for
250
+ * available values.
251
+ *
252
+ * @param ec Set to indicate what error occurred, if any.
253
+ *
254
+ * @note Calls @c SSL_set_verify.
255
+ */
256
+ boost::system::error_code set_verify_mode(
257
+ verify_mode v, boost::system::error_code& ec)
258
+ {
259
+ return core_.engine_.set_verify_mode(v, ec);
260
+ }
261
+
262
+ /// Set the peer verification depth.
263
+ /**
264
+ * This function may be used to configure the maximum verification depth
265
+ * allowed by the stream.
266
+ *
267
+ * @param depth Maximum depth for the certificate chain verification that
268
+ * shall be allowed.
269
+ *
270
+ * @throws boost::system::system_error Thrown on failure.
271
+ *
272
+ * @note Calls @c SSL_set_verify_depth.
273
+ */
274
+ void set_verify_depth(int depth)
275
+ {
276
+ boost::system::error_code ec;
277
+ set_verify_depth(depth, ec);
278
+ boost::asio::detail::throw_error(ec, "set_verify_depth");
279
+ }
280
+
281
+ /// Set the peer verification depth.
282
+ /**
283
+ * This function may be used to configure the maximum verification depth
284
+ * allowed by the stream.
285
+ *
286
+ * @param depth Maximum depth for the certificate chain verification that
287
+ * shall be allowed.
288
+ *
289
+ * @param ec Set to indicate what error occurred, if any.
290
+ *
291
+ * @note Calls @c SSL_set_verify_depth.
292
+ */
293
+ boost::system::error_code set_verify_depth(
294
+ int depth, boost::system::error_code& ec)
295
+ {
296
+ return core_.engine_.set_verify_depth(depth, ec);
297
+ }
298
+
299
+ /// Set the callback used to verify peer certificates.
300
+ /**
301
+ * This function is used to specify a callback function that will be called
302
+ * by the implementation when it needs to verify a peer certificate.
303
+ *
304
+ * @param callback The function object to be used for verifying a certificate.
305
+ * The function signature of the handler must be:
306
+ * @code bool verify_callback(
307
+ * bool preverified, // True if the certificate passed pre-verification.
308
+ * verify_context& ctx // The peer certificate and other context.
309
+ * ); @endcode
310
+ * The return value of the callback is true if the certificate has passed
311
+ * verification, false otherwise.
312
+ *
313
+ * @throws boost::system::system_error Thrown on failure.
314
+ *
315
+ * @note Calls @c SSL_set_verify.
316
+ */
317
+ template <typename VerifyCallback>
318
+ void set_verify_callback(VerifyCallback callback)
319
+ {
320
+ boost::system::error_code ec;
321
+ this->set_verify_callback(callback, ec);
322
+ boost::asio::detail::throw_error(ec, "set_verify_callback");
323
+ }
324
+
325
+ /// Set the callback used to verify peer certificates.
326
+ /**
327
+ * This function is used to specify a callback function that will be called
328
+ * by the implementation when it needs to verify a peer certificate.
329
+ *
330
+ * @param callback The function object to be used for verifying a certificate.
331
+ * The function signature of the handler must be:
332
+ * @code bool verify_callback(
333
+ * bool preverified, // True if the certificate passed pre-verification.
334
+ * verify_context& ctx // The peer certificate and other context.
335
+ * ); @endcode
336
+ * The return value of the callback is true if the certificate has passed
337
+ * verification, false otherwise.
338
+ *
339
+ * @param ec Set to indicate what error occurred, if any.
340
+ *
341
+ * @note Calls @c SSL_set_verify.
342
+ */
343
+ template <typename VerifyCallback>
344
+ boost::system::error_code set_verify_callback(VerifyCallback callback,
345
+ boost::system::error_code& ec)
346
+ {
347
+ return core_.engine_.set_verify_callback(
348
+ new detail::verify_callback<VerifyCallback>(callback), ec);
349
+ }
350
+
351
+ /// Perform SSL handshaking.
352
+ /**
353
+ * This function is used to perform SSL handshaking on the stream. The
354
+ * function call will block until handshaking is complete or an error occurs.
355
+ *
356
+ * @param type The type of handshaking to be performed, i.e. as a client or as
357
+ * a server.
358
+ *
359
+ * @throws boost::system::system_error Thrown on failure.
360
+ */
361
+ void handshake(handshake_type type)
362
+ {
363
+ boost::system::error_code ec;
364
+ handshake(type, ec);
365
+ boost::asio::detail::throw_error(ec, "handshake");
366
+ }
367
+
368
+ /// Perform SSL handshaking.
369
+ /**
370
+ * This function is used to perform SSL handshaking on the stream. The
371
+ * function call will block until handshaking is complete or an error occurs.
372
+ *
373
+ * @param type The type of handshaking to be performed, i.e. as a client or as
374
+ * a server.
375
+ *
376
+ * @param ec Set to indicate what error occurred, if any.
377
+ */
378
+ boost::system::error_code handshake(handshake_type type,
379
+ boost::system::error_code& ec)
380
+ {
381
+ detail::io(next_layer_, core_, detail::handshake_op(type), ec);
382
+ return ec;
383
+ }
384
+
385
+ /// Perform SSL handshaking.
386
+ /**
387
+ * This function is used to perform SSL handshaking on the stream. The
388
+ * function call will block until handshaking is complete or an error occurs.
389
+ *
390
+ * @param type The type of handshaking to be performed, i.e. as a client or as
391
+ * a server.
392
+ *
393
+ * @param buffers The buffered data to be reused for the handshake.
394
+ *
395
+ * @throws boost::system::system_error Thrown on failure.
396
+ */
397
+ template <typename ConstBufferSequence>
398
+ void handshake(handshake_type type, const ConstBufferSequence& buffers)
399
+ {
400
+ boost::system::error_code ec;
401
+ handshake(type, buffers, ec);
402
+ boost::asio::detail::throw_error(ec, "handshake");
403
+ }
404
+
405
+ /// Perform SSL handshaking.
406
+ /**
407
+ * This function is used to perform SSL handshaking on the stream. The
408
+ * function call will block until handshaking is complete or an error occurs.
409
+ *
410
+ * @param type The type of handshaking to be performed, i.e. as a client or as
411
+ * a server.
412
+ *
413
+ * @param buffers The buffered data to be reused for the handshake.
414
+ *
415
+ * @param ec Set to indicate what error occurred, if any.
416
+ */
417
+ template <typename ConstBufferSequence>
418
+ boost::system::error_code handshake(handshake_type type,
419
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
420
+ {
421
+ detail::io(next_layer_, core_,
422
+ detail::buffered_handshake_op<ConstBufferSequence>(type, buffers), ec);
423
+ return ec;
424
+ }
425
+
426
+ /// Start an asynchronous SSL handshake.
427
+ /**
428
+ * This function is used to asynchronously perform an SSL handshake on the
429
+ * stream. This function call always returns immediately.
430
+ *
431
+ * @param type The type of handshaking to be performed, i.e. as a client or as
432
+ * a server.
433
+ *
434
+ * @param handler The handler to be called when the handshake operation
435
+ * completes. Copies will be made of the handler as required. The equivalent
436
+ * function signature of the handler must be:
437
+ * @code void handler(
438
+ * const boost::system::error_code& error // Result of operation.
439
+ * ); @endcode
440
+ */
441
+ template <typename HandshakeHandler>
442
+ BOOST_ASIO_INITFN_RESULT_TYPE(HandshakeHandler,
443
+ void (boost::system::error_code))
444
+ async_handshake(handshake_type type,
445
+ BOOST_ASIO_MOVE_ARG(HandshakeHandler) handler)
446
+ {
447
+ // If you get an error on the following line it means that your handler does
448
+ // not meet the documented type requirements for a HandshakeHandler.
449
+ BOOST_ASIO_HANDSHAKE_HANDLER_CHECK(HandshakeHandler, handler) type_check;
450
+
451
+ boost::asio::detail::async_result_init<
452
+ HandshakeHandler, void (boost::system::error_code)> init(
453
+ BOOST_ASIO_MOVE_CAST(HandshakeHandler)(handler));
454
+
455
+ detail::async_io(next_layer_, core_,
456
+ detail::handshake_op(type), init.handler);
457
+
458
+ return init.result.get();
459
+ }
460
+
461
+ /// Start an asynchronous SSL handshake.
462
+ /**
463
+ * This function is used to asynchronously perform an SSL handshake on the
464
+ * stream. This function call always returns immediately.
465
+ *
466
+ * @param type The type of handshaking to be performed, i.e. as a client or as
467
+ * a server.
468
+ *
469
+ * @param buffers The buffered data to be reused for the handshake. Although
470
+ * the buffers object may be copied as necessary, ownership of the underlying
471
+ * buffers is retained by the caller, which must guarantee that they remain
472
+ * valid until the handler is called.
473
+ *
474
+ * @param handler The handler to be called when the handshake operation
475
+ * completes. Copies will be made of the handler as required. The equivalent
476
+ * function signature of the handler must be:
477
+ * @code void handler(
478
+ * const boost::system::error_code& error, // Result of operation.
479
+ * std::size_t bytes_transferred // Amount of buffers used in handshake.
480
+ * ); @endcode
481
+ */
482
+ template <typename ConstBufferSequence, typename BufferedHandshakeHandler>
483
+ BOOST_ASIO_INITFN_RESULT_TYPE(BufferedHandshakeHandler,
484
+ void (boost::system::error_code, std::size_t))
485
+ async_handshake(handshake_type type, const ConstBufferSequence& buffers,
486
+ BOOST_ASIO_MOVE_ARG(BufferedHandshakeHandler) handler)
487
+ {
488
+ // If you get an error on the following line it means that your handler does
489
+ // not meet the documented type requirements for a BufferedHandshakeHandler.
490
+ BOOST_ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK(
491
+ BufferedHandshakeHandler, handler) type_check;
492
+
493
+ boost::asio::detail::async_result_init<BufferedHandshakeHandler,
494
+ void (boost::system::error_code, std::size_t)> init(
495
+ BOOST_ASIO_MOVE_CAST(BufferedHandshakeHandler)(handler));
496
+
497
+ detail::async_io(next_layer_, core_,
498
+ detail::buffered_handshake_op<ConstBufferSequence>(type, buffers),
499
+ init.handler);
500
+
501
+ return init.result.get();
502
+ }
503
+
504
+ /// Shut down SSL on the stream.
505
+ /**
506
+ * This function is used to shut down SSL on the stream. The function call
507
+ * will block until SSL has been shut down or an error occurs.
508
+ *
509
+ * @throws boost::system::system_error Thrown on failure.
510
+ */
511
+ void shutdown()
512
+ {
513
+ boost::system::error_code ec;
514
+ shutdown(ec);
515
+ boost::asio::detail::throw_error(ec, "shutdown");
516
+ }
517
+
518
+ /// Shut down SSL on the stream.
519
+ /**
520
+ * This function is used to shut down SSL on the stream. The function call
521
+ * will block until SSL has been shut down or an error occurs.
522
+ *
523
+ * @param ec Set to indicate what error occurred, if any.
524
+ */
525
+ boost::system::error_code shutdown(boost::system::error_code& ec)
526
+ {
527
+ detail::io(next_layer_, core_, detail::shutdown_op(), ec);
528
+ return ec;
529
+ }
530
+
531
+ /// Asynchronously shut down SSL on the stream.
532
+ /**
533
+ * This function is used to asynchronously shut down SSL on the stream. This
534
+ * function call always returns immediately.
535
+ *
536
+ * @param handler The handler to be called when the handshake operation
537
+ * completes. Copies will be made of the handler as required. The equivalent
538
+ * function signature of the handler must be:
539
+ * @code void handler(
540
+ * const boost::system::error_code& error // Result of operation.
541
+ * ); @endcode
542
+ */
543
+ template <typename ShutdownHandler>
544
+ BOOST_ASIO_INITFN_RESULT_TYPE(ShutdownHandler,
545
+ void (boost::system::error_code))
546
+ async_shutdown(BOOST_ASIO_MOVE_ARG(ShutdownHandler) handler)
547
+ {
548
+ // If you get an error on the following line it means that your handler does
549
+ // not meet the documented type requirements for a ShutdownHandler.
550
+ BOOST_ASIO_SHUTDOWN_HANDLER_CHECK(ShutdownHandler, handler) type_check;
551
+
552
+ boost::asio::detail::async_result_init<
553
+ ShutdownHandler, void (boost::system::error_code)> init(
554
+ BOOST_ASIO_MOVE_CAST(ShutdownHandler)(handler));
555
+
556
+ detail::async_io(next_layer_, core_, detail::shutdown_op(), init.handler);
557
+
558
+ return init.result.get();
559
+ }
560
+
561
+ /// Write some data to the stream.
562
+ /**
563
+ * This function is used to write data on the stream. The function call will
564
+ * block until one or more bytes of data has been written successfully, or
565
+ * until an error occurs.
566
+ *
567
+ * @param buffers The data to be written.
568
+ *
569
+ * @returns The number of bytes written.
570
+ *
571
+ * @throws boost::system::system_error Thrown on failure.
572
+ *
573
+ * @note The write_some operation may not transmit all of the data to the
574
+ * peer. Consider using the @ref write function if you need to ensure that all
575
+ * data is written before the blocking operation completes.
576
+ */
577
+ template <typename ConstBufferSequence>
578
+ std::size_t write_some(const ConstBufferSequence& buffers)
579
+ {
580
+ boost::system::error_code ec;
581
+ std::size_t n = write_some(buffers, ec);
582
+ boost::asio::detail::throw_error(ec, "write_some");
583
+ return n;
584
+ }
585
+
586
+ /// Write some data to the stream.
587
+ /**
588
+ * This function is used to write data on the stream. The function call will
589
+ * block until one or more bytes of data has been written successfully, or
590
+ * until an error occurs.
591
+ *
592
+ * @param buffers The data to be written to the stream.
593
+ *
594
+ * @param ec Set to indicate what error occurred, if any.
595
+ *
596
+ * @returns The number of bytes written. Returns 0 if an error occurred.
597
+ *
598
+ * @note The write_some operation may not transmit all of the data to the
599
+ * peer. Consider using the @ref write function if you need to ensure that all
600
+ * data is written before the blocking operation completes.
601
+ */
602
+ template <typename ConstBufferSequence>
603
+ std::size_t write_some(const ConstBufferSequence& buffers,
604
+ boost::system::error_code& ec)
605
+ {
606
+ return detail::io(next_layer_, core_,
607
+ detail::write_op<ConstBufferSequence>(buffers), ec);
608
+ }
609
+
610
+ /// Start an asynchronous write.
611
+ /**
612
+ * This function is used to asynchronously write one or more bytes of data to
613
+ * the stream. The function call always returns immediately.
614
+ *
615
+ * @param buffers The data to be written to the stream. Although the buffers
616
+ * object may be copied as necessary, ownership of the underlying buffers is
617
+ * retained by the caller, which must guarantee that they remain valid until
618
+ * the handler is called.
619
+ *
620
+ * @param handler The handler to be called when the write operation completes.
621
+ * Copies will be made of the handler as required. The equivalent function
622
+ * signature of the handler must be:
623
+ * @code void handler(
624
+ * const boost::system::error_code& error, // Result of operation.
625
+ * std::size_t bytes_transferred // Number of bytes written.
626
+ * ); @endcode
627
+ *
628
+ * @note The async_write_some operation may not transmit all of the data to
629
+ * the peer. Consider using the @ref async_write function if you need to
630
+ * ensure that all data is written before the blocking operation completes.
631
+ */
632
+ template <typename ConstBufferSequence, typename WriteHandler>
633
+ BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
634
+ void (boost::system::error_code, std::size_t))
635
+ async_write_some(const ConstBufferSequence& buffers,
636
+ BOOST_ASIO_MOVE_ARG(WriteHandler) handler)
637
+ {
638
+ // If you get an error on the following line it means that your handler does
639
+ // not meet the documented type requirements for a WriteHandler.
640
+ BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
641
+
642
+ boost::asio::detail::async_result_init<
643
+ WriteHandler, void (boost::system::error_code, std::size_t)> init(
644
+ BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
645
+
646
+ detail::async_io(next_layer_, core_,
647
+ detail::write_op<ConstBufferSequence>(buffers), init.handler);
648
+
649
+ return init.result.get();
650
+ }
651
+
652
+ /// Read some data from the stream.
653
+ /**
654
+ * This function is used to read data from the stream. The function call will
655
+ * block until one or more bytes of data has been read successfully, or until
656
+ * an error occurs.
657
+ *
658
+ * @param buffers The buffers into which the data will be read.
659
+ *
660
+ * @returns The number of bytes read.
661
+ *
662
+ * @throws boost::system::system_error Thrown on failure.
663
+ *
664
+ * @note The read_some operation may not read all of the requested number of
665
+ * bytes. Consider using the @ref read function if you need to ensure that the
666
+ * requested amount of data is read before the blocking operation completes.
667
+ */
668
+ template <typename MutableBufferSequence>
669
+ std::size_t read_some(const MutableBufferSequence& buffers)
670
+ {
671
+ boost::system::error_code ec;
672
+ std::size_t n = read_some(buffers, ec);
673
+ boost::asio::detail::throw_error(ec, "read_some");
674
+ return n;
675
+ }
676
+
677
+ /// Read some data from the stream.
678
+ /**
679
+ * This function is used to read data from the stream. The function call will
680
+ * block until one or more bytes of data has been read successfully, or until
681
+ * an error occurs.
682
+ *
683
+ * @param buffers The buffers into which the data will be read.
684
+ *
685
+ * @param ec Set to indicate what error occurred, if any.
686
+ *
687
+ * @returns The number of bytes read. Returns 0 if an error occurred.
688
+ *
689
+ * @note The read_some operation may not read all of the requested number of
690
+ * bytes. Consider using the @ref read function if you need to ensure that the
691
+ * requested amount of data is read before the blocking operation completes.
692
+ */
693
+ template <typename MutableBufferSequence>
694
+ std::size_t read_some(const MutableBufferSequence& buffers,
695
+ boost::system::error_code& ec)
696
+ {
697
+ return detail::io(next_layer_, core_,
698
+ detail::read_op<MutableBufferSequence>(buffers), ec);
699
+ }
700
+
701
+ /// Start an asynchronous read.
702
+ /**
703
+ * This function is used to asynchronously read one or more bytes of data from
704
+ * the stream. The function call always returns immediately.
705
+ *
706
+ * @param buffers The buffers into which the data will be read. Although the
707
+ * buffers object may be copied as necessary, ownership of the underlying
708
+ * buffers is retained by the caller, which must guarantee that they remain
709
+ * valid until the handler is called.
710
+ *
711
+ * @param handler The handler to be called when the read operation completes.
712
+ * Copies will be made of the handler as required. The equivalent function
713
+ * signature of the handler must be:
714
+ * @code void handler(
715
+ * const boost::system::error_code& error, // Result of operation.
716
+ * std::size_t bytes_transferred // Number of bytes read.
717
+ * ); @endcode
718
+ *
719
+ * @note The async_read_some operation may not read all of the requested
720
+ * number of bytes. Consider using the @ref async_read function if you need to
721
+ * ensure that the requested amount of data is read before the asynchronous
722
+ * operation completes.
723
+ */
724
+ template <typename MutableBufferSequence, typename ReadHandler>
725
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
726
+ void (boost::system::error_code, std::size_t))
727
+ async_read_some(const MutableBufferSequence& buffers,
728
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
729
+ {
730
+ // If you get an error on the following line it means that your handler does
731
+ // not meet the documented type requirements for a ReadHandler.
732
+ BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
733
+
734
+ boost::asio::detail::async_result_init<
735
+ ReadHandler, void (boost::system::error_code, std::size_t)> init(
736
+ BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
737
+
738
+ detail::async_io(next_layer_, core_,
739
+ detail::read_op<MutableBufferSequence>(buffers), init.handler);
740
+
741
+ return init.result.get();
742
+ }
743
+
744
+ private:
745
+ Stream next_layer_;
746
+ detail::stream_core core_;
747
+ impl_struct backwards_compatible_impl_;
748
+ };
749
+
750
+ #endif // defined(BOOST_ASIO_ENABLE_OLD_SSL)
751
+
752
+ } // namespace ssl
753
+ } // namespace asio
754
+ } // namespace boost
755
+
756
+ #include <boost/asio/detail/pop_options.hpp>
757
+
758
+ #endif // BOOST_ASIO_SSL_STREAM_HPP