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,96 @@
1
+ //
2
+ // async_result.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_ASYNC_RESULT_HPP
12
+ #define BOOST_ASIO_ASYNC_RESULT_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/handler_type.hpp>
20
+
21
+ #include <boost/asio/detail/push_options.hpp>
22
+
23
+ namespace boost {
24
+ namespace asio {
25
+
26
+ /// An interface for customising the behaviour of an initiating function.
27
+ /**
28
+ * This template may be specialised for user-defined handler types.
29
+ */
30
+ template <typename Handler>
31
+ class async_result
32
+ {
33
+ public:
34
+ /// The return type of the initiating function.
35
+ typedef void type;
36
+
37
+ /// Construct an async result from a given handler.
38
+ /**
39
+ * When using a specalised async_result, the constructor has an opportunity
40
+ * to initialise some state associated with the handler, which is then
41
+ * returned from the initiating function.
42
+ */
43
+ explicit async_result(Handler&)
44
+ {
45
+ }
46
+
47
+ /// Obtain the value to be returned from the initiating function.
48
+ type get()
49
+ {
50
+ }
51
+ };
52
+
53
+ namespace detail {
54
+
55
+ // Helper template to deduce the true type of a handler, capture a local copy
56
+ // of the handler, and then create an async_result for the handler.
57
+ template <typename Handler, typename Signature>
58
+ struct async_result_init
59
+ {
60
+ explicit async_result_init(BOOST_ASIO_MOVE_ARG(Handler) orig_handler)
61
+ : handler(BOOST_ASIO_MOVE_CAST(Handler)(orig_handler)),
62
+ result(handler)
63
+ {
64
+ }
65
+
66
+ typename handler_type<Handler, Signature>::type handler;
67
+ async_result<typename handler_type<Handler, Signature>::type> result;
68
+ };
69
+
70
+ template <typename Handler, typename Signature>
71
+ struct async_result_type_helper
72
+ {
73
+ typedef typename async_result<
74
+ typename handler_type<Handler, Signature>::type
75
+ >::type type;
76
+ };
77
+
78
+ } // namespace detail
79
+ } // namespace asio
80
+ } // namespace boost
81
+
82
+ #include <boost/asio/detail/pop_options.hpp>
83
+
84
+ #if defined(GENERATING_DOCUMENTATION)
85
+ # define BOOST_ASIO_INITFN_RESULT_TYPE(h, sig) \
86
+ void_or_deduced
87
+ #elif defined(_MSC_VER) && (_MSC_VER < 1500)
88
+ # define BOOST_ASIO_INITFN_RESULT_TYPE(h, sig) \
89
+ typename ::boost::asio::detail::async_result_type_helper<h, sig>::type
90
+ #else
91
+ # define BOOST_ASIO_INITFN_RESULT_TYPE(h, sig) \
92
+ typename ::boost::asio::async_result< \
93
+ typename ::boost::asio::handler_type<h, sig>::type>::type
94
+ #endif
95
+
96
+ #endif // BOOST_ASIO_ASYNC_RESULT_HPP
@@ -0,0 +1,951 @@
1
+ //
2
+ // basic_datagram_socket.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_BASIC_DATAGRAM_SOCKET_HPP
12
+ #define BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <cstddef>
20
+ #include <boost/asio/basic_socket.hpp>
21
+ #include <boost/asio/datagram_socket_service.hpp>
22
+ #include <boost/asio/detail/handler_type_requirements.hpp>
23
+ #include <boost/asio/detail/throw_error.hpp>
24
+ #include <boost/asio/detail/type_traits.hpp>
25
+ #include <boost/asio/error.hpp>
26
+
27
+ #include <boost/asio/detail/push_options.hpp>
28
+
29
+ namespace boost {
30
+ namespace asio {
31
+
32
+ /// Provides datagram-oriented socket functionality.
33
+ /**
34
+ * The basic_datagram_socket class template provides asynchronous and blocking
35
+ * datagram-oriented socket functionality.
36
+ *
37
+ * @par Thread Safety
38
+ * @e Distinct @e objects: Safe.@n
39
+ * @e Shared @e objects: Unsafe.
40
+ */
41
+ template <typename Protocol,
42
+ typename DatagramSocketService = datagram_socket_service<Protocol> >
43
+ class basic_datagram_socket
44
+ : public basic_socket<Protocol, DatagramSocketService>
45
+ {
46
+ public:
47
+ /// (Deprecated: Use native_handle_type.) The native representation of a
48
+ /// socket.
49
+ typedef typename DatagramSocketService::native_handle_type native_type;
50
+
51
+ /// The native representation of a socket.
52
+ typedef typename DatagramSocketService::native_handle_type native_handle_type;
53
+
54
+ /// The protocol type.
55
+ typedef Protocol protocol_type;
56
+
57
+ /// The endpoint type.
58
+ typedef typename Protocol::endpoint endpoint_type;
59
+
60
+ /// Construct a basic_datagram_socket without opening it.
61
+ /**
62
+ * This constructor creates a datagram socket without opening it. The open()
63
+ * function must be called before data can be sent or received on the socket.
64
+ *
65
+ * @param io_service The io_service object that the datagram socket will use
66
+ * to dispatch handlers for any asynchronous operations performed on the
67
+ * socket.
68
+ */
69
+ explicit basic_datagram_socket(boost::asio::io_service& io_service)
70
+ : basic_socket<Protocol, DatagramSocketService>(io_service)
71
+ {
72
+ }
73
+
74
+ /// Construct and open a basic_datagram_socket.
75
+ /**
76
+ * This constructor creates and opens a datagram socket.
77
+ *
78
+ * @param io_service The io_service object that the datagram socket will use
79
+ * to dispatch handlers for any asynchronous operations performed on the
80
+ * socket.
81
+ *
82
+ * @param protocol An object specifying protocol parameters to be used.
83
+ *
84
+ * @throws boost::system::system_error Thrown on failure.
85
+ */
86
+ basic_datagram_socket(boost::asio::io_service& io_service,
87
+ const protocol_type& protocol)
88
+ : basic_socket<Protocol, DatagramSocketService>(io_service, protocol)
89
+ {
90
+ }
91
+
92
+ /// Construct a basic_datagram_socket, opening it and binding it to the given
93
+ /// local endpoint.
94
+ /**
95
+ * This constructor creates a datagram socket and automatically opens it bound
96
+ * to the specified endpoint on the local machine. The protocol used is the
97
+ * protocol associated with the given endpoint.
98
+ *
99
+ * @param io_service The io_service object that the datagram socket will use
100
+ * to dispatch handlers for any asynchronous operations performed on the
101
+ * socket.
102
+ *
103
+ * @param endpoint An endpoint on the local machine to which the datagram
104
+ * socket will be bound.
105
+ *
106
+ * @throws boost::system::system_error Thrown on failure.
107
+ */
108
+ basic_datagram_socket(boost::asio::io_service& io_service,
109
+ const endpoint_type& endpoint)
110
+ : basic_socket<Protocol, DatagramSocketService>(io_service, endpoint)
111
+ {
112
+ }
113
+
114
+ /// Construct a basic_datagram_socket on an existing native socket.
115
+ /**
116
+ * This constructor creates a datagram socket object to hold an existing
117
+ * native socket.
118
+ *
119
+ * @param io_service The io_service object that the datagram socket will use
120
+ * to dispatch handlers for any asynchronous operations performed on the
121
+ * socket.
122
+ *
123
+ * @param protocol An object specifying protocol parameters to be used.
124
+ *
125
+ * @param native_socket The new underlying socket implementation.
126
+ *
127
+ * @throws boost::system::system_error Thrown on failure.
128
+ */
129
+ basic_datagram_socket(boost::asio::io_service& io_service,
130
+ const protocol_type& protocol, const native_handle_type& native_socket)
131
+ : basic_socket<Protocol, DatagramSocketService>(
132
+ io_service, protocol, native_socket)
133
+ {
134
+ }
135
+
136
+ #if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
137
+ /// Move-construct a basic_datagram_socket from another.
138
+ /**
139
+ * This constructor moves a datagram socket from one object to another.
140
+ *
141
+ * @param other The other basic_datagram_socket object from which the move
142
+ * will occur.
143
+ *
144
+ * @note Following the move, the moved-from object is in the same state as if
145
+ * constructed using the @c basic_datagram_socket(io_service&) constructor.
146
+ */
147
+ basic_datagram_socket(basic_datagram_socket&& other)
148
+ : basic_socket<Protocol, DatagramSocketService>(
149
+ BOOST_ASIO_MOVE_CAST(basic_datagram_socket)(other))
150
+ {
151
+ }
152
+
153
+ /// Move-assign a basic_datagram_socket from another.
154
+ /**
155
+ * This assignment operator moves a datagram socket from one object to
156
+ * another.
157
+ *
158
+ * @param other The other basic_datagram_socket object from which the move
159
+ * will occur.
160
+ *
161
+ * @note Following the move, the moved-from object is in the same state as if
162
+ * constructed using the @c basic_datagram_socket(io_service&) constructor.
163
+ */
164
+ basic_datagram_socket& operator=(basic_datagram_socket&& other)
165
+ {
166
+ basic_socket<Protocol, DatagramSocketService>::operator=(
167
+ BOOST_ASIO_MOVE_CAST(basic_datagram_socket)(other));
168
+ return *this;
169
+ }
170
+
171
+ /// Move-construct a basic_datagram_socket from a socket of another protocol
172
+ /// type.
173
+ /**
174
+ * This constructor moves a datagram socket from one object to another.
175
+ *
176
+ * @param other The other basic_datagram_socket object from which the move
177
+ * will occur.
178
+ *
179
+ * @note Following the move, the moved-from object is in the same state as if
180
+ * constructed using the @c basic_datagram_socket(io_service&) constructor.
181
+ */
182
+ template <typename Protocol1, typename DatagramSocketService1>
183
+ basic_datagram_socket(
184
+ basic_datagram_socket<Protocol1, DatagramSocketService1>&& other,
185
+ typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
186
+ : basic_socket<Protocol, DatagramSocketService>(
187
+ BOOST_ASIO_MOVE_CAST2(basic_datagram_socket<
188
+ Protocol1, DatagramSocketService1>)(other))
189
+ {
190
+ }
191
+
192
+ /// Move-assign a basic_datagram_socket from a socket of another protocol
193
+ /// type.
194
+ /**
195
+ * This assignment operator moves a datagram socket from one object to
196
+ * another.
197
+ *
198
+ * @param other The other basic_datagram_socket object from which the move
199
+ * will occur.
200
+ *
201
+ * @note Following the move, the moved-from object is in the same state as if
202
+ * constructed using the @c basic_datagram_socket(io_service&) constructor.
203
+ */
204
+ template <typename Protocol1, typename DatagramSocketService1>
205
+ typename enable_if<is_convertible<Protocol1, Protocol>::value,
206
+ basic_datagram_socket>::type& operator=(
207
+ basic_datagram_socket<Protocol1, DatagramSocketService1>&& other)
208
+ {
209
+ basic_socket<Protocol, DatagramSocketService>::operator=(
210
+ BOOST_ASIO_MOVE_CAST2(basic_datagram_socket<
211
+ Protocol1, DatagramSocketService1>)(other));
212
+ return *this;
213
+ }
214
+ #endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
215
+
216
+ /// Send some data on a connected socket.
217
+ /**
218
+ * This function is used to send data on the datagram socket. The function
219
+ * call will block until the data has been sent successfully or an error
220
+ * occurs.
221
+ *
222
+ * @param buffers One ore more data buffers to be sent on the socket.
223
+ *
224
+ * @returns The number of bytes sent.
225
+ *
226
+ * @throws boost::system::system_error Thrown on failure.
227
+ *
228
+ * @note The send operation can only be used with a connected socket. Use
229
+ * the send_to function to send data on an unconnected datagram socket.
230
+ *
231
+ * @par Example
232
+ * To send a single data buffer use the @ref buffer function as follows:
233
+ * @code socket.send(boost::asio::buffer(data, size)); @endcode
234
+ * See the @ref buffer documentation for information on sending multiple
235
+ * buffers in one go, and how to use it with arrays, boost::array or
236
+ * std::vector.
237
+ */
238
+ template <typename ConstBufferSequence>
239
+ std::size_t send(const ConstBufferSequence& buffers)
240
+ {
241
+ boost::system::error_code ec;
242
+ std::size_t s = this->get_service().send(
243
+ this->get_implementation(), buffers, 0, ec);
244
+ boost::asio::detail::throw_error(ec, "send");
245
+ return s;
246
+ }
247
+
248
+ /// Send some data on a connected socket.
249
+ /**
250
+ * This function is used to send data on the datagram socket. The function
251
+ * call will block until the data has been sent successfully or an error
252
+ * occurs.
253
+ *
254
+ * @param buffers One ore more data buffers to be sent on the socket.
255
+ *
256
+ * @param flags Flags specifying how the send call is to be made.
257
+ *
258
+ * @returns The number of bytes sent.
259
+ *
260
+ * @throws boost::system::system_error Thrown on failure.
261
+ *
262
+ * @note The send operation can only be used with a connected socket. Use
263
+ * the send_to function to send data on an unconnected datagram socket.
264
+ */
265
+ template <typename ConstBufferSequence>
266
+ std::size_t send(const ConstBufferSequence& buffers,
267
+ socket_base::message_flags flags)
268
+ {
269
+ boost::system::error_code ec;
270
+ std::size_t s = this->get_service().send(
271
+ this->get_implementation(), buffers, flags, ec);
272
+ boost::asio::detail::throw_error(ec, "send");
273
+ return s;
274
+ }
275
+
276
+ /// Send some data on a connected socket.
277
+ /**
278
+ * This function is used to send data on the datagram socket. The function
279
+ * call will block until the data has been sent successfully or an error
280
+ * occurs.
281
+ *
282
+ * @param buffers One or more data buffers to be sent on the socket.
283
+ *
284
+ * @param flags Flags specifying how the send call is to be made.
285
+ *
286
+ * @param ec Set to indicate what error occurred, if any.
287
+ *
288
+ * @returns The number of bytes sent.
289
+ *
290
+ * @note The send operation can only be used with a connected socket. Use
291
+ * the send_to function to send data on an unconnected datagram socket.
292
+ */
293
+ template <typename ConstBufferSequence>
294
+ std::size_t send(const ConstBufferSequence& buffers,
295
+ socket_base::message_flags flags, boost::system::error_code& ec)
296
+ {
297
+ return this->get_service().send(
298
+ this->get_implementation(), buffers, flags, ec);
299
+ }
300
+
301
+ /// Start an asynchronous send on a connected socket.
302
+ /**
303
+ * This function is used to asynchronously send data on the datagram socket.
304
+ * The function call always returns immediately.
305
+ *
306
+ * @param buffers One or more data buffers to be sent on the socket. Although
307
+ * the buffers object may be copied as necessary, ownership of the underlying
308
+ * memory blocks is retained by the caller, which must guarantee that they
309
+ * remain valid until the handler is called.
310
+ *
311
+ * @param handler The handler to be called when the send operation completes.
312
+ * Copies will be made of the handler as required. The function signature of
313
+ * the handler must be:
314
+ * @code void handler(
315
+ * const boost::system::error_code& error, // Result of operation.
316
+ * std::size_t bytes_transferred // Number of bytes sent.
317
+ * ); @endcode
318
+ * Regardless of whether the asynchronous operation completes immediately or
319
+ * not, the handler will not be invoked from within this function. Invocation
320
+ * of the handler will be performed in a manner equivalent to using
321
+ * boost::asio::io_service::post().
322
+ *
323
+ * @note The async_send operation can only be used with a connected socket.
324
+ * Use the async_send_to function to send data on an unconnected datagram
325
+ * socket.
326
+ *
327
+ * @par Example
328
+ * To send a single data buffer use the @ref buffer function as follows:
329
+ * @code
330
+ * socket.async_send(boost::asio::buffer(data, size), handler);
331
+ * @endcode
332
+ * See the @ref buffer documentation for information on sending multiple
333
+ * buffers in one go, and how to use it with arrays, boost::array or
334
+ * std::vector.
335
+ */
336
+ template <typename ConstBufferSequence, typename WriteHandler>
337
+ BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
338
+ void (boost::system::error_code, std::size_t))
339
+ async_send(const ConstBufferSequence& buffers,
340
+ BOOST_ASIO_MOVE_ARG(WriteHandler) handler)
341
+ {
342
+ // If you get an error on the following line it means that your handler does
343
+ // not meet the documented type requirements for a WriteHandler.
344
+ BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
345
+
346
+ return this->get_service().async_send(this->get_implementation(),
347
+ buffers, 0, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
348
+ }
349
+
350
+ /// Start an asynchronous send on a connected socket.
351
+ /**
352
+ * This function is used to asynchronously send data on the datagram socket.
353
+ * The function call always returns immediately.
354
+ *
355
+ * @param buffers One or more data buffers to be sent on the socket. Although
356
+ * the buffers object may be copied as necessary, ownership of the underlying
357
+ * memory blocks is retained by the caller, which must guarantee that they
358
+ * remain valid until the handler is called.
359
+ *
360
+ * @param flags Flags specifying how the send call is to be made.
361
+ *
362
+ * @param handler The handler to be called when the send operation completes.
363
+ * Copies will be made of the handler as required. The function signature of
364
+ * the handler must be:
365
+ * @code void handler(
366
+ * const boost::system::error_code& error, // Result of operation.
367
+ * std::size_t bytes_transferred // Number of bytes sent.
368
+ * ); @endcode
369
+ * Regardless of whether the asynchronous operation completes immediately or
370
+ * not, the handler will not be invoked from within this function. Invocation
371
+ * of the handler will be performed in a manner equivalent to using
372
+ * boost::asio::io_service::post().
373
+ *
374
+ * @note The async_send operation can only be used with a connected socket.
375
+ * Use the async_send_to function to send data on an unconnected datagram
376
+ * socket.
377
+ */
378
+ template <typename ConstBufferSequence, typename WriteHandler>
379
+ BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
380
+ void (boost::system::error_code, std::size_t))
381
+ async_send(const ConstBufferSequence& buffers,
382
+ socket_base::message_flags flags,
383
+ BOOST_ASIO_MOVE_ARG(WriteHandler) handler)
384
+ {
385
+ // If you get an error on the following line it means that your handler does
386
+ // not meet the documented type requirements for a WriteHandler.
387
+ BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
388
+
389
+ return this->get_service().async_send(this->get_implementation(),
390
+ buffers, flags, BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
391
+ }
392
+
393
+ /// Send a datagram to the specified endpoint.
394
+ /**
395
+ * This function is used to send a datagram to the specified remote endpoint.
396
+ * The function call will block until the data has been sent successfully or
397
+ * an error occurs.
398
+ *
399
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
400
+ *
401
+ * @param destination The remote endpoint to which the data will be sent.
402
+ *
403
+ * @returns The number of bytes sent.
404
+ *
405
+ * @throws boost::system::system_error Thrown on failure.
406
+ *
407
+ * @par Example
408
+ * To send a single data buffer use the @ref buffer function as follows:
409
+ * @code
410
+ * boost::asio::ip::udp::endpoint destination(
411
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
412
+ * socket.send_to(boost::asio::buffer(data, size), destination);
413
+ * @endcode
414
+ * See the @ref buffer documentation for information on sending multiple
415
+ * buffers in one go, and how to use it with arrays, boost::array or
416
+ * std::vector.
417
+ */
418
+ template <typename ConstBufferSequence>
419
+ std::size_t send_to(const ConstBufferSequence& buffers,
420
+ const endpoint_type& destination)
421
+ {
422
+ boost::system::error_code ec;
423
+ std::size_t s = this->get_service().send_to(
424
+ this->get_implementation(), buffers, destination, 0, ec);
425
+ boost::asio::detail::throw_error(ec, "send_to");
426
+ return s;
427
+ }
428
+
429
+ /// Send a datagram to the specified endpoint.
430
+ /**
431
+ * This function is used to send a datagram to the specified remote endpoint.
432
+ * The function call will block until the data has been sent successfully or
433
+ * an error occurs.
434
+ *
435
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
436
+ *
437
+ * @param destination The remote endpoint to which the data will be sent.
438
+ *
439
+ * @param flags Flags specifying how the send call is to be made.
440
+ *
441
+ * @returns The number of bytes sent.
442
+ *
443
+ * @throws boost::system::system_error Thrown on failure.
444
+ */
445
+ template <typename ConstBufferSequence>
446
+ std::size_t send_to(const ConstBufferSequence& buffers,
447
+ const endpoint_type& destination, socket_base::message_flags flags)
448
+ {
449
+ boost::system::error_code ec;
450
+ std::size_t s = this->get_service().send_to(
451
+ this->get_implementation(), buffers, destination, flags, ec);
452
+ boost::asio::detail::throw_error(ec, "send_to");
453
+ return s;
454
+ }
455
+
456
+ /// Send a datagram to the specified endpoint.
457
+ /**
458
+ * This function is used to send a datagram to the specified remote endpoint.
459
+ * The function call will block until the data has been sent successfully or
460
+ * an error occurs.
461
+ *
462
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
463
+ *
464
+ * @param destination The remote endpoint to which the data will be sent.
465
+ *
466
+ * @param flags Flags specifying how the send call is to be made.
467
+ *
468
+ * @param ec Set to indicate what error occurred, if any.
469
+ *
470
+ * @returns The number of bytes sent.
471
+ */
472
+ template <typename ConstBufferSequence>
473
+ std::size_t send_to(const ConstBufferSequence& buffers,
474
+ const endpoint_type& destination, socket_base::message_flags flags,
475
+ boost::system::error_code& ec)
476
+ {
477
+ return this->get_service().send_to(this->get_implementation(),
478
+ buffers, destination, flags, ec);
479
+ }
480
+
481
+ /// Start an asynchronous send.
482
+ /**
483
+ * This function is used to asynchronously send a datagram to the specified
484
+ * remote endpoint. The function call always returns immediately.
485
+ *
486
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
487
+ * Although the buffers object may be copied as necessary, ownership of the
488
+ * underlying memory blocks is retained by the caller, which must guarantee
489
+ * that they remain valid until the handler is called.
490
+ *
491
+ * @param destination The remote endpoint to which the data will be sent.
492
+ * Copies will be made of the endpoint as required.
493
+ *
494
+ * @param handler The handler to be called when the send operation completes.
495
+ * Copies will be made of the handler as required. The function signature of
496
+ * the handler must be:
497
+ * @code void handler(
498
+ * const boost::system::error_code& error, // Result of operation.
499
+ * std::size_t bytes_transferred // Number of bytes sent.
500
+ * ); @endcode
501
+ * Regardless of whether the asynchronous operation completes immediately or
502
+ * not, the handler will not be invoked from within this function. Invocation
503
+ * of the handler will be performed in a manner equivalent to using
504
+ * boost::asio::io_service::post().
505
+ *
506
+ * @par Example
507
+ * To send a single data buffer use the @ref buffer function as follows:
508
+ * @code
509
+ * boost::asio::ip::udp::endpoint destination(
510
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
511
+ * socket.async_send_to(
512
+ * boost::asio::buffer(data, size), destination, handler);
513
+ * @endcode
514
+ * See the @ref buffer documentation for information on sending multiple
515
+ * buffers in one go, and how to use it with arrays, boost::array or
516
+ * std::vector.
517
+ */
518
+ template <typename ConstBufferSequence, typename WriteHandler>
519
+ BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
520
+ void (boost::system::error_code, std::size_t))
521
+ async_send_to(const ConstBufferSequence& buffers,
522
+ const endpoint_type& destination,
523
+ BOOST_ASIO_MOVE_ARG(WriteHandler) handler)
524
+ {
525
+ // If you get an error on the following line it means that your handler does
526
+ // not meet the documented type requirements for a WriteHandler.
527
+ BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
528
+
529
+ return this->get_service().async_send_to(
530
+ this->get_implementation(), buffers, destination, 0,
531
+ BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
532
+ }
533
+
534
+ /// Start an asynchronous send.
535
+ /**
536
+ * This function is used to asynchronously send a datagram to the specified
537
+ * remote endpoint. The function call always returns immediately.
538
+ *
539
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
540
+ * Although the buffers object may be copied as necessary, ownership of the
541
+ * underlying memory blocks is retained by the caller, which must guarantee
542
+ * that they remain valid until the handler is called.
543
+ *
544
+ * @param flags Flags specifying how the send call is to be made.
545
+ *
546
+ * @param destination The remote endpoint to which the data will be sent.
547
+ * Copies will be made of the endpoint as required.
548
+ *
549
+ * @param handler The handler to be called when the send operation completes.
550
+ * Copies will be made of the handler as required. The function signature of
551
+ * the handler must be:
552
+ * @code void handler(
553
+ * const boost::system::error_code& error, // Result of operation.
554
+ * std::size_t bytes_transferred // Number of bytes sent.
555
+ * ); @endcode
556
+ * Regardless of whether the asynchronous operation completes immediately or
557
+ * not, the handler will not be invoked from within this function. Invocation
558
+ * of the handler will be performed in a manner equivalent to using
559
+ * boost::asio::io_service::post().
560
+ */
561
+ template <typename ConstBufferSequence, typename WriteHandler>
562
+ BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
563
+ void (boost::system::error_code, std::size_t))
564
+ async_send_to(const ConstBufferSequence& buffers,
565
+ const endpoint_type& destination, socket_base::message_flags flags,
566
+ BOOST_ASIO_MOVE_ARG(WriteHandler) handler)
567
+ {
568
+ // If you get an error on the following line it means that your handler does
569
+ // not meet the documented type requirements for a WriteHandler.
570
+ BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
571
+
572
+ return this->get_service().async_send_to(
573
+ this->get_implementation(), buffers, destination, flags,
574
+ BOOST_ASIO_MOVE_CAST(WriteHandler)(handler));
575
+ }
576
+
577
+ /// Receive some data on a connected socket.
578
+ /**
579
+ * This function is used to receive data on the datagram socket. The function
580
+ * call will block until data has been received successfully or an error
581
+ * occurs.
582
+ *
583
+ * @param buffers One or more buffers into which the data will be received.
584
+ *
585
+ * @returns The number of bytes received.
586
+ *
587
+ * @throws boost::system::system_error Thrown on failure.
588
+ *
589
+ * @note The receive operation can only be used with a connected socket. Use
590
+ * the receive_from function to receive data on an unconnected datagram
591
+ * socket.
592
+ *
593
+ * @par Example
594
+ * To receive into a single data buffer use the @ref buffer function as
595
+ * follows:
596
+ * @code socket.receive(boost::asio::buffer(data, size)); @endcode
597
+ * See the @ref buffer documentation for information on receiving into
598
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
599
+ * std::vector.
600
+ */
601
+ template <typename MutableBufferSequence>
602
+ std::size_t receive(const MutableBufferSequence& buffers)
603
+ {
604
+ boost::system::error_code ec;
605
+ std::size_t s = this->get_service().receive(
606
+ this->get_implementation(), buffers, 0, ec);
607
+ boost::asio::detail::throw_error(ec, "receive");
608
+ return s;
609
+ }
610
+
611
+ /// Receive some data on a connected socket.
612
+ /**
613
+ * This function is used to receive data on the datagram socket. The function
614
+ * call will block until data has been received successfully or an error
615
+ * occurs.
616
+ *
617
+ * @param buffers One or more buffers into which the data will be received.
618
+ *
619
+ * @param flags Flags specifying how the receive call is to be made.
620
+ *
621
+ * @returns The number of bytes received.
622
+ *
623
+ * @throws boost::system::system_error Thrown on failure.
624
+ *
625
+ * @note The receive operation can only be used with a connected socket. Use
626
+ * the receive_from function to receive data on an unconnected datagram
627
+ * socket.
628
+ */
629
+ template <typename MutableBufferSequence>
630
+ std::size_t receive(const MutableBufferSequence& buffers,
631
+ socket_base::message_flags flags)
632
+ {
633
+ boost::system::error_code ec;
634
+ std::size_t s = this->get_service().receive(
635
+ this->get_implementation(), buffers, flags, ec);
636
+ boost::asio::detail::throw_error(ec, "receive");
637
+ return s;
638
+ }
639
+
640
+ /// Receive some data on a connected socket.
641
+ /**
642
+ * This function is used to receive data on the datagram socket. The function
643
+ * call will block until data has been received successfully or an error
644
+ * occurs.
645
+ *
646
+ * @param buffers One or more buffers into which the data will be received.
647
+ *
648
+ * @param flags Flags specifying how the receive call is to be made.
649
+ *
650
+ * @param ec Set to indicate what error occurred, if any.
651
+ *
652
+ * @returns The number of bytes received.
653
+ *
654
+ * @note The receive operation can only be used with a connected socket. Use
655
+ * the receive_from function to receive data on an unconnected datagram
656
+ * socket.
657
+ */
658
+ template <typename MutableBufferSequence>
659
+ std::size_t receive(const MutableBufferSequence& buffers,
660
+ socket_base::message_flags flags, boost::system::error_code& ec)
661
+ {
662
+ return this->get_service().receive(
663
+ this->get_implementation(), buffers, flags, ec);
664
+ }
665
+
666
+ /// Start an asynchronous receive on a connected socket.
667
+ /**
668
+ * This function is used to asynchronously receive data from the datagram
669
+ * socket. The function call always returns immediately.
670
+ *
671
+ * @param buffers One or more buffers into which the data will be received.
672
+ * Although the buffers object may be copied as necessary, ownership of the
673
+ * underlying memory blocks is retained by the caller, which must guarantee
674
+ * that they remain valid until the handler is called.
675
+ *
676
+ * @param handler The handler to be called when the receive operation
677
+ * completes. Copies will be made of the handler as required. The function
678
+ * signature of the handler must be:
679
+ * @code void handler(
680
+ * const boost::system::error_code& error, // Result of operation.
681
+ * std::size_t bytes_transferred // Number of bytes received.
682
+ * ); @endcode
683
+ * Regardless of whether the asynchronous operation completes immediately or
684
+ * not, the handler will not be invoked from within this function. Invocation
685
+ * of the handler will be performed in a manner equivalent to using
686
+ * boost::asio::io_service::post().
687
+ *
688
+ * @note The async_receive operation can only be used with a connected socket.
689
+ * Use the async_receive_from function to receive data on an unconnected
690
+ * datagram socket.
691
+ *
692
+ * @par Example
693
+ * To receive into a single data buffer use the @ref buffer function as
694
+ * follows:
695
+ * @code
696
+ * socket.async_receive(boost::asio::buffer(data, size), handler);
697
+ * @endcode
698
+ * See the @ref buffer documentation for information on receiving into
699
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
700
+ * std::vector.
701
+ */
702
+ template <typename MutableBufferSequence, typename ReadHandler>
703
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
704
+ void (boost::system::error_code, std::size_t))
705
+ async_receive(const MutableBufferSequence& buffers,
706
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
707
+ {
708
+ // If you get an error on the following line it means that your handler does
709
+ // not meet the documented type requirements for a ReadHandler.
710
+ BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
711
+
712
+ return this->get_service().async_receive(this->get_implementation(),
713
+ buffers, 0, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
714
+ }
715
+
716
+ /// Start an asynchronous receive on a connected socket.
717
+ /**
718
+ * This function is used to asynchronously receive data from the datagram
719
+ * socket. The function call always returns immediately.
720
+ *
721
+ * @param buffers One or more buffers into which the data will be received.
722
+ * Although the buffers object may be copied as necessary, ownership of the
723
+ * underlying memory blocks is retained by the caller, which must guarantee
724
+ * that they remain valid until the handler is called.
725
+ *
726
+ * @param flags Flags specifying how the receive call is to be made.
727
+ *
728
+ * @param handler The handler to be called when the receive operation
729
+ * completes. Copies will be made of the handler as required. The function
730
+ * signature of the handler must be:
731
+ * @code void handler(
732
+ * const boost::system::error_code& error, // Result of operation.
733
+ * std::size_t bytes_transferred // Number of bytes received.
734
+ * ); @endcode
735
+ * Regardless of whether the asynchronous operation completes immediately or
736
+ * not, the handler will not be invoked from within this function. Invocation
737
+ * of the handler will be performed in a manner equivalent to using
738
+ * boost::asio::io_service::post().
739
+ *
740
+ * @note The async_receive operation can only be used with a connected socket.
741
+ * Use the async_receive_from function to receive data on an unconnected
742
+ * datagram socket.
743
+ */
744
+ template <typename MutableBufferSequence, typename ReadHandler>
745
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
746
+ void (boost::system::error_code, std::size_t))
747
+ async_receive(const MutableBufferSequence& buffers,
748
+ socket_base::message_flags flags,
749
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
750
+ {
751
+ // If you get an error on the following line it means that your handler does
752
+ // not meet the documented type requirements for a ReadHandler.
753
+ BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
754
+
755
+ return this->get_service().async_receive(this->get_implementation(),
756
+ buffers, flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
757
+ }
758
+
759
+ /// Receive a datagram with the endpoint of the sender.
760
+ /**
761
+ * This function is used to receive a datagram. The function call will block
762
+ * until data has been received successfully or an error occurs.
763
+ *
764
+ * @param buffers One or more buffers into which the data will be received.
765
+ *
766
+ * @param sender_endpoint An endpoint object that receives the endpoint of
767
+ * the remote sender of the datagram.
768
+ *
769
+ * @returns The number of bytes received.
770
+ *
771
+ * @throws boost::system::system_error Thrown on failure.
772
+ *
773
+ * @par Example
774
+ * To receive into a single data buffer use the @ref buffer function as
775
+ * follows:
776
+ * @code
777
+ * boost::asio::ip::udp::endpoint sender_endpoint;
778
+ * socket.receive_from(
779
+ * boost::asio::buffer(data, size), sender_endpoint);
780
+ * @endcode
781
+ * See the @ref buffer documentation for information on receiving into
782
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
783
+ * std::vector.
784
+ */
785
+ template <typename MutableBufferSequence>
786
+ std::size_t receive_from(const MutableBufferSequence& buffers,
787
+ endpoint_type& sender_endpoint)
788
+ {
789
+ boost::system::error_code ec;
790
+ std::size_t s = this->get_service().receive_from(
791
+ this->get_implementation(), buffers, sender_endpoint, 0, ec);
792
+ boost::asio::detail::throw_error(ec, "receive_from");
793
+ return s;
794
+ }
795
+
796
+ /// Receive a datagram with the endpoint of the sender.
797
+ /**
798
+ * This function is used to receive a datagram. The function call will block
799
+ * until data has been received successfully or an error occurs.
800
+ *
801
+ * @param buffers One or more buffers into which the data will be received.
802
+ *
803
+ * @param sender_endpoint An endpoint object that receives the endpoint of
804
+ * the remote sender of the datagram.
805
+ *
806
+ * @param flags Flags specifying how the receive call is to be made.
807
+ *
808
+ * @returns The number of bytes received.
809
+ *
810
+ * @throws boost::system::system_error Thrown on failure.
811
+ */
812
+ template <typename MutableBufferSequence>
813
+ std::size_t receive_from(const MutableBufferSequence& buffers,
814
+ endpoint_type& sender_endpoint, socket_base::message_flags flags)
815
+ {
816
+ boost::system::error_code ec;
817
+ std::size_t s = this->get_service().receive_from(
818
+ this->get_implementation(), buffers, sender_endpoint, flags, ec);
819
+ boost::asio::detail::throw_error(ec, "receive_from");
820
+ return s;
821
+ }
822
+
823
+ /// Receive a datagram with the endpoint of the sender.
824
+ /**
825
+ * This function is used to receive a datagram. The function call will block
826
+ * until data has been received successfully or an error occurs.
827
+ *
828
+ * @param buffers One or more buffers into which the data will be received.
829
+ *
830
+ * @param sender_endpoint An endpoint object that receives the endpoint of
831
+ * the remote sender of the datagram.
832
+ *
833
+ * @param flags Flags specifying how the receive call is to be made.
834
+ *
835
+ * @param ec Set to indicate what error occurred, if any.
836
+ *
837
+ * @returns The number of bytes received.
838
+ */
839
+ template <typename MutableBufferSequence>
840
+ std::size_t receive_from(const MutableBufferSequence& buffers,
841
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
842
+ boost::system::error_code& ec)
843
+ {
844
+ return this->get_service().receive_from(this->get_implementation(),
845
+ buffers, sender_endpoint, flags, ec);
846
+ }
847
+
848
+ /// Start an asynchronous receive.
849
+ /**
850
+ * This function is used to asynchronously receive a datagram. The function
851
+ * call always returns immediately.
852
+ *
853
+ * @param buffers One or more buffers into which the data will be received.
854
+ * Although the buffers object may be copied as necessary, ownership of the
855
+ * underlying memory blocks is retained by the caller, which must guarantee
856
+ * that they remain valid until the handler is called.
857
+ *
858
+ * @param sender_endpoint An endpoint object that receives the endpoint of
859
+ * the remote sender of the datagram. Ownership of the sender_endpoint object
860
+ * is retained by the caller, which must guarantee that it is valid until the
861
+ * handler is called.
862
+ *
863
+ * @param handler The handler to be called when the receive operation
864
+ * completes. Copies will be made of the handler as required. The function
865
+ * signature of the handler must be:
866
+ * @code void handler(
867
+ * const boost::system::error_code& error, // Result of operation.
868
+ * std::size_t bytes_transferred // Number of bytes received.
869
+ * ); @endcode
870
+ * Regardless of whether the asynchronous operation completes immediately or
871
+ * not, the handler will not be invoked from within this function. Invocation
872
+ * of the handler will be performed in a manner equivalent to using
873
+ * boost::asio::io_service::post().
874
+ *
875
+ * @par Example
876
+ * To receive into a single data buffer use the @ref buffer function as
877
+ * follows:
878
+ * @code socket.async_receive_from(
879
+ * boost::asio::buffer(data, size), sender_endpoint, handler); @endcode
880
+ * See the @ref buffer documentation for information on receiving into
881
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
882
+ * std::vector.
883
+ */
884
+ template <typename MutableBufferSequence, typename ReadHandler>
885
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
886
+ void (boost::system::error_code, std::size_t))
887
+ async_receive_from(const MutableBufferSequence& buffers,
888
+ endpoint_type& sender_endpoint,
889
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
890
+ {
891
+ // If you get an error on the following line it means that your handler does
892
+ // not meet the documented type requirements for a ReadHandler.
893
+ BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
894
+
895
+ return this->get_service().async_receive_from(
896
+ this->get_implementation(), buffers, sender_endpoint, 0,
897
+ BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
898
+ }
899
+
900
+ /// Start an asynchronous receive.
901
+ /**
902
+ * This function is used to asynchronously receive a datagram. The function
903
+ * call always returns immediately.
904
+ *
905
+ * @param buffers One or more buffers into which the data will be received.
906
+ * Although the buffers object may be copied as necessary, ownership of the
907
+ * underlying memory blocks is retained by the caller, which must guarantee
908
+ * that they remain valid until the handler is called.
909
+ *
910
+ * @param sender_endpoint An endpoint object that receives the endpoint of
911
+ * the remote sender of the datagram. Ownership of the sender_endpoint object
912
+ * is retained by the caller, which must guarantee that it is valid until the
913
+ * handler is called.
914
+ *
915
+ * @param flags Flags specifying how the receive call is to be made.
916
+ *
917
+ * @param handler The handler to be called when the receive operation
918
+ * completes. Copies will be made of the handler as required. The function
919
+ * signature of the handler must be:
920
+ * @code void handler(
921
+ * const boost::system::error_code& error, // Result of operation.
922
+ * std::size_t bytes_transferred // Number of bytes received.
923
+ * ); @endcode
924
+ * Regardless of whether the asynchronous operation completes immediately or
925
+ * not, the handler will not be invoked from within this function. Invocation
926
+ * of the handler will be performed in a manner equivalent to using
927
+ * boost::asio::io_service::post().
928
+ */
929
+ template <typename MutableBufferSequence, typename ReadHandler>
930
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
931
+ void (boost::system::error_code, std::size_t))
932
+ async_receive_from(const MutableBufferSequence& buffers,
933
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
934
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
935
+ {
936
+ // If you get an error on the following line it means that your handler does
937
+ // not meet the documented type requirements for a ReadHandler.
938
+ BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
939
+
940
+ return this->get_service().async_receive_from(
941
+ this->get_implementation(), buffers, sender_endpoint, flags,
942
+ BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
943
+ }
944
+ };
945
+
946
+ } // namespace asio
947
+ } // namespace boost
948
+
949
+ #include <boost/asio/detail/pop_options.hpp>
950
+
951
+ #endif // BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP