passenger 6.0.7 → 6.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1573) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -0
  3. data/CONTRIBUTORS +1 -0
  4. data/README.md +2 -9
  5. data/build/common_library.rb +4 -4
  6. data/build/packaging.rb +4 -2
  7. data/build/support/cxx_dependency_map.rb +1 -0
  8. data/dev/copy_boost_headers +1 -1
  9. data/resources/release.txt +1 -0
  10. data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
  11. data/resources/templates/standalone/global.erb +4 -0
  12. data/src/agent/Core/AdminPanelConnector.h +1 -1
  13. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  15. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  16. data/src/agent/Core/ApplicationPool/Options.h +2 -2
  17. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  18. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  19. data/src/agent/Core/Config.h +2 -2
  20. data/src/agent/Core/Controller/Config.h +2 -2
  21. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +1 -1
  23. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  24. data/src/agent/Core/SpawningKit/SmartSpawner.h +1 -1
  25. data/src/agent/Core/SpawningKit/Spawner.h +1 -0
  26. data/src/agent/Core/TelemetryCollector.h +1 -1
  27. data/src/agent/Shared/ApiServerUtils.h +1 -1
  28. data/src/agent/Watchdog/Config.h +1 -1
  29. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  30. data/src/agent/Watchdog/WatchdogMain.cpp +1 -1
  31. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  32. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  33. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  34. data/src/cxx_supportlib/Constants.h +2 -2
  35. data/src/cxx_supportlib/FileTools/FileManip.cpp +10 -1
  36. data/src/cxx_supportlib/FileTools/FileManip.h +16 -0
  37. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  38. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  39. data/src/cxx_supportlib/SafeLibev.h +1 -1
  40. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
  41. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  42. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +9 -12
  43. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +5 -1
  44. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  45. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +107 -5
  46. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +2 -2
  47. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +12 -1
  48. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +13 -3
  49. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -1
  50. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +6 -2
  51. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +13 -1
  52. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +6 -15
  53. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +24 -24
  54. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +1 -0
  55. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +84 -19
  56. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +3 -0
  57. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +4 -0
  58. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +10 -0
  59. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +150 -147
  60. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +1 -1
  62. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +47 -25
  63. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +3 -3
  64. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +14 -9
  65. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -189
  66. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +59 -66
  67. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +73 -38
  68. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +9 -7
  69. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +12 -22
  70. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +11 -11
  72. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +13 -13
  74. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +3 -3
  75. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +8 -8
  76. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +1 -0
  77. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +2 -4
  78. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +3 -3
  79. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
  80. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +2 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +1 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
  83. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
  85. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
  86. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +2 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +47 -17
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +73 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +2 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +37 -20
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +426 -65
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +135 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +432 -257
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +178 -113
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +433 -257
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +286 -143
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +315 -96
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +241 -64
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +364 -227
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +976 -461
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +21 -44
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +15 -35
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +329 -197
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +221 -115
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +11 -47
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +416 -89
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +23 -27
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +31 -30
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +23 -27
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +473 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +138 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +118 -102
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +33 -10
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +114 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +20 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +145 -27
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +107 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +90 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +11 -6
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +481 -129
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +29 -12
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +25 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +36 -16
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +36 -16
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +205 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +55 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +24 -1
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +378 -35
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +218 -84
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +12 -8
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +40 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +6 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +5 -4
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +16 -19
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +4 -4
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +37 -33
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +87 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +8 -3
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +22 -23
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +674 -283
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +15 -6
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +211 -5
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +9 -10
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +6 -5
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +177 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +65 -16
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +4 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +56 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +14 -8
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +16 -6
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +62 -34
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +15 -7
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +15 -14
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +53 -28
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +20 -10
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +43 -19
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +42 -16
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +26 -13
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +48 -20
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +43 -17
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +82 -80
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +77 -47
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +15 -7
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +1 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -2
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +16 -14
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +31 -13
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +31 -15
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +18 -18
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +22 -19
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +21 -2
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +24 -12
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +47 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +26 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +5 -2
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +7 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +67 -5
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +65 -3
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +177 -2
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +84 -8
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +46 -10
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +27 -14
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +48 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +251 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +2266 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +49 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1353 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1066 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +394 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +1020 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +490 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +187 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +203 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +154 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +107 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +130 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +263 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +235 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +92 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +270 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +240 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +38 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +73 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +919 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +180 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +96 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +723 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +329 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +282 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +50 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +722 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +294 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +88 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +313 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +257 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +257 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +490 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +254 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +454 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -2
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +8 -2
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +129 -12
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -2
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +29 -6
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +30 -4
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +438 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +154 -56
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +148 -52
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +300 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +637 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +299 -243
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +204 -33
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +132 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +199 -34
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +8 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +16 -101
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +6 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +14 -5
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +209 -114
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +4 -3
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +51 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +204 -33
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +619 -132
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +194 -90
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +2278 -445
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/redirect_error.hpp +148 -52
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +59 -68
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +2 -2
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +4 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +25 -6
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +114 -13
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +261 -38
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +73 -8
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +281 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +131 -40
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +562 -132
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +185 -91
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +714 -60
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +46 -54
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +35 -27
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +32 -26
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +41 -36
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +24 -23
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +200 -190
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -10
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -18
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -11
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +26 -26
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +1 -1
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -2
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +8 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +60 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +189 -74
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +180 -72
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +29 -10
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +660 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +300 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +398 -57
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +51 -28
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1460 -423
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/redirect_error.hpp → redirect_error.hpp} +9 -10
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +528 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +314 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +13 -5
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +4 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +6 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +6 -1
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +6 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +37 -10
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +3 -3
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +51 -8
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +6 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +41 -6
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +11 -2
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +44 -10
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +235 -97
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +264 -13
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +16 -4
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +558 -25
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +47 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +917 -38
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +116 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +116 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +114 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +114 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +110 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +110 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +110 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +110 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +110 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +110 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +110 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +110 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +110 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +110 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +110 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +110 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +110 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +110 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +110 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +114 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +114 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +236 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +236 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +110 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +110 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +110 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +125 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +125 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +114 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +114 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +101 -36
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +171 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +295 -42
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +363 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +186 -72
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +188 -73
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +3 -346
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +4 -296
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +38 -9
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +3 -344
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +3 -328
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +372 -54
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +51 -28
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +93 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +178 -11
  592. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
  593. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +85 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
  595. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{atomic_template.hpp → atomic_impl.hpp} +327 -429
  599. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1126 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +23 -4
  601. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +3 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +46 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +58 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_alpha.hpp → caps_arch_gcc_alpha.hpp} +4 -4
  606. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_arm.hpp → caps_arch_gcc_arm.hpp} +37 -8
  607. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_ppc.hpp → caps_arch_gcc_ppc.hpp} +19 -6
  608. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_sparc.hpp → caps_arch_gcc_sparc.hpp} +4 -4
  609. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_x86.hpp → caps_arch_gcc_x86.hpp} +22 -6
  610. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_arm.hpp → caps_arch_msvc_arm.hpp} +4 -4
  611. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_x86.hpp → caps_arch_msvc_x86.hpp} +12 -6
  612. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
  613. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
  614. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +81 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +39 -15
  617. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_alpha.hpp → core_arch_ops_gcc_alpha.hpp} +280 -289
  622. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_arm.hpp → core_arch_ops_gcc_arm.hpp} +467 -447
  623. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_ppc.hpp → core_arch_ops_gcc_ppc.hpp} +75 -94
  624. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sparc.hpp → core_arch_ops_gcc_sparc.hpp} +33 -58
  625. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_x86_dcas.hpp → core_arch_ops_gcc_x86.hpp} +507 -20
  626. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_arm.hpp → core_arch_ops_msvc_arm.hpp} +58 -54
  627. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_x86.hpp → core_arch_ops_msvc_x86.hpp} +69 -101
  628. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +195 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_cas_based.hpp → core_ops_cas_based.hpp} +9 -22
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sync.hpp → core_ops_gcc_sync.hpp} +75 -52
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_linux_arm.hpp → core_ops_linux_arm.hpp} +32 -43
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +201 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_extending_cas_based.hpp → extending_cas_based_arithmetic.hpp} +12 -9
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +23 -12
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +12 -9
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +60 -40
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +94 -91
  647. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
  648. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
  649. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
  650. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
  651. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +67 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +14 -8
  670. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
  671. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +147 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +75 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{integral_extend.hpp → integral_conversions.hpp} +8 -5
  676. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
  677. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
  684. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
  686. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +23 -5
  687. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +64 -27
  688. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
  691. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +55 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +97 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +150 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
  706. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +85 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +85 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +20 -1
  710. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +11 -11
  711. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +1 -1
  712. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +25 -11
  713. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +18 -18
  714. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +1 -1
  715. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +1 -1
  716. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +26 -6
  717. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +2 -2
  718. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +8 -5
  719. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +107 -105
  720. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -21
  721. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +25 -31
  722. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  723. data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
  725. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +72 -22
  726. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -1
  727. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +13 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +155 -10
  729. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +5 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +21 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +2 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +7 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +2 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +15 -7
  742. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +5 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -1
  745. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
  746. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +68 -4
  747. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +3 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
  749. data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
  750. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +10 -4
  751. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +2 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +9 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
  757. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
  759. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
  762. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +15 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +10 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +13 -13
  765. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +19 -3
  766. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +117 -29
  767. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +250 -208
  768. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +7 -7
  769. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  770. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
  771. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -1
  773. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +2 -2
  774. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
  775. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
  776. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +11 -8
  777. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +14 -14
  778. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +30 -24
  779. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +133 -117
  781. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
  782. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +83 -18
  783. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +6 -6
  784. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +103 -69
  785. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +6 -0
  786. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +3 -12
  787. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +6 -2
  788. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +51 -45
  789. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +24 -22
  790. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +83 -77
  791. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +82 -87
  792. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +17 -2
  793. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +2 -2
  794. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +278 -2
  795. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
  797. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +30 -1
  798. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +5 -4
  799. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +90 -6
  800. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +4 -4
  801. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
  802. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -80
  803. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +63 -67
  804. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +48 -42
  805. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +150 -105
  806. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +174 -155
  807. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +157 -105
  808. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +54 -53
  809. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -15
  810. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +207 -207
  811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -51
  812. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +4 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
  814. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +169 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +633 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +6 -4
  817. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +148 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -6
  819. data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +157 -50
  821. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +82 -1
  822. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
  823. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +87 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +1 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +1 -1
  828. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +6 -3
  829. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +2 -2
  830. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
  832. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
  833. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
  835. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +4 -17
  836. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
  837. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +23 -23
  838. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
  839. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
  841. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
  842. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
  843. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
  844. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
  845. data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
  847. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +22 -14
  848. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
  849. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
  850. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
  851. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
  852. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
  853. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
  854. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
  855. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +32 -13
  856. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
  857. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +27 -22
  858. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
  859. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
  861. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
  862. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
  863. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
  864. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
  865. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
  866. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
  867. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
  868. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
  869. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
  870. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +0 -5
  871. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
  872. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
  873. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
  874. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
  875. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -11
  876. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +3 -8
  877. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
  878. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
  879. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
  880. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
  882. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
  883. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
  884. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
  885. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -4
  886. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
  887. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
  888. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
  889. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +63 -8
  890. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
  891. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
  892. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
  893. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +9 -4
  894. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +15 -6
  895. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +19 -57
  896. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
  897. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +11 -6
  898. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +9 -4
  899. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
  900. data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
  901. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +13 -6
  902. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +4 -12
  903. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +22 -4
  904. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +2 -2
  905. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +1 -1
  906. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +30 -28
  907. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
  908. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +6 -6
  909. data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +2 -3
  911. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +1 -0
  912. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -1
  913. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +22 -22
  914. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +11 -11
  915. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +22 -22
  916. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -11
  917. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +2 -2
  918. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +3 -3
  919. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +12 -12
  920. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +18 -9
  921. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +12 -4
  922. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +10 -10
  923. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +1 -1
  924. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +15 -3
  925. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +7 -12
  926. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +1 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +13 -1
  928. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -11
  929. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +6 -1
  930. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +13 -17
  931. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +3 -0
  932. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -9
  933. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +9 -1
  934. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +6 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +14 -14
  936. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +2 -2
  937. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +11 -11
  938. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -1
  939. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +22 -22
  940. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +22 -22
  941. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +11 -11
  942. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +11 -11
  943. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +22 -22
  944. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +11 -11
  945. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +93 -66
  946. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +17 -14
  947. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +67 -60
  948. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +9 -9
  949. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
  950. data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
  951. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -4
  952. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +3 -2
  953. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
  954. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +1 -1
  955. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +18 -13
  957. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +43 -43
  958. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +2 -2
  959. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  961. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -5
  962. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  964. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +1 -1
  966. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +2 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +10 -3
  968. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +1 -1
  969. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +7 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +4 -2
  971. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
  972. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +3 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +5 -5
  974. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +7 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +1 -1
  976. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
  977. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +12 -7
  979. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +50 -52
  980. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +41 -7
  981. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +23 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +6 -6
  983. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +2 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
  985. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +35 -26
  986. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +18 -12
  987. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +103 -318
  988. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +437 -10
  989. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +68 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +15 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  993. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
  994. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  996. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  998. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
  999. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
  1000. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
  1001. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
  1002. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
  1003. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
  1004. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
  1005. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  1006. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
  1007. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
  1008. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
  1009. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
  1010. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
  1011. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
  1012. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
  1013. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  1014. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
  1015. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +1 -1
  1016. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
  1018. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
  1019. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
  1020. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +2 -2
  1021. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
  1023. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
  1024. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
  1025. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
  1026. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
  1027. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +4 -3
  1028. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +4 -3
  1029. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +31 -24
  1030. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +1 -1
  1032. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +9 -4
  1033. data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1252 -358
  1036. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
  1039. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +90 -59
  1040. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
  1042. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
  1046. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
  1059. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
  1060. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
  1067. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
  1068. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
  1069. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
  1076. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
  1077. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
  1086. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
  1101. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
  1104. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
  1105. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +149 -27
  1106. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +865 -159
  1107. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
  1109. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +159 -76
  1110. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +25 -16
  1113. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
  1114. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +154 -70
  1115. data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
  1116. data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
  1117. data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
  1118. data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
  1119. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
  1120. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
  1122. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
  1123. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
  1124. data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
  1125. data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
  1126. data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +553 -884
  1127. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
  1128. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +152 -70
  1132. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +17 -16
  1134. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +86 -32
  1135. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +11 -10
  1136. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +14 -13
  1137. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +17 -16
  1138. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +28 -27
  1139. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +21 -20
  1140. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +19 -18
  1141. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +23 -22
  1142. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +10 -9
  1143. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +8 -7
  1144. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +43 -0
  1145. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +16 -15
  1146. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +12 -11
  1147. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +16 -15
  1148. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +10 -9
  1149. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +10 -9
  1150. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
  1151. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +26 -25
  1152. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +16 -15
  1153. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +9 -8
  1154. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
  1155. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
  1156. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
  1157. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +12 -11
  1158. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
  1159. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
  1160. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
  1161. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
  1162. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
  1163. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
  1164. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
  1165. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
  1166. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
  1167. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
  1168. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
  1169. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
  1170. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
  1171. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
  1172. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
  1173. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
  1174. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
  1175. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
  1176. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +10 -9
  1177. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
  1178. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
  1179. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
  1180. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
  1181. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
  1182. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
  1183. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
  1184. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
  1185. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
  1186. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
  1187. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
  1188. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
  1189. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
  1190. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
  1191. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
  1192. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
  1193. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +11 -10
  1194. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
  1195. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +10 -9
  1196. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +39 -32
  1197. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
  1198. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
  1199. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
  1200. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
  1201. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
  1202. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +10 -9
  1203. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
  1204. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
  1205. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
  1206. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
  1207. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
  1208. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
  1209. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
  1210. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
  1211. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
  1212. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +97 -35
  1213. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
  1214. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
  1215. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
  1216. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
  1217. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
  1218. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +9 -8
  1219. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +9 -8
  1220. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -9
  1221. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +16 -15
  1222. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +59 -58
  1223. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +10 -9
  1224. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
  1225. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
  1226. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
  1227. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
  1228. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
  1229. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
  1230. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
  1231. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
  1232. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
  1233. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
  1234. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
  1235. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
  1236. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +12 -11
  1237. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
  1238. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -0
  1239. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
  1240. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
  1241. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
  1242. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
  1243. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
  1244. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
  1245. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
  1246. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
  1247. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
  1248. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
  1249. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
  1250. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
  1251. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
  1252. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  1253. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
  1254. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +20 -20
  1255. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
  1256. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
  1257. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
  1258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +2 -2
  1259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
  1260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
  1261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
  1262. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -1
  1263. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
  1264. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +16 -16
  1265. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
  1266. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +7 -7
  1267. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +3 -3
  1268. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
  1269. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
  1270. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
  1271. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
  1272. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +9 -9
  1273. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +3 -3
  1274. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +4 -4
  1275. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -2
  1276. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -16
  1277. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -16
  1278. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -1
  1279. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -1
  1280. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +10 -10
  1281. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -16
  1282. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -2
  1283. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +2 -2
  1284. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +2 -2
  1285. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +2 -2
  1286. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
  1287. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
  1288. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +3 -3
  1289. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +28 -0
  1290. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
  1291. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
  1292. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +0 -6
  1293. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +4 -10
  1294. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  1295. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
  1296. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +4 -10
  1297. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
  1298. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
  1299. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
  1300. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
  1301. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +33 -7
  1302. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -2
  1303. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
  1304. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -1
  1305. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +7 -0
  1306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +17 -6
  1307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +27 -5
  1308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +36 -15
  1309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
  1310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +1 -1
  1311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +105 -0
  1312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
  1313. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
  1314. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +13 -1
  1315. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +1 -1
  1316. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +26 -16
  1317. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +16 -6
  1318. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +11 -11
  1319. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +6 -6
  1320. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +7 -0
  1321. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -0
  1322. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +7 -7
  1323. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  1324. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
  1325. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
  1326. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +1 -1
  1327. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +3 -3
  1328. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +92 -388
  1329. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
  1330. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
  1331. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
  1332. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
  1333. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
  1334. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
  1335. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
  1336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
  1337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
  1338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
  1339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +6 -6
  1340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
  1341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +87 -47
  1342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
  1343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
  1344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +13 -3
  1345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +10 -3
  1346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +13 -3
  1347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
  1348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +13 -3
  1349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +13 -3
  1350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +13 -3
  1351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +13 -3
  1352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +13 -3
  1353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +25 -16
  1354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -8
  1355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +14 -4
  1356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +10 -3
  1357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +25 -17
  1358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +10 -3
  1359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +13 -3
  1360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +23 -26
  1361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +27 -0
  1362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
  1363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +51 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_sleep.hpp +104 -0
  1365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
  1366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
  1367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
  1368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +85 -0
  1369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
  1370. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
  1371. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
  1372. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
  1373. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -146
  1374. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +47 -1
  1375. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +22 -22
  1376. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -1
  1377. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -1
  1378. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -1
  1379. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +3 -3
  1380. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +58 -23
  1381. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +79 -8
  1382. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -2
  1383. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +5 -11
  1384. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +57 -16
  1385. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +32 -16
  1386. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1387. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
  1388. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
  1389. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
  1390. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
  1391. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
  1392. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
  1393. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
  1394. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
  1395. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
  1396. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
  1397. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
  1398. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
  1399. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -1
  1400. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
  1401. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +16 -17
  1402. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
  1403. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +4 -11
  1404. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp.orig +841 -0
  1405. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +3 -0
  1406. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
  1407. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
  1408. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
  1409. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
  1410. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
  1411. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
  1412. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
  1414. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
  1415. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
  1416. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
  1417. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
  1418. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
  1419. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +1 -0
  1420. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +2 -1
  1421. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +1 -0
  1422. data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
  1423. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp.orig +54 -0
  1424. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
  1425. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
  1426. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
  1427. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +18 -24
  1428. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +6 -13
  1429. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +11 -37
  1430. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
  1431. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
  1432. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
  1433. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +1 -69
  1434. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +19 -19
  1435. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
  1436. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +9 -6
  1437. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
  1438. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
  1439. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
  1440. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +138 -59
  1441. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +15 -11
  1442. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +51 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  1444. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
  1445. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
  1446. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
  1447. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
  1448. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
  1449. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
  1450. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
  1451. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
  1452. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +25 -4
  1453. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
  1454. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +6 -6
  1455. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +6 -6
  1456. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +3 -3
  1457. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +102 -6
  1458. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
  1459. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -1
  1460. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
  1461. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +4 -4
  1462. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +143 -28
  1463. data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
  1464. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
  1465. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +6 -6
  1466. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +6 -6
  1467. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
  1468. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +6 -6
  1469. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +1 -1
  1470. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
  1471. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +1 -1
  1472. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
  1473. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
  1474. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
  1475. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +1 -1
  1476. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
  1477. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
  1478. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
  1479. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +3 -3
  1480. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
  1481. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
  1482. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +3 -3
  1483. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
  1484. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
  1485. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -3
  1486. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
  1487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
  1488. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
  1489. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
  1490. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
  1491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
  1492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +27 -0
  1493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
  1494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
  1495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
  1496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +2 -2
  1497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
  1498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
  1499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
  1500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  1501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  1502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  1503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  1504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  1505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -2
  1506. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +1 -0
  1507. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +1 -0
  1508. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
  1509. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +3 -42
  1510. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +4 -43
  1511. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +29 -67
  1512. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1513. data/src/nginx_module/Configuration.c +3 -3
  1514. data/src/nginx_module/config +2 -0
  1515. data/src/nginx_module/ngx_http_passenger_module.c +2 -2
  1516. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1517. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  1518. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +4 -1
  1519. data/src/ruby_supportlib/phusion_passenger/common_library.rb +2 -0
  1520. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  1521. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  1522. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  1523. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +17 -9
  1524. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -3
  1525. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -0
  1526. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  1527. metadata +302 -70
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +0 -228
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
  1549. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
  1550. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
  1551. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
  1552. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
  1553. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
  1554. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
  1555. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
  1556. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
  1557. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
  1558. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
  1559. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
  1560. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
  1561. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +0 -89
  1562. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1563. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
  1564. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
  1565. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
  1566. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
  1567. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -28
  1568. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
  1569. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
  1570. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -151
  1571. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -161
  1572. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -116
  1573. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
@@ -2,7 +2,7 @@
2
2
  // detail/impl/scheduler.ipp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -23,6 +23,7 @@
23
23
  #include <boost/asio/detail/reactor.hpp>
24
24
  #include <boost/asio/detail/scheduler.hpp>
25
25
  #include <boost/asio/detail/scheduler_thread_info.hpp>
26
+ #include <boost/asio/detail/signal_blocker.hpp>
26
27
 
27
28
  #include <boost/asio/detail/push_options.hpp>
28
29
 
@@ -30,6 +31,24 @@ namespace boost {
30
31
  namespace asio {
31
32
  namespace detail {
32
33
 
34
+ class scheduler::thread_function
35
+ {
36
+ public:
37
+ explicit thread_function(scheduler* s)
38
+ : this_(s)
39
+ {
40
+ }
41
+
42
+ void operator()()
43
+ {
44
+ boost::system::error_code ec;
45
+ this_->run(ec);
46
+ }
47
+
48
+ private:
49
+ scheduler* this_;
50
+ };
51
+
33
52
  struct scheduler::task_cleanup
34
53
  {
35
54
  ~task_cleanup()
@@ -85,8 +104,8 @@ struct scheduler::work_cleanup
85
104
  thread_info* this_thread_;
86
105
  };
87
106
 
88
- scheduler::scheduler(
89
- boost::asio::execution_context& ctx, int concurrency_hint)
107
+ scheduler::scheduler(boost::asio::execution_context& ctx,
108
+ int concurrency_hint, bool own_thread)
90
109
  : boost::asio::detail::execution_context_service_base<scheduler>(ctx),
91
110
  one_thread_(concurrency_hint == 1
92
111
  || !BOOST_ASIO_CONCURRENCY_HINT_IS_LOCKING(
@@ -100,17 +119,48 @@ scheduler::scheduler(
100
119
  outstanding_work_(0),
101
120
  stopped_(false),
102
121
  shutdown_(false),
103
- concurrency_hint_(concurrency_hint)
122
+ concurrency_hint_(concurrency_hint),
123
+ thread_(0)
104
124
  {
105
125
  BOOST_ASIO_HANDLER_TRACKING_INIT;
126
+
127
+ if (own_thread)
128
+ {
129
+ ++outstanding_work_;
130
+ boost::asio::detail::signal_blocker sb;
131
+ thread_ = new boost::asio::detail::thread(thread_function(this));
132
+ }
133
+ }
134
+
135
+ scheduler::~scheduler()
136
+ {
137
+ if (thread_)
138
+ {
139
+ mutex::scoped_lock lock(mutex_);
140
+ shutdown_ = true;
141
+ stop_all_threads(lock);
142
+ lock.unlock();
143
+ thread_->join();
144
+ delete thread_;
145
+ }
106
146
  }
107
147
 
108
148
  void scheduler::shutdown()
109
149
  {
110
150
  mutex::scoped_lock lock(mutex_);
111
151
  shutdown_ = true;
152
+ if (thread_)
153
+ stop_all_threads(lock);
112
154
  lock.unlock();
113
155
 
156
+ // Join thread to ensure task operation is returned to queue.
157
+ if (thread_)
158
+ {
159
+ thread_->join();
160
+ delete thread_;
161
+ thread_ = 0;
162
+ }
163
+
114
164
  // Destroy handler objects.
115
165
  while (!op_queue_.empty())
116
166
  {
@@ -275,6 +325,12 @@ void scheduler::compensating_work_started()
275
325
  ++static_cast<thread_info*>(this_thread)->private_outstanding_work;
276
326
  }
277
327
 
328
+ void scheduler::capture_current_exception()
329
+ {
330
+ if (thread_info_base* this_thread = thread_call_stack::contains(this))
331
+ this_thread->capture_current_exception();
332
+ }
333
+
278
334
  void scheduler::post_immediate_completion(
279
335
  scheduler::operation* op, bool is_continuation)
280
336
  {
@@ -298,6 +354,30 @@ void scheduler::post_immediate_completion(
298
354
  wake_one_thread_and_unlock(lock);
299
355
  }
300
356
 
357
+ void scheduler::post_immediate_completions(std::size_t n,
358
+ op_queue<scheduler::operation>& ops, bool is_continuation)
359
+ {
360
+ #if defined(BOOST_ASIO_HAS_THREADS)
361
+ if (one_thread_ || is_continuation)
362
+ {
363
+ if (thread_info_base* this_thread = thread_call_stack::contains(this))
364
+ {
365
+ static_cast<thread_info*>(this_thread)->private_outstanding_work
366
+ += static_cast<long>(n);
367
+ static_cast<thread_info*>(this_thread)->private_op_queue.push(ops);
368
+ return;
369
+ }
370
+ }
371
+ #else // defined(BOOST_ASIO_HAS_THREADS)
372
+ (void)is_continuation;
373
+ #endif // defined(BOOST_ASIO_HAS_THREADS)
374
+
375
+ increment(outstanding_work_, static_cast<long>(n));
376
+ mutex::scoped_lock lock(mutex_);
377
+ op_queue_.push(ops);
378
+ wake_one_thread_and_unlock(lock);
379
+ }
380
+
301
381
  void scheduler::post_deferred_completion(scheduler::operation* op)
302
382
  {
303
383
  #if defined(BOOST_ASIO_HAS_THREADS)
@@ -399,6 +479,7 @@ std::size_t scheduler::do_run_one(mutex::scoped_lock& lock,
399
479
 
400
480
  // Complete the operation. May throw an exception. Deletes the object.
401
481
  o->complete(this, ec, task_result);
482
+ this_thread.rethrow_pending_exception();
402
483
 
403
484
  return 1;
404
485
  }
@@ -479,6 +560,7 @@ std::size_t scheduler::do_wait_one(mutex::scoped_lock& lock,
479
560
 
480
561
  // Complete the operation. May throw an exception. Deletes the object.
481
562
  o->complete(this, ec, task_result);
563
+ this_thread.rethrow_pending_exception();
482
564
 
483
565
  return 1;
484
566
  }
@@ -533,6 +615,7 @@ std::size_t scheduler::do_poll_one(mutex::scoped_lock& lock,
533
615
 
534
616
  // Complete the operation. May throw an exception. Deletes the object.
535
617
  o->complete(this, ec, task_result);
618
+ this_thread.rethrow_pending_exception();
536
619
 
537
620
  return 1;
538
621
  }
@@ -2,7 +2,7 @@
2
2
  // detail/impl/select_reactor.hpp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -2,7 +2,7 @@
2
2
  // detail/impl/select_reactor.ipp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -81,13 +81,14 @@ void select_reactor::shutdown()
81
81
  shutdown_ = true;
82
82
  #if defined(BOOST_ASIO_HAS_IOCP)
83
83
  stop_thread_ = true;
84
+ if (thread_)
85
+ interrupter_.interrupt();
84
86
  #endif // defined(BOOST_ASIO_HAS_IOCP)
85
87
  lock.unlock();
86
88
 
87
89
  #if defined(BOOST_ASIO_HAS_IOCP)
88
90
  if (thread_)
89
91
  {
90
- interrupter_.interrupt();
91
92
  thread_->join();
92
93
  delete thread_;
93
94
  thread_ = 0;
@@ -240,7 +241,11 @@ void select_reactor::run(long usec, op_queue<operation>& ops)
240
241
  // Reset the interrupter.
241
242
  if (retval > 0 && fd_sets_[read_op].is_set(interrupter_.read_descriptor()))
242
243
  {
243
- interrupter_.reset();
244
+ if (!interrupter_.reset())
245
+ {
246
+ lock.lock();
247
+ interrupter_.recreate();
248
+ }
244
249
  --retval;
245
250
  }
246
251
 
@@ -2,7 +2,7 @@
2
2
  // detail/impl/service_registry.hpp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -2,7 +2,7 @@
2
2
  // detail/impl/service_registry.ipp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -2,7 +2,7 @@
2
2
  // detail/impl/signal_set_service.ipp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -90,7 +90,8 @@ class signal_set_service::pipe_read_op : public reactor_op
90
90
  {
91
91
  public:
92
92
  pipe_read_op()
93
- : reactor_op(&pipe_read_op::do_perform, pipe_read_op::do_complete)
93
+ : reactor_op(boost::system::error_code(),
94
+ &pipe_read_op::do_perform, pipe_read_op::do_complete)
94
95
  {
95
96
  }
96
97
 
@@ -119,14 +120,13 @@ public:
119
120
  // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
120
121
  // && !defined(__CYGWIN__)
121
122
 
122
- signal_set_service::signal_set_service(
123
- boost::asio::io_context& io_context)
124
- : service_base<signal_set_service>(io_context),
125
- io_context_(boost::asio::use_service<io_context_impl>(io_context)),
123
+ signal_set_service::signal_set_service(execution_context& context)
124
+ : execution_context_service_base<signal_set_service>(context),
125
+ scheduler_(boost::asio::use_service<scheduler_impl>(context)),
126
126
  #if !defined(BOOST_ASIO_WINDOWS) \
127
127
  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
128
128
  && !defined(__CYGWIN__)
129
- reactor_(boost::asio::use_service<reactor>(io_context)),
129
+ reactor_(boost::asio::use_service<reactor>(context)),
130
130
  #endif // !defined(BOOST_ASIO_WINDOWS)
131
131
  // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)
132
132
  // && !defined(__CYGWIN__)
@@ -170,11 +170,10 @@ void signal_set_service::shutdown()
170
170
  }
171
171
  }
172
172
 
173
- io_context_.abandon_operations(ops);
173
+ scheduler_.abandon_operations(ops);
174
174
  }
175
175
 
176
- void signal_set_service::notify_fork(
177
- boost::asio::io_context::fork_event fork_ev)
176
+ void signal_set_service::notify_fork(execution_context::fork_event fork_ev)
178
177
  {
179
178
  #if !defined(BOOST_ASIO_WINDOWS) \
180
179
  && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \
@@ -184,7 +183,7 @@ void signal_set_service::notify_fork(
184
183
 
185
184
  switch (fork_ev)
186
185
  {
187
- case boost::asio::io_context::fork_prepare:
186
+ case execution_context::fork_prepare:
188
187
  {
189
188
  int read_descriptor = state->read_descriptor_;
190
189
  state->fork_prepared_ = true;
@@ -193,7 +192,7 @@ void signal_set_service::notify_fork(
193
192
  reactor_.cleanup_descriptor_data(reactor_data_);
194
193
  }
195
194
  break;
196
- case boost::asio::io_context::fork_parent:
195
+ case execution_context::fork_parent:
197
196
  if (state->fork_prepared_)
198
197
  {
199
198
  int read_descriptor = state->read_descriptor_;
@@ -203,7 +202,7 @@ void signal_set_service::notify_fork(
203
202
  read_descriptor, reactor_data_, new pipe_read_op);
204
203
  }
205
204
  break;
206
- case boost::asio::io_context::fork_child:
205
+ case execution_context::fork_child:
207
206
  if (state->fork_prepared_)
208
207
  {
209
208
  boost::asio::detail::signal_blocker blocker;
@@ -442,7 +441,7 @@ boost::system::error_code signal_set_service::cancel(
442
441
  signal_set_service::implementation_type& impl,
443
442
  boost::system::error_code& ec)
444
443
  {
445
- BOOST_ASIO_HANDLER_OPERATION((io_context_.context(),
444
+ BOOST_ASIO_HANDLER_OPERATION((scheduler_.context(),
446
445
  "signal_set", &impl, 0, "cancel"));
447
446
 
448
447
  op_queue<operation> ops;
@@ -458,7 +457,7 @@ boost::system::error_code signal_set_service::cancel(
458
457
  }
459
458
  }
460
459
 
461
- io_context_.post_deferred_completions(ops);
460
+ scheduler_.post_deferred_completions(ops);
462
461
 
463
462
  ec = boost::system::error_code();
464
463
  return ec;
@@ -494,7 +493,7 @@ void signal_set_service::deliver_signal(int signal_number)
494
493
  reg = reg->next_in_table_;
495
494
  }
496
495
 
497
- service->io_context_.post_deferred_completions(ops);
496
+ service->scheduler_.post_deferred_completions(ops);
498
497
 
499
498
  service = service->next_;
500
499
  }
@@ -511,17 +510,17 @@ void signal_set_service::add_service(signal_set_service* service)
511
510
  open_descriptors();
512
511
  #endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__)
513
512
 
514
- // If an io_context object is thread-unsafe then it must be the only
515
- // io_context used to create signal_set objects.
513
+ // If a scheduler_ object is thread-unsafe then it must be the only
514
+ // scheduler used to create signal_set objects.
516
515
  if (state->service_list_ != 0)
517
516
  {
518
517
  if (!BOOST_ASIO_CONCURRENCY_HINT_IS_LOCKING(SCHEDULER,
519
- service->io_context_.concurrency_hint())
518
+ service->scheduler_.concurrency_hint())
520
519
  || !BOOST_ASIO_CONCURRENCY_HINT_IS_LOCKING(SCHEDULER,
521
- state->service_list_->io_context_.concurrency_hint()))
520
+ state->service_list_->scheduler_.concurrency_hint()))
522
521
  {
523
522
  std::logic_error ex(
524
- "Thread-unsafe io_context objects require "
523
+ "Thread-unsafe execution context objects require "
525
524
  "exclusive access to signal handling.");
526
525
  boost::asio::detail::throw_exception(ex);
527
526
  }
@@ -640,7 +639,7 @@ void signal_set_service::close_descriptors()
640
639
  void signal_set_service::start_wait_op(
641
640
  signal_set_service::implementation_type& impl, signal_op* op)
642
641
  {
643
- io_context_.work_started();
642
+ scheduler_.work_started();
644
643
 
645
644
  signal_state* state = get_signal_state();
646
645
  static_mutex::scoped_lock lock(state->mutex_);
@@ -652,7 +651,7 @@ void signal_set_service::start_wait_op(
652
651
  {
653
652
  --reg->undelivered_;
654
653
  op->signal_number_ = reg->signal_number_;
655
- io_context_.post_deferred_completion(op);
654
+ scheduler_.post_deferred_completion(op);
656
655
  return;
657
656
  }
658
657
 
@@ -2,7 +2,7 @@
2
2
  // detail/impl/socket_ops.ipp
3
3
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -74,18 +74,23 @@ inline void clear_last_error()
74
74
 
75
75
  #if !defined(BOOST_ASIO_WINDOWS_RUNTIME)
76
76
 
77
- template <typename ReturnType>
78
- inline ReturnType error_wrapper(ReturnType return_value,
79
- boost::system::error_code& ec)
77
+ inline void get_last_error(
78
+ boost::system::error_code& ec, bool is_error_condition)
80
79
  {
80
+ if (!is_error_condition)
81
+ {
82
+ ec.assign(0, ec.category());
83
+ }
84
+ else
85
+ {
81
86
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
82
- ec = boost::system::error_code(WSAGetLastError(),
83
- boost::asio::error::get_system_category());
87
+ ec = boost::system::error_code(WSAGetLastError(),
88
+ boost::asio::error::get_system_category());
84
89
  #else
85
- ec = boost::system::error_code(errno,
86
- boost::asio::error::get_system_category());
90
+ ec = boost::system::error_code(errno,
91
+ boost::asio::error::get_system_category());
87
92
  #endif
88
- return return_value;
93
+ }
89
94
  }
90
95
 
91
96
  template <typename SockLenType>
@@ -108,17 +113,16 @@ socket_type accept(socket_type s, socket_addr_type* addr,
108
113
  return invalid_socket;
109
114
  }
110
115
 
111
- clear_last_error();
112
-
113
- socket_type new_s = error_wrapper(call_accept(
114
- &msghdr::msg_namelen, s, addr, addrlen), ec);
116
+ socket_type new_s = call_accept(&msghdr::msg_namelen, s, addr, addrlen);
117
+ get_last_error(ec, new_s == invalid_socket);
115
118
  if (new_s == invalid_socket)
116
119
  return new_s;
117
120
 
118
121
  #if defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
119
122
  int optval = 1;
120
- int result = error_wrapper(::setsockopt(new_s,
121
- SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
123
+ int result = ::setsockopt(new_s, SOL_SOCKET,
124
+ SO_NOSIGPIPE, &optval, sizeof(optval));
125
+ get_last_error(ec, result != 0);
122
126
  if (result != 0)
123
127
  {
124
128
  ::close(new_s);
@@ -126,7 +130,7 @@ socket_type accept(socket_type s, socket_addr_type* addr,
126
130
  }
127
131
  #endif
128
132
 
129
- ec = boost::system::error_code();
133
+ ec.assign(0, ec.category());
130
134
  return new_s;
131
135
  }
132
136
 
@@ -283,11 +287,8 @@ int bind(socket_type s, const socket_addr_type* addr,
283
287
  return socket_error_retval;
284
288
  }
285
289
 
286
- clear_last_error();
287
- int result = error_wrapper(call_bind(
288
- &msghdr::msg_namelen, s, addr, addrlen), ec);
289
- if (result == 0)
290
- ec = boost::system::error_code();
290
+ int result = call_bind(&msghdr::msg_namelen, s, addr, addrlen);
291
+ get_last_error(ec, result != 0);
291
292
  return result;
292
293
  }
293
294
 
@@ -310,12 +311,12 @@ int close(socket_type s, state_type& state,
310
311
  SO_LINGER, &opt, sizeof(opt), ignored_ec);
311
312
  }
312
313
 
313
- clear_last_error();
314
314
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
315
- result = error_wrapper(::closesocket(s), ec);
315
+ result = ::closesocket(s);
316
316
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
317
- result = error_wrapper(::close(s), ec);
317
+ result = ::close(s);
318
318
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
319
+ get_last_error(ec, result != 0);
319
320
 
320
321
  if (result != 0
321
322
  && (ec == boost::asio::error::would_block
@@ -331,28 +332,26 @@ int close(socket_type s, state_type& state,
331
332
  ioctl_arg_type arg = 0;
332
333
  ::ioctlsocket(s, FIONBIO, &arg);
333
334
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
334
- # if defined(__SYMBIAN32__)
335
+ # if defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
335
336
  int flags = ::fcntl(s, F_GETFL, 0);
336
337
  if (flags >= 0)
337
338
  ::fcntl(s, F_SETFL, flags & ~O_NONBLOCK);
338
- # else // defined(__SYMBIAN32__)
339
+ # else // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
339
340
  ioctl_arg_type arg = 0;
340
341
  ::ioctl(s, FIONBIO, &arg);
341
- # endif // defined(__SYMBIAN32__)
342
+ # endif // defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
342
343
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
343
344
  state &= ~non_blocking;
344
345
 
345
- clear_last_error();
346
346
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
347
- result = error_wrapper(::closesocket(s), ec);
347
+ result = ::closesocket(s);
348
348
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
349
- result = error_wrapper(::close(s), ec);
349
+ result = ::close(s);
350
350
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
351
+ get_last_error(ec, result != 0);
351
352
  }
352
353
  }
353
354
 
354
- if (result == 0)
355
- ec = boost::system::error_code();
356
355
  return result;
357
356
  }
358
357
 
@@ -365,26 +364,27 @@ bool set_user_non_blocking(socket_type s,
365
364
  return false;
366
365
  }
367
366
 
368
- clear_last_error();
369
367
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
370
368
  ioctl_arg_type arg = (value ? 1 : 0);
371
- int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
372
- #elif defined(__SYMBIAN32__)
373
- int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
369
+ int result = ::ioctlsocket(s, FIONBIO, &arg);
370
+ get_last_error(ec, result < 0);
371
+ #elif defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
372
+ int result = ::fcntl(s, F_GETFL, 0);
373
+ get_last_error(ec, result < 0);
374
374
  if (result >= 0)
375
375
  {
376
- clear_last_error();
377
376
  int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
378
- result = error_wrapper(::fcntl(s, F_SETFL, flag), ec);
377
+ result = ::fcntl(s, F_SETFL, flag);
378
+ get_last_error(ec, result < 0);
379
379
  }
380
380
  #else
381
381
  ioctl_arg_type arg = (value ? 1 : 0);
382
- int result = error_wrapper(::ioctl(s, FIONBIO, &arg), ec);
382
+ int result = ::ioctl(s, FIONBIO, &arg);
383
+ get_last_error(ec, result < 0);
383
384
  #endif
384
385
 
385
386
  if (result >= 0)
386
387
  {
387
- ec = boost::system::error_code();
388
388
  if (value)
389
389
  state |= user_set_non_blocking;
390
390
  else
@@ -418,26 +418,27 @@ bool set_internal_non_blocking(socket_type s,
418
418
  return false;
419
419
  }
420
420
 
421
- clear_last_error();
422
421
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
423
422
  ioctl_arg_type arg = (value ? 1 : 0);
424
- int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
425
- #elif defined(__SYMBIAN32__)
426
- int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
423
+ int result = ::ioctlsocket(s, FIONBIO, &arg);
424
+ get_last_error(ec, result < 0);
425
+ #elif defined(__SYMBIAN32__) || defined(__EMSCRIPTEN__)
426
+ int result = ::fcntl(s, F_GETFL, 0);
427
+ get_last_error(ec, result < 0);
427
428
  if (result >= 0)
428
429
  {
429
- clear_last_error();
430
430
  int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
431
- result = error_wrapper(::fcntl(s, F_SETFL, flag), ec);
431
+ result = ::fcntl(s, F_SETFL, flag);
432
+ get_last_error(ec, result < 0);
432
433
  }
433
434
  #else
434
435
  ioctl_arg_type arg = (value ? 1 : 0);
435
- int result = error_wrapper(::ioctl(s, FIONBIO, &arg), ec);
436
+ int result = ::ioctl(s, FIONBIO, &arg);
437
+ get_last_error(ec, result < 0);
436
438
  #endif
437
439
 
438
440
  if (result >= 0)
439
441
  {
440
- ec = boost::system::error_code();
441
442
  if (value)
442
443
  state |= internal_non_blocking;
443
444
  else
@@ -456,10 +457,8 @@ int shutdown(socket_type s, int what, boost::system::error_code& ec)
456
457
  return socket_error_retval;
457
458
  }
458
459
 
459
- clear_last_error();
460
- int result = error_wrapper(::shutdown(s, what), ec);
461
- if (result == 0)
462
- ec = boost::system::error_code();
460
+ int result = ::shutdown(s, what);
461
+ get_last_error(ec, result != 0);
463
462
  return result;
464
463
  }
465
464
 
@@ -479,13 +478,10 @@ int connect(socket_type s, const socket_addr_type* addr,
479
478
  return socket_error_retval;
480
479
  }
481
480
 
482
- clear_last_error();
483
- int result = error_wrapper(call_connect(
484
- &msghdr::msg_namelen, s, addr, addrlen), ec);
485
- if (result == 0)
486
- ec = boost::system::error_code();
481
+ int result = call_connect(&msghdr::msg_namelen, s, addr, addrlen);
482
+ get_last_error(ec, result != 0);
487
483
  #if defined(__linux__)
488
- else if (ec == boost::asio::error::try_again)
484
+ if (result != 0 && ec == boost::asio::error::try_again)
489
485
  ec = boost::asio::error::no_buffer_space;
490
486
  #endif // defined(__linux__)
491
487
  return result;
@@ -601,7 +597,7 @@ bool non_blocking_connect(socket_type s, boost::system::error_code& ec)
601
597
  boost::asio::error::get_system_category());
602
598
  }
603
599
  else
604
- ec = boost::system::error_code();
600
+ ec.assign(0, ec.category());
605
601
  }
606
602
 
607
603
  return true;
@@ -618,10 +614,8 @@ int socketpair(int af, int type, int protocol,
618
614
  ec = boost::asio::error::operation_not_supported;
619
615
  return socket_error_retval;
620
616
  #else
621
- clear_last_error();
622
- int result = error_wrapper(::socketpair(af, type, protocol, sv), ec);
623
- if (result == 0)
624
- ec = boost::system::error_code();
617
+ int result = ::socketpair(af, type, protocol, sv);
618
+ get_last_error(ec, result != 0);
625
619
  return result;
626
620
  #endif
627
621
  }
@@ -637,20 +631,18 @@ bool sockatmark(socket_type s, boost::system::error_code& ec)
637
631
  #if defined(SIOCATMARK)
638
632
  ioctl_arg_type value = 0;
639
633
  # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
640
- int result = error_wrapper(::ioctlsocket(s, SIOCATMARK, &value), ec);
634
+ int result = ::ioctlsocket(s, SIOCATMARK, &value);
641
635
  # else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
642
- int result = error_wrapper(::ioctl(s, SIOCATMARK, &value), ec);
636
+ int result = ::ioctl(s, SIOCATMARK, &value);
643
637
  # endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
644
- if (result == 0)
645
- ec = boost::system::error_code();
638
+ get_last_error(ec, result < 0);
646
639
  # if defined(ENOTTY)
647
640
  if (ec.value() == ENOTTY)
648
641
  ec = boost::asio::error::not_socket;
649
642
  # endif // defined(ENOTTY)
650
643
  #else // defined(SIOCATMARK)
651
- int value = error_wrapper(::sockatmark(s), ec);
652
- if (value != -1)
653
- ec = boost::system::error_code();
644
+ int value = ::sockatmark(s);
645
+ get_last_error(ec, result < 0);
654
646
  #endif // defined(SIOCATMARK)
655
647
 
656
648
  return ec ? false : value != 0;
@@ -666,12 +658,11 @@ size_t available(socket_type s, boost::system::error_code& ec)
666
658
 
667
659
  ioctl_arg_type value = 0;
668
660
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
669
- int result = error_wrapper(::ioctlsocket(s, FIONREAD, &value), ec);
661
+ int result = ::ioctlsocket(s, FIONREAD, &value);
670
662
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
671
- int result = error_wrapper(::ioctl(s, FIONREAD, &value), ec);
663
+ int result = ::ioctl(s, FIONREAD, &value);
672
664
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
673
- if (result == 0)
674
- ec = boost::system::error_code();
665
+ get_last_error(ec, result < 0);
675
666
  #if defined(ENOTTY)
676
667
  if (ec.value() == ENOTTY)
677
668
  ec = boost::asio::error::not_socket;
@@ -688,10 +679,8 @@ int listen(socket_type s, int backlog, boost::system::error_code& ec)
688
679
  return socket_error_retval;
689
680
  }
690
681
 
691
- clear_last_error();
692
- int result = error_wrapper(::listen(s, backlog), ec);
693
- if (result == 0)
694
- ec = boost::system::error_code();
682
+ int result = ::listen(s, backlog);
683
+ get_last_error(ec, result != 0);
695
684
  return result;
696
685
  }
697
686
 
@@ -759,31 +748,60 @@ inline void init_msghdr_msg_name(T& name, const socket_addr_type* addr)
759
748
  signed_size_type recv(socket_type s, buf* bufs, size_t count,
760
749
  int flags, boost::system::error_code& ec)
761
750
  {
762
- clear_last_error();
763
751
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
764
752
  // Receive some data.
765
753
  DWORD recv_buf_count = static_cast<DWORD>(count);
766
754
  DWORD bytes_transferred = 0;
767
755
  DWORD recv_flags = flags;
768
- int result = error_wrapper(::WSARecv(s, bufs,
769
- recv_buf_count, &bytes_transferred, &recv_flags, 0, 0), ec);
756
+ int result = ::WSARecv(s, bufs, recv_buf_count,
757
+ &bytes_transferred, &recv_flags, 0, 0);
758
+ get_last_error(ec, true);
770
759
  if (ec.value() == ERROR_NETNAME_DELETED)
771
760
  ec = boost::asio::error::connection_reset;
772
761
  else if (ec.value() == ERROR_PORT_UNREACHABLE)
773
762
  ec = boost::asio::error::connection_refused;
774
763
  else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA)
775
- ec.assign(0, ec.category());
764
+ result = 0;
776
765
  if (result != 0)
777
766
  return socket_error_retval;
778
- ec = boost::system::error_code();
767
+ ec.assign(0, ec.category());
779
768
  return bytes_transferred;
780
769
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
781
770
  msghdr msg = msghdr();
782
771
  msg.msg_iov = bufs;
783
772
  msg.msg_iovlen = static_cast<int>(count);
784
- signed_size_type result = error_wrapper(::recvmsg(s, &msg, flags), ec);
785
- if (result >= 0)
786
- ec = boost::system::error_code();
773
+ signed_size_type result = ::recvmsg(s, &msg, flags);
774
+ get_last_error(ec, result < 0);
775
+ return result;
776
+ #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
777
+ }
778
+
779
+ signed_size_type recv1(socket_type s, void* data, size_t size,
780
+ int flags, boost::system::error_code& ec)
781
+ {
782
+ #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
783
+ // Receive some data.
784
+ WSABUF buf;
785
+ buf.buf = const_cast<char*>(static_cast<const char*>(data));
786
+ buf.len = static_cast<ULONG>(size);
787
+ DWORD bytes_transferred = 0;
788
+ DWORD recv_flags = flags;
789
+ int result = ::WSARecv(s, &buf, 1,
790
+ &bytes_transferred, &recv_flags, 0, 0);
791
+ get_last_error(ec, true);
792
+ if (ec.value() == ERROR_NETNAME_DELETED)
793
+ ec = boost::asio::error::connection_reset;
794
+ else if (ec.value() == ERROR_PORT_UNREACHABLE)
795
+ ec = boost::asio::error::connection_refused;
796
+ else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA)
797
+ result = 0;
798
+ if (result != 0)
799
+ return socket_error_retval;
800
+ ec.assign(0, ec.category());
801
+ return bytes_transferred;
802
+ #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
803
+ signed_size_type result = ::recv(s, static_cast<char*>(data), size, flags);
804
+ get_last_error(ec, result < 0);
787
805
  return result;
788
806
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
789
807
  }
@@ -800,7 +818,7 @@ size_t sync_recv(socket_type s, state_type state, buf* bufs,
800
818
  // A request to read 0 bytes on a stream is a no-op.
801
819
  if (all_empty && (state & stream_oriented))
802
820
  {
803
- ec = boost::system::error_code();
821
+ ec.assign(0, ec.category());
804
822
  return 0;
805
823
  }
806
824
 
@@ -810,10 +828,51 @@ size_t sync_recv(socket_type s, state_type state, buf* bufs,
810
828
  // Try to complete the operation without blocking.
811
829
  signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec);
812
830
 
831
+ // Check for EOF.
832
+ if ((state & stream_oriented) && bytes == 0)
833
+ {
834
+ ec = boost::asio::error::eof;
835
+ return 0;
836
+ }
837
+
813
838
  // Check if operation succeeded.
814
- if (bytes > 0)
839
+ if (bytes >= 0)
815
840
  return bytes;
816
841
 
842
+ // Operation failed.
843
+ if ((state & user_set_non_blocking)
844
+ || (ec != boost::asio::error::would_block
845
+ && ec != boost::asio::error::try_again))
846
+ return 0;
847
+
848
+ // Wait for socket to become ready.
849
+ if (socket_ops::poll_read(s, 0, -1, ec) < 0)
850
+ return 0;
851
+ }
852
+ }
853
+
854
+ size_t sync_recv1(socket_type s, state_type state, void* data,
855
+ size_t size, int flags, boost::system::error_code& ec)
856
+ {
857
+ if (s == invalid_socket)
858
+ {
859
+ ec = boost::asio::error::bad_descriptor;
860
+ return 0;
861
+ }
862
+
863
+ // A request to read 0 bytes on a stream is a no-op.
864
+ if (size == 0 && (state & stream_oriented))
865
+ {
866
+ ec.assign(0, ec.category());
867
+ return 0;
868
+ }
869
+
870
+ // Read some data.
871
+ for (;;)
872
+ {
873
+ // Try to complete the operation without blocking.
874
+ signed_size_type bytes = socket_ops::recv1(s, data, size, flags, ec);
875
+
817
876
  // Check for EOF.
818
877
  if ((state & stream_oriented) && bytes == 0)
819
878
  {
@@ -821,6 +880,10 @@ size_t sync_recv(socket_type s, state_type state, buf* bufs,
821
880
  return 0;
822
881
  }
823
882
 
883
+ // Check if operation succeeded.
884
+ if (bytes >= 0)
885
+ return bytes;
886
+
824
887
  // Operation failed.
825
888
  if ((state & user_set_non_blocking)
826
889
  || (ec != boost::asio::error::would_block
@@ -883,6 +946,13 @@ bool non_blocking_recv(socket_type s,
883
946
  return true;
884
947
  }
885
948
 
949
+ // Check if operation succeeded.
950
+ if (bytes >= 0)
951
+ {
952
+ bytes_transferred = bytes;
953
+ return true;
954
+ }
955
+
886
956
  // Retry operation if interrupted by signal.
887
957
  if (ec == boost::asio::error::interrupted)
888
958
  continue;
@@ -892,15 +962,46 @@ bool non_blocking_recv(socket_type s,
892
962
  || ec == boost::asio::error::try_again)
893
963
  return false;
894
964
 
895
- // Operation is complete.
965
+ // Operation failed.
966
+ bytes_transferred = 0;
967
+ return true;
968
+ }
969
+ }
970
+
971
+ bool non_blocking_recv1(socket_type s,
972
+ void* data, size_t size, int flags, bool is_stream,
973
+ boost::system::error_code& ec, size_t& bytes_transferred)
974
+ {
975
+ for (;;)
976
+ {
977
+ // Read some data.
978
+ signed_size_type bytes = socket_ops::recv1(s, data, size, flags, ec);
979
+
980
+ // Check for end of stream.
981
+ if (is_stream && bytes == 0)
982
+ {
983
+ ec = boost::asio::error::eof;
984
+ return true;
985
+ }
986
+
987
+ // Check if operation succeeded.
896
988
  if (bytes >= 0)
897
989
  {
898
- ec = boost::system::error_code();
899
990
  bytes_transferred = bytes;
991
+ return true;
900
992
  }
901
- else
902
- bytes_transferred = 0;
903
993
 
994
+ // Retry operation if interrupted by signal.
995
+ if (ec == boost::asio::error::interrupted)
996
+ continue;
997
+
998
+ // Check if we need to run the operation again.
999
+ if (ec == boost::asio::error::would_block
1000
+ || ec == boost::asio::error::try_again)
1001
+ return false;
1002
+
1003
+ // Operation failed.
1004
+ bytes_transferred = 0;
904
1005
  return true;
905
1006
  }
906
1007
  }
@@ -911,25 +1012,25 @@ signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
911
1012
  int flags, socket_addr_type* addr, std::size_t* addrlen,
912
1013
  boost::system::error_code& ec)
913
1014
  {
914
- clear_last_error();
915
1015
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
916
1016
  // Receive some data.
917
1017
  DWORD recv_buf_count = static_cast<DWORD>(count);
918
1018
  DWORD bytes_transferred = 0;
919
1019
  DWORD recv_flags = flags;
920
1020
  int tmp_addrlen = (int)*addrlen;
921
- int result = error_wrapper(::WSARecvFrom(s, bufs, recv_buf_count,
922
- &bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0), ec);
1021
+ int result = ::WSARecvFrom(s, bufs, recv_buf_count,
1022
+ &bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0);
1023
+ get_last_error(ec, true);
923
1024
  *addrlen = (std::size_t)tmp_addrlen;
924
1025
  if (ec.value() == ERROR_NETNAME_DELETED)
925
1026
  ec = boost::asio::error::connection_reset;
926
1027
  else if (ec.value() == ERROR_PORT_UNREACHABLE)
927
1028
  ec = boost::asio::error::connection_refused;
928
1029
  else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA)
929
- ec.assign(0, ec.category());
1030
+ result = 0;
930
1031
  if (result != 0)
931
1032
  return socket_error_retval;
932
- ec = boost::system::error_code();
1033
+ ec.assign(0, ec.category());
933
1034
  return bytes_transferred;
934
1035
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
935
1036
  msghdr msg = msghdr();
@@ -937,10 +1038,56 @@ signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
937
1038
  msg.msg_namelen = static_cast<int>(*addrlen);
938
1039
  msg.msg_iov = bufs;
939
1040
  msg.msg_iovlen = static_cast<int>(count);
940
- signed_size_type result = error_wrapper(::recvmsg(s, &msg, flags), ec);
1041
+ signed_size_type result = ::recvmsg(s, &msg, flags);
1042
+ get_last_error(ec, result < 0);
941
1043
  *addrlen = msg.msg_namelen;
942
- if (result >= 0)
943
- ec = boost::system::error_code();
1044
+ return result;
1045
+ #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1046
+ }
1047
+
1048
+ template <typename SockLenType>
1049
+ inline signed_size_type call_recvfrom(SockLenType msghdr::*,
1050
+ socket_type s, void* data, size_t size, int flags,
1051
+ socket_addr_type* addr, std::size_t* addrlen)
1052
+ {
1053
+ SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0;
1054
+ signed_size_type result = ::recvfrom(s, static_cast<char*>(data),
1055
+ size, flags, addr, addrlen ? &tmp_addrlen : 0);
1056
+ if (addrlen)
1057
+ *addrlen = (std::size_t)tmp_addrlen;
1058
+ return result;
1059
+ }
1060
+
1061
+ signed_size_type recvfrom1(socket_type s, void* data, size_t size,
1062
+ int flags, socket_addr_type* addr, std::size_t* addrlen,
1063
+ boost::system::error_code& ec)
1064
+ {
1065
+ #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1066
+ // Receive some data.
1067
+ WSABUF buf;
1068
+ buf.buf = static_cast<char*>(data);
1069
+ buf.len = static_cast<ULONG>(size);
1070
+ DWORD bytes_transferred = 0;
1071
+ DWORD recv_flags = flags;
1072
+ int tmp_addrlen = (int)*addrlen;
1073
+ int result = ::WSARecvFrom(s, &buf, 1, &bytes_transferred,
1074
+ &recv_flags, addr, &tmp_addrlen, 0, 0);
1075
+ get_last_error(ec, true);
1076
+ *addrlen = (std::size_t)tmp_addrlen;
1077
+ if (ec.value() == ERROR_NETNAME_DELETED)
1078
+ ec = boost::asio::error::connection_reset;
1079
+ else if (ec.value() == ERROR_PORT_UNREACHABLE)
1080
+ ec = boost::asio::error::connection_refused;
1081
+ else if (ec.value() == WSAEMSGSIZE || ec.value() == ERROR_MORE_DATA)
1082
+ result = 0;
1083
+ if (result != 0)
1084
+ return socket_error_retval;
1085
+ ec.assign(0, ec.category());
1086
+ return bytes_transferred;
1087
+ #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1088
+ signed_size_type result = call_recvfrom(&msghdr::msg_namelen,
1089
+ s, data, size, flags, addr, addrlen);
1090
+ get_last_error(ec, result < 0);
944
1091
  return result;
945
1092
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
946
1093
  }
@@ -978,6 +1125,39 @@ size_t sync_recvfrom(socket_type s, state_type state, buf* bufs,
978
1125
  }
979
1126
  }
980
1127
 
1128
+ size_t sync_recvfrom1(socket_type s, state_type state, void* data,
1129
+ size_t size, int flags, socket_addr_type* addr,
1130
+ std::size_t* addrlen, boost::system::error_code& ec)
1131
+ {
1132
+ if (s == invalid_socket)
1133
+ {
1134
+ ec = boost::asio::error::bad_descriptor;
1135
+ return 0;
1136
+ }
1137
+
1138
+ // Read some data.
1139
+ for (;;)
1140
+ {
1141
+ // Try to complete the operation without blocking.
1142
+ signed_size_type bytes = socket_ops::recvfrom1(
1143
+ s, data, size, flags, addr, addrlen, ec);
1144
+
1145
+ // Check if operation succeeded.
1146
+ if (bytes >= 0)
1147
+ return bytes;
1148
+
1149
+ // Operation failed.
1150
+ if ((state & user_set_non_blocking)
1151
+ || (ec != boost::asio::error::would_block
1152
+ && ec != boost::asio::error::try_again))
1153
+ return 0;
1154
+
1155
+ // Wait for socket to become ready.
1156
+ if (socket_ops::poll_read(s, 0, -1, ec) < 0)
1157
+ return 0;
1158
+ }
1159
+ }
1160
+
981
1161
  #if defined(BOOST_ASIO_HAS_IOCP)
982
1162
 
983
1163
  void complete_iocp_recvfrom(
@@ -1015,6 +1195,13 @@ bool non_blocking_recvfrom(socket_type s,
1015
1195
  signed_size_type bytes = socket_ops::recvfrom(
1016
1196
  s, bufs, count, flags, addr, addrlen, ec);
1017
1197
 
1198
+ // Check if operation succeeded.
1199
+ if (bytes >= 0)
1200
+ {
1201
+ bytes_transferred = bytes;
1202
+ return true;
1203
+ }
1204
+
1018
1205
  // Retry operation if interrupted by signal.
1019
1206
  if (ec == boost::asio::error::interrupted)
1020
1207
  continue;
@@ -1024,15 +1211,41 @@ bool non_blocking_recvfrom(socket_type s,
1024
1211
  || ec == boost::asio::error::try_again)
1025
1212
  return false;
1026
1213
 
1027
- // Operation is complete.
1214
+ // Operation failed.
1215
+ bytes_transferred = 0;
1216
+ return true;
1217
+ }
1218
+ }
1219
+
1220
+ bool non_blocking_recvfrom1(socket_type s,
1221
+ void* data, size_t size, int flags,
1222
+ socket_addr_type* addr, std::size_t* addrlen,
1223
+ boost::system::error_code& ec, size_t& bytes_transferred)
1224
+ {
1225
+ for (;;)
1226
+ {
1227
+ // Read some data.
1228
+ signed_size_type bytes = socket_ops::recvfrom1(
1229
+ s, data, size, flags, addr, addrlen, ec);
1230
+
1231
+ // Check if operation succeeded.
1028
1232
  if (bytes >= 0)
1029
1233
  {
1030
- ec = boost::system::error_code();
1031
1234
  bytes_transferred = bytes;
1235
+ return true;
1032
1236
  }
1033
- else
1034
- bytes_transferred = 0;
1035
1237
 
1238
+ // Retry operation if interrupted by signal.
1239
+ if (ec == boost::asio::error::interrupted)
1240
+ continue;
1241
+
1242
+ // Check if we need to run the operation again.
1243
+ if (ec == boost::asio::error::would_block
1244
+ || ec == boost::asio::error::try_again)
1245
+ return false;
1246
+
1247
+ // Operation failed.
1248
+ bytes_transferred = 0;
1036
1249
  return true;
1037
1250
  }
1038
1251
  }
@@ -1042,7 +1255,6 @@ bool non_blocking_recvfrom(socket_type s,
1042
1255
  signed_size_type recvmsg(socket_type s, buf* bufs, size_t count,
1043
1256
  int in_flags, int& out_flags, boost::system::error_code& ec)
1044
1257
  {
1045
- clear_last_error();
1046
1258
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1047
1259
  out_flags = 0;
1048
1260
  return socket_ops::recv(s, bufs, count, in_flags, ec);
@@ -1050,12 +1262,10 @@ signed_size_type recvmsg(socket_type s, buf* bufs, size_t count,
1050
1262
  msghdr msg = msghdr();
1051
1263
  msg.msg_iov = bufs;
1052
1264
  msg.msg_iovlen = static_cast<int>(count);
1053
- signed_size_type result = error_wrapper(::recvmsg(s, &msg, in_flags), ec);
1265
+ signed_size_type result = ::recvmsg(s, &msg, in_flags);
1266
+ get_last_error(ec, result < 0);
1054
1267
  if (result >= 0)
1055
- {
1056
- ec = boost::system::error_code();
1057
1268
  out_flags = msg.msg_flags;
1058
- }
1059
1269
  else
1060
1270
  out_flags = 0;
1061
1271
  return result;
@@ -1131,6 +1341,13 @@ bool non_blocking_recvmsg(socket_type s,
1131
1341
  signed_size_type bytes = socket_ops::recvmsg(
1132
1342
  s, bufs, count, in_flags, out_flags, ec);
1133
1343
 
1344
+ // Check if operation succeeded.
1345
+ if (bytes >= 0)
1346
+ {
1347
+ bytes_transferred = bytes;
1348
+ return true;
1349
+ }
1350
+
1134
1351
  // Retry operation if interrupted by signal.
1135
1352
  if (ec == boost::asio::error::interrupted)
1136
1353
  continue;
@@ -1140,15 +1357,8 @@ bool non_blocking_recvmsg(socket_type s,
1140
1357
  || ec == boost::asio::error::try_again)
1141
1358
  return false;
1142
1359
 
1143
- // Operation is complete.
1144
- if (bytes >= 0)
1145
- {
1146
- ec = boost::system::error_code();
1147
- bytes_transferred = bytes;
1148
- }
1149
- else
1150
- bytes_transferred = 0;
1151
-
1360
+ // Operation failed.
1361
+ bytes_transferred = 0;
1152
1362
  return true;
1153
1363
  }
1154
1364
  }
@@ -1158,21 +1368,21 @@ bool non_blocking_recvmsg(socket_type s,
1158
1368
  signed_size_type send(socket_type s, const buf* bufs, size_t count,
1159
1369
  int flags, boost::system::error_code& ec)
1160
1370
  {
1161
- clear_last_error();
1162
1371
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1163
1372
  // Send the data.
1164
1373
  DWORD send_buf_count = static_cast<DWORD>(count);
1165
1374
  DWORD bytes_transferred = 0;
1166
1375
  DWORD send_flags = flags;
1167
- int result = error_wrapper(::WSASend(s, const_cast<buf*>(bufs),
1168
- send_buf_count, &bytes_transferred, send_flags, 0, 0), ec);
1376
+ int result = ::WSASend(s, const_cast<buf*>(bufs),
1377
+ send_buf_count, &bytes_transferred, send_flags, 0, 0);
1378
+ get_last_error(ec, true);
1169
1379
  if (ec.value() == ERROR_NETNAME_DELETED)
1170
1380
  ec = boost::asio::error::connection_reset;
1171
1381
  else if (ec.value() == ERROR_PORT_UNREACHABLE)
1172
1382
  ec = boost::asio::error::connection_refused;
1173
1383
  if (result != 0)
1174
1384
  return socket_error_retval;
1175
- ec = boost::system::error_code();
1385
+ ec.assign(0, ec.category());
1176
1386
  return bytes_transferred;
1177
1387
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1178
1388
  msghdr msg = msghdr();
@@ -1181,9 +1391,40 @@ signed_size_type send(socket_type s, const buf* bufs, size_t count,
1181
1391
  #if defined(__linux__)
1182
1392
  flags |= MSG_NOSIGNAL;
1183
1393
  #endif // defined(__linux__)
1184
- signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
1185
- if (result >= 0)
1186
- ec = boost::system::error_code();
1394
+ signed_size_type result = ::sendmsg(s, &msg, flags);
1395
+ get_last_error(ec, result < 0);
1396
+ return result;
1397
+ #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1398
+ }
1399
+
1400
+ signed_size_type send1(socket_type s, const void* data, size_t size,
1401
+ int flags, boost::system::error_code& ec)
1402
+ {
1403
+ #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1404
+ // Send the data.
1405
+ WSABUF buf;
1406
+ buf.buf = const_cast<char*>(static_cast<const char*>(data));
1407
+ buf.len = static_cast<ULONG>(size);
1408
+ DWORD bytes_transferred = 0;
1409
+ DWORD send_flags = flags;
1410
+ int result = ::WSASend(s, &buf, 1,
1411
+ &bytes_transferred, send_flags, 0, 0);
1412
+ get_last_error(ec, true);
1413
+ if (ec.value() == ERROR_NETNAME_DELETED)
1414
+ ec = boost::asio::error::connection_reset;
1415
+ else if (ec.value() == ERROR_PORT_UNREACHABLE)
1416
+ ec = boost::asio::error::connection_refused;
1417
+ if (result != 0)
1418
+ return socket_error_retval;
1419
+ ec.assign(0, ec.category());
1420
+ return bytes_transferred;
1421
+ #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1422
+ #if defined(__linux__)
1423
+ flags |= MSG_NOSIGNAL;
1424
+ #endif // defined(__linux__)
1425
+ signed_size_type result = ::send(s,
1426
+ static_cast<const char*>(data), size, flags);
1427
+ get_last_error(ec, result < 0);
1187
1428
  return result;
1188
1429
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1189
1430
  }
@@ -1200,7 +1441,7 @@ size_t sync_send(socket_type s, state_type state, const buf* bufs,
1200
1441
  // A request to write 0 bytes to a stream is a no-op.
1201
1442
  if (all_empty && (state & stream_oriented))
1202
1443
  {
1203
- ec = boost::system::error_code();
1444
+ ec.assign(0, ec.category());
1204
1445
  return 0;
1205
1446
  }
1206
1447
 
@@ -1226,6 +1467,44 @@ size_t sync_send(socket_type s, state_type state, const buf* bufs,
1226
1467
  }
1227
1468
  }
1228
1469
 
1470
+ size_t sync_send1(socket_type s, state_type state, const void* data,
1471
+ size_t size, int flags, boost::system::error_code& ec)
1472
+ {
1473
+ if (s == invalid_socket)
1474
+ {
1475
+ ec = boost::asio::error::bad_descriptor;
1476
+ return 0;
1477
+ }
1478
+
1479
+ // A request to write 0 bytes to a stream is a no-op.
1480
+ if (size == 0 && (state & stream_oriented))
1481
+ {
1482
+ ec.assign(0, ec.category());
1483
+ return 0;
1484
+ }
1485
+
1486
+ // Read some data.
1487
+ for (;;)
1488
+ {
1489
+ // Try to complete the operation without blocking.
1490
+ signed_size_type bytes = socket_ops::send1(s, data, size, flags, ec);
1491
+
1492
+ // Check if operation succeeded.
1493
+ if (bytes >= 0)
1494
+ return bytes;
1495
+
1496
+ // Operation failed.
1497
+ if ((state & user_set_non_blocking)
1498
+ || (ec != boost::asio::error::would_block
1499
+ && ec != boost::asio::error::try_again))
1500
+ return 0;
1501
+
1502
+ // Wait for socket to become ready.
1503
+ if (socket_ops::poll_write(s, 0, -1, ec) < 0)
1504
+ return 0;
1505
+ }
1506
+ }
1507
+
1229
1508
  #if defined(BOOST_ASIO_HAS_IOCP)
1230
1509
 
1231
1510
  void complete_iocp_send(
@@ -1257,6 +1536,13 @@ bool non_blocking_send(socket_type s,
1257
1536
  // Write some data.
1258
1537
  signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec);
1259
1538
 
1539
+ // Check if operation succeeded.
1540
+ if (bytes >= 0)
1541
+ {
1542
+ bytes_transferred = bytes;
1543
+ return true;
1544
+ }
1545
+
1260
1546
  // Retry operation if interrupted by signal.
1261
1547
  if (ec == boost::asio::error::interrupted)
1262
1548
  continue;
@@ -1266,15 +1552,39 @@ bool non_blocking_send(socket_type s,
1266
1552
  || ec == boost::asio::error::try_again)
1267
1553
  return false;
1268
1554
 
1269
- // Operation is complete.
1555
+ // Operation failed.
1556
+ bytes_transferred = 0;
1557
+ return true;
1558
+ }
1559
+ }
1560
+
1561
+ bool non_blocking_send1(socket_type s,
1562
+ const void* data, size_t size, int flags,
1563
+ boost::system::error_code& ec, size_t& bytes_transferred)
1564
+ {
1565
+ for (;;)
1566
+ {
1567
+ // Write some data.
1568
+ signed_size_type bytes = socket_ops::send1(s, data, size, flags, ec);
1569
+
1570
+ // Check if operation succeeded.
1270
1571
  if (bytes >= 0)
1271
1572
  {
1272
- ec = boost::system::error_code();
1273
1573
  bytes_transferred = bytes;
1574
+ return true;
1274
1575
  }
1275
- else
1276
- bytes_transferred = 0;
1277
1576
 
1577
+ // Retry operation if interrupted by signal.
1578
+ if (ec == boost::asio::error::interrupted)
1579
+ continue;
1580
+
1581
+ // Check if we need to run the operation again.
1582
+ if (ec == boost::asio::error::would_block
1583
+ || ec == boost::asio::error::try_again)
1584
+ return false;
1585
+
1586
+ // Operation failed.
1587
+ bytes_transferred = 0;
1278
1588
  return true;
1279
1589
  }
1280
1590
  }
@@ -1285,21 +1595,21 @@ signed_size_type sendto(socket_type s, const buf* bufs, size_t count,
1285
1595
  int flags, const socket_addr_type* addr, std::size_t addrlen,
1286
1596
  boost::system::error_code& ec)
1287
1597
  {
1288
- clear_last_error();
1289
1598
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1290
1599
  // Send the data.
1291
1600
  DWORD send_buf_count = static_cast<DWORD>(count);
1292
1601
  DWORD bytes_transferred = 0;
1293
- int result = error_wrapper(::WSASendTo(s, const_cast<buf*>(bufs),
1602
+ int result = ::WSASendTo(s, const_cast<buf*>(bufs),
1294
1603
  send_buf_count, &bytes_transferred, flags, addr,
1295
- static_cast<int>(addrlen), 0, 0), ec);
1604
+ static_cast<int>(addrlen), 0, 0);
1605
+ get_last_error(ec, true);
1296
1606
  if (ec.value() == ERROR_NETNAME_DELETED)
1297
1607
  ec = boost::asio::error::connection_reset;
1298
1608
  else if (ec.value() == ERROR_PORT_UNREACHABLE)
1299
1609
  ec = boost::asio::error::connection_refused;
1300
1610
  if (result != 0)
1301
1611
  return socket_error_retval;
1302
- ec = boost::system::error_code();
1612
+ ec.assign(0, ec.category());
1303
1613
  return bytes_transferred;
1304
1614
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1305
1615
  msghdr msg = msghdr();
@@ -1310,9 +1620,49 @@ signed_size_type sendto(socket_type s, const buf* bufs, size_t count,
1310
1620
  #if defined(__linux__)
1311
1621
  flags |= MSG_NOSIGNAL;
1312
1622
  #endif // defined(__linux__)
1313
- signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
1314
- if (result >= 0)
1315
- ec = boost::system::error_code();
1623
+ signed_size_type result = ::sendmsg(s, &msg, flags);
1624
+ get_last_error(ec, result < 0);
1625
+ return result;
1626
+ #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1627
+ }
1628
+
1629
+ template <typename SockLenType>
1630
+ inline signed_size_type call_sendto(SockLenType msghdr::*,
1631
+ socket_type s, const void* data, size_t size, int flags,
1632
+ const socket_addr_type* addr, std::size_t addrlen)
1633
+ {
1634
+ return ::sendto(s, static_cast<char*>(const_cast<void*>(data)),
1635
+ size, flags, addr, (SockLenType)addrlen);
1636
+ }
1637
+
1638
+ signed_size_type sendto1(socket_type s, const void* data, size_t size,
1639
+ int flags, const socket_addr_type* addr, std::size_t addrlen,
1640
+ boost::system::error_code& ec)
1641
+ {
1642
+ #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1643
+ // Send the data.
1644
+ WSABUF buf;
1645
+ buf.buf = const_cast<char*>(static_cast<const char*>(data));
1646
+ buf.len = static_cast<ULONG>(size);
1647
+ DWORD bytes_transferred = 0;
1648
+ int result = ::WSASendTo(s, &buf, 1, &bytes_transferred,
1649
+ flags, addr, static_cast<int>(addrlen), 0, 0);
1650
+ get_last_error(ec, true);
1651
+ if (ec.value() == ERROR_NETNAME_DELETED)
1652
+ ec = boost::asio::error::connection_reset;
1653
+ else if (ec.value() == ERROR_PORT_UNREACHABLE)
1654
+ ec = boost::asio::error::connection_refused;
1655
+ if (result != 0)
1656
+ return socket_error_retval;
1657
+ ec.assign(0, ec.category());
1658
+ return bytes_transferred;
1659
+ #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1660
+ #if defined(__linux__)
1661
+ flags |= MSG_NOSIGNAL;
1662
+ #endif // defined(__linux__)
1663
+ signed_size_type result = call_sendto(&msghdr::msg_namelen,
1664
+ s, data, size, flags, addr, addrlen);
1665
+ get_last_error(ec, result < 0);
1316
1666
  return result;
1317
1667
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1318
1668
  }
@@ -1350,6 +1700,39 @@ size_t sync_sendto(socket_type s, state_type state, const buf* bufs,
1350
1700
  }
1351
1701
  }
1352
1702
 
1703
+ size_t sync_sendto1(socket_type s, state_type state, const void* data,
1704
+ size_t size, int flags, const socket_addr_type* addr,
1705
+ std::size_t addrlen, boost::system::error_code& ec)
1706
+ {
1707
+ if (s == invalid_socket)
1708
+ {
1709
+ ec = boost::asio::error::bad_descriptor;
1710
+ return 0;
1711
+ }
1712
+
1713
+ // Write some data.
1714
+ for (;;)
1715
+ {
1716
+ // Try to complete the operation without blocking.
1717
+ signed_size_type bytes = socket_ops::sendto1(
1718
+ s, data, size, flags, addr, addrlen, ec);
1719
+
1720
+ // Check if operation succeeded.
1721
+ if (bytes >= 0)
1722
+ return bytes;
1723
+
1724
+ // Operation failed.
1725
+ if ((state & user_set_non_blocking)
1726
+ || (ec != boost::asio::error::would_block
1727
+ && ec != boost::asio::error::try_again))
1728
+ return 0;
1729
+
1730
+ // Wait for socket to become ready.
1731
+ if (socket_ops::poll_write(s, 0, -1, ec) < 0)
1732
+ return 0;
1733
+ }
1734
+ }
1735
+
1353
1736
  #if !defined(BOOST_ASIO_HAS_IOCP)
1354
1737
 
1355
1738
  bool non_blocking_sendto(socket_type s,
@@ -1363,6 +1746,13 @@ bool non_blocking_sendto(socket_type s,
1363
1746
  signed_size_type bytes = socket_ops::sendto(
1364
1747
  s, bufs, count, flags, addr, addrlen, ec);
1365
1748
 
1749
+ // Check if operation succeeded.
1750
+ if (bytes >= 0)
1751
+ {
1752
+ bytes_transferred = bytes;
1753
+ return true;
1754
+ }
1755
+
1366
1756
  // Retry operation if interrupted by signal.
1367
1757
  if (ec == boost::asio::error::interrupted)
1368
1758
  continue;
@@ -1372,15 +1762,41 @@ bool non_blocking_sendto(socket_type s,
1372
1762
  || ec == boost::asio::error::try_again)
1373
1763
  return false;
1374
1764
 
1375
- // Operation is complete.
1765
+ // Operation failed.
1766
+ bytes_transferred = 0;
1767
+ return true;
1768
+ }
1769
+ }
1770
+
1771
+ bool non_blocking_sendto1(socket_type s,
1772
+ const void* data, size_t size, int flags,
1773
+ const socket_addr_type* addr, std::size_t addrlen,
1774
+ boost::system::error_code& ec, size_t& bytes_transferred)
1775
+ {
1776
+ for (;;)
1777
+ {
1778
+ // Write some data.
1779
+ signed_size_type bytes = socket_ops::sendto1(
1780
+ s, data, size, flags, addr, addrlen, ec);
1781
+
1782
+ // Check if operation succeeded.
1376
1783
  if (bytes >= 0)
1377
1784
  {
1378
- ec = boost::system::error_code();
1379
1785
  bytes_transferred = bytes;
1786
+ return true;
1380
1787
  }
1381
- else
1382
- bytes_transferred = 0;
1383
1788
 
1789
+ // Retry operation if interrupted by signal.
1790
+ if (ec == boost::asio::error::interrupted)
1791
+ continue;
1792
+
1793
+ // Check if we need to run the operation again.
1794
+ if (ec == boost::asio::error::would_block
1795
+ || ec == boost::asio::error::try_again)
1796
+ return false;
1797
+
1798
+ // Operation failed.
1799
+ bytes_transferred = 0;
1384
1800
  return true;
1385
1801
  }
1386
1802
  }
@@ -1390,10 +1806,9 @@ bool non_blocking_sendto(socket_type s,
1390
1806
  socket_type socket(int af, int type, int protocol,
1391
1807
  boost::system::error_code& ec)
1392
1808
  {
1393
- clear_last_error();
1394
1809
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1395
- socket_type s = error_wrapper(::WSASocketW(af, type, protocol, 0, 0,
1396
- WSA_FLAG_OVERLAPPED), ec);
1810
+ socket_type s = ::WSASocketW(af, type, protocol, 0, 0, WSA_FLAG_OVERLAPPED);
1811
+ get_last_error(ec, s == invalid_socket);
1397
1812
  if (s == invalid_socket)
1398
1813
  return s;
1399
1814
 
@@ -1407,17 +1822,15 @@ socket_type socket(int af, int type, int protocol,
1407
1822
  reinterpret_cast<const char*>(&optval), sizeof(optval));
1408
1823
  }
1409
1824
 
1410
- ec = boost::system::error_code();
1411
-
1412
1825
  return s;
1413
1826
  #elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
1414
- socket_type s = error_wrapper(::socket(af, type, protocol), ec);
1415
- if (s == invalid_socket)
1416
- return s;
1827
+ socket_type s = ::socket(af, type, protocol);
1828
+ get_last_error(ec, s < 0);
1417
1829
 
1418
1830
  int optval = 1;
1419
- int result = error_wrapper(::setsockopt(s,
1420
- SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
1831
+ int result = ::setsockopt(s, SOL_SOCKET,
1832
+ SO_NOSIGPIPE, &optval, sizeof(optval));
1833
+ get_last_error(ec, result != 0);
1421
1834
  if (result != 0)
1422
1835
  {
1423
1836
  ::close(s);
@@ -1426,9 +1839,8 @@ socket_type socket(int af, int type, int protocol,
1426
1839
 
1427
1840
  return s;
1428
1841
  #else
1429
- int s = error_wrapper(::socket(af, type, protocol), ec);
1430
- if (s >= 0)
1431
- ec = boost::system::error_code();
1842
+ int s = ::socket(af, type, protocol);
1843
+ get_last_error(ec, s < 0);
1432
1844
  return s;
1433
1845
  #endif
1434
1846
  }
@@ -1470,7 +1882,7 @@ int setsockopt(socket_type s, state_type& state, int level, int optname,
1470
1882
  state |= enable_connection_aborted;
1471
1883
  else
1472
1884
  state &= ~enable_connection_aborted;
1473
- ec = boost::system::error_code();
1885
+ ec.assign(0, ec.category());
1474
1886
  return 0;
1475
1887
  }
1476
1888
 
@@ -1486,24 +1898,24 @@ int setsockopt(socket_type s, state_type& state, int level, int optname,
1486
1898
  typedef int (WSAAPI *sso_t)(SOCKET, int, int, const char*, int);
1487
1899
  if (sso_t sso = (sso_t)::GetProcAddress(winsock_module, "setsockopt"))
1488
1900
  {
1489
- clear_last_error();
1490
- return error_wrapper(sso(s, level, optname,
1901
+ int result = sso(s, level, optname,
1491
1902
  reinterpret_cast<const char*>(optval),
1492
- static_cast<int>(optlen)), ec);
1903
+ static_cast<int>(optlen));
1904
+ get_last_error(ec, result != 0);
1905
+ return result;
1493
1906
  }
1494
1907
  }
1495
1908
  ec = boost::asio::error::fault;
1496
1909
  return socket_error_retval;
1497
1910
  #else // defined(__BORLANDC__)
1498
- clear_last_error();
1499
- int result = error_wrapper(call_setsockopt(&msghdr::msg_namelen,
1500
- s, level, optname, optval, optlen), ec);
1911
+ int result = call_setsockopt(&msghdr::msg_namelen,
1912
+ s, level, optname, optval, optlen);
1913
+ get_last_error(ec, result != 0);
1501
1914
  if (result == 0)
1502
1915
  {
1503
- ec = boost::system::error_code();
1504
-
1505
1916
  #if defined(__MACH__) && defined(__APPLE__) \
1506
- || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
1917
+ || defined(__NetBSD__) || defined(__FreeBSD__) \
1918
+ || defined(__OpenBSD__) || defined(__QNX__)
1507
1919
  // To implement portable behaviour for SO_REUSEADDR with UDP sockets we
1508
1920
  // need to also set SO_REUSEPORT on BSD-based platforms.
1509
1921
  if ((state & datagram_oriented)
@@ -1555,7 +1967,7 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
1555
1967
  }
1556
1968
 
1557
1969
  *static_cast<int*>(optval) = (state & enable_connection_aborted) ? 1 : 0;
1558
- ec = boost::system::error_code();
1970
+ ec.assign(0, ec.category());
1559
1971
  return 0;
1560
1972
  }
1561
1973
 
@@ -1568,10 +1980,10 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
1568
1980
  typedef int (WSAAPI *gso_t)(SOCKET, int, int, char*, int*);
1569
1981
  if (gso_t gso = (gso_t)::GetProcAddress(winsock_module, "getsockopt"))
1570
1982
  {
1571
- clear_last_error();
1572
1983
  int tmp_optlen = static_cast<int>(*optlen);
1573
- int result = error_wrapper(gso(s, level, optname,
1574
- reinterpret_cast<char*>(optval), &tmp_optlen), ec);
1984
+ int result = gso(s, level, optname,
1985
+ reinterpret_cast<char*>(optval), &tmp_optlen);
1986
+ get_last_error(ec, result != 0);
1575
1987
  *optlen = static_cast<size_t>(tmp_optlen);
1576
1988
  if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
1577
1989
  && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
@@ -1582,7 +1994,7 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
1582
1994
  // value is non-zero (i.e. true). This corresponds to the behavior of
1583
1995
  // IPv6 sockets on Windows platforms pre-Vista.
1584
1996
  *static_cast<DWORD*>(optval) = 1;
1585
- ec = boost::system::error_code();
1997
+ ec.assign(0, ec.category());
1586
1998
  }
1587
1999
  return result;
1588
2000
  }
@@ -1590,9 +2002,9 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
1590
2002
  ec = boost::asio::error::fault;
1591
2003
  return socket_error_retval;
1592
2004
  #elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1593
- clear_last_error();
1594
- int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
1595
- s, level, optname, optval, optlen), ec);
2005
+ int result = call_getsockopt(&msghdr::msg_namelen,
2006
+ s, level, optname, optval, optlen);
2007
+ get_last_error(ec, result != 0);
1596
2008
  if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
1597
2009
  && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
1598
2010
  {
@@ -1602,15 +2014,13 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
1602
2014
  // non-zero (i.e. true). This corresponds to the behavior of IPv6 sockets
1603
2015
  // on Windows platforms pre-Vista.
1604
2016
  *static_cast<DWORD*>(optval) = 1;
1605
- ec = boost::system::error_code();
2017
+ ec.assign(0, ec.category());
1606
2018
  }
1607
- if (result == 0)
1608
- ec = boost::system::error_code();
1609
2019
  return result;
1610
2020
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1611
- clear_last_error();
1612
- int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
1613
- s, level, optname, optval, optlen), ec);
2021
+ int result = call_getsockopt(&msghdr::msg_namelen,
2022
+ s, level, optname, optval, optlen);
2023
+ get_last_error(ec, result != 0);
1614
2024
  #if defined(__linux__)
1615
2025
  if (result == 0 && level == SOL_SOCKET && *optlen == sizeof(int)
1616
2026
  && (optname == SO_SNDBUF || optname == SO_RCVBUF))
@@ -1623,8 +2033,6 @@ int getsockopt(socket_type s, state_type state, int level, int optname,
1623
2033
  *static_cast<int*>(optval) /= 2;
1624
2034
  }
1625
2035
  #endif // defined(__linux__)
1626
- if (result == 0)
1627
- ec = boost::system::error_code();
1628
2036
  return result;
1629
2037
  #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1630
2038
  }
@@ -1667,7 +2075,7 @@ int getpeername(socket_type s, socket_addr_type* addr,
1667
2075
  }
1668
2076
 
1669
2077
  // The cached value is still valid.
1670
- ec = boost::system::error_code();
2078
+ ec.assign(0, ec.category());
1671
2079
  return 0;
1672
2080
  }
1673
2081
  #else // defined(BOOST_ASIO_WINDOWS) && !defined(BOOST_ASIO_WINDOWS_APP)
@@ -1676,11 +2084,8 @@ int getpeername(socket_type s, socket_addr_type* addr,
1676
2084
  #endif // defined(BOOST_ASIO_WINDOWS) && !defined(BOOST_ASIO_WINDOWS_APP)
1677
2085
  // || defined(__CYGWIN__)
1678
2086
 
1679
- clear_last_error();
1680
- int result = error_wrapper(call_getpeername(
1681
- &msghdr::msg_namelen, s, addr, addrlen), ec);
1682
- if (result == 0)
1683
- ec = boost::system::error_code();
2087
+ int result = call_getpeername(&msghdr::msg_namelen, s, addr, addrlen);
2088
+ get_last_error(ec, result != 0);
1684
2089
  return result;
1685
2090
  }
1686
2091
 
@@ -1703,11 +2108,8 @@ int getsockname(socket_type s, socket_addr_type* addr,
1703
2108
  return socket_error_retval;
1704
2109
  }
1705
2110
 
1706
- clear_last_error();
1707
- int result = error_wrapper(call_getsockname(
1708
- &msghdr::msg_namelen, s, addr, addrlen), ec);
1709
- if (result == 0)
1710
- ec = boost::system::error_code();
2111
+ int result = call_getsockname(&msghdr::msg_namelen, s, addr, addrlen);
2112
+ get_last_error(ec, result != 0);
1711
2113
  return result;
1712
2114
  }
1713
2115
 
@@ -1720,20 +2122,17 @@ int ioctl(socket_type s, state_type& state, int cmd,
1720
2122
  return socket_error_retval;
1721
2123
  }
1722
2124
 
1723
- clear_last_error();
1724
2125
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1725
- int result = error_wrapper(::ioctlsocket(s, cmd, arg), ec);
2126
+ int result = ::ioctlsocket(s, cmd, arg);
1726
2127
  #elif defined(__MACH__) && defined(__APPLE__) \
1727
2128
  || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
1728
- int result = error_wrapper(::ioctl(s,
1729
- static_cast<unsigned int>(cmd), arg), ec);
2129
+ int result = ::ioctl(s, static_cast<unsigned int>(cmd), arg);
1730
2130
  #else
1731
- int result = error_wrapper(::ioctl(s, cmd, arg), ec);
2131
+ int result = ::ioctl(s, cmd, arg);
1732
2132
  #endif
2133
+ get_last_error(ec, result < 0);
1733
2134
  if (result >= 0)
1734
2135
  {
1735
- ec = boost::system::error_code();
1736
-
1737
2136
  // When updating the non-blocking mode we always perform the ioctl syscall,
1738
2137
  // even if the flags would otherwise indicate that the socket is already in
1739
2138
  // the correct state. This ensures that the underlying socket is put into
@@ -1761,7 +2160,9 @@ int ioctl(socket_type s, state_type& state, int cmd,
1761
2160
  int select(int nfds, fd_set* readfds, fd_set* writefds,
1762
2161
  fd_set* exceptfds, timeval* timeout, boost::system::error_code& ec)
1763
2162
  {
1764
- clear_last_error();
2163
+ #if defined(__EMSCRIPTEN__)
2164
+ exceptfds = 0;
2165
+ #endif // defined(__EMSCRIPTEN__)
1765
2166
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
1766
2167
  if (!readfds && !writefds && !exceptfds && timeout)
1767
2168
  {
@@ -1769,7 +2170,7 @@ int select(int nfds, fd_set* readfds, fd_set* writefds,
1769
2170
  if (milliseconds == 0)
1770
2171
  milliseconds = 1; // Force context switch.
1771
2172
  ::Sleep(milliseconds);
1772
- ec = boost::system::error_code();
2173
+ ec.assign(0, ec.category());
1773
2174
  return 0;
1774
2175
  }
1775
2176
 
@@ -1788,15 +2189,13 @@ int select(int nfds, fd_set* readfds, fd_set* writefds,
1788
2189
  timespec ts;
1789
2190
  ts.tv_sec = timeout ? timeout->tv_sec : 0;
1790
2191
  ts.tv_nsec = timeout ? timeout->tv_usec * 1000 : 0;
1791
- return error_wrapper(::pselect(nfds, readfds,
1792
- writefds, exceptfds, timeout ? &ts : 0, 0), ec);
2192
+ int result = ::pselect(nfds, readfds,
2193
+ writefds, exceptfds, timeout ? &ts : 0, 0);
1793
2194
  #else
1794
- int result = error_wrapper(::select(nfds, readfds,
1795
- writefds, exceptfds, timeout), ec);
1796
- if (result >= 0)
1797
- ec = boost::system::error_code();
1798
- return result;
2195
+ int result = ::select(nfds, readfds, writefds, exceptfds, timeout);
1799
2196
  #endif
2197
+ get_last_error(ec, result < 0);
2198
+ return result;
1800
2199
  }
1801
2200
 
1802
2201
  int poll_read(socket_type s, state_type state,
@@ -1830,8 +2229,8 @@ int poll_read(socket_type s, state_type state,
1830
2229
  }
1831
2230
  else
1832
2231
  timeout = 0;
1833
- clear_last_error();
1834
- int result = error_wrapper(::select(s + 1, &fds, 0, 0, timeout), ec);
2232
+ int result = ::select(s + 1, &fds, 0, 0, timeout);
2233
+ get_last_error(ec, result < 0);
1835
2234
  #else // defined(BOOST_ASIO_WINDOWS)
1836
2235
  // || defined(__CYGWIN__)
1837
2236
  // || defined(__SYMBIAN32__)
@@ -1840,16 +2239,14 @@ int poll_read(socket_type s, state_type state,
1840
2239
  fds.events = POLLIN;
1841
2240
  fds.revents = 0;
1842
2241
  int timeout = (state & user_set_non_blocking) ? 0 : msec;
1843
- clear_last_error();
1844
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
2242
+ int result = ::poll(&fds, 1, timeout);
2243
+ get_last_error(ec, result < 0);
1845
2244
  #endif // defined(BOOST_ASIO_WINDOWS)
1846
2245
  // || defined(__CYGWIN__)
1847
2246
  // || defined(__SYMBIAN32__)
1848
2247
  if (result == 0)
1849
- ec = (state & user_set_non_blocking)
1850
- ? boost::asio::error::would_block : boost::system::error_code();
1851
- else if (result > 0)
1852
- ec = boost::system::error_code();
2248
+ if (state & user_set_non_blocking)
2249
+ ec = boost::asio::error::would_block;
1853
2250
  return result;
1854
2251
  }
1855
2252
 
@@ -1884,8 +2281,8 @@ int poll_write(socket_type s, state_type state,
1884
2281
  }
1885
2282
  else
1886
2283
  timeout = 0;
1887
- clear_last_error();
1888
- int result = error_wrapper(::select(s + 1, 0, &fds, 0, timeout), ec);
2284
+ int result = ::select(s + 1, 0, &fds, 0, timeout);
2285
+ get_last_error(ec, result < 0);
1889
2286
  #else // defined(BOOST_ASIO_WINDOWS)
1890
2287
  // || defined(__CYGWIN__)
1891
2288
  // || defined(__SYMBIAN32__)
@@ -1894,16 +2291,14 @@ int poll_write(socket_type s, state_type state,
1894
2291
  fds.events = POLLOUT;
1895
2292
  fds.revents = 0;
1896
2293
  int timeout = (state & user_set_non_blocking) ? 0 : msec;
1897
- clear_last_error();
1898
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
2294
+ int result = ::poll(&fds, 1, timeout);
2295
+ get_last_error(ec, result < 0);
1899
2296
  #endif // defined(BOOST_ASIO_WINDOWS)
1900
2297
  // || defined(__CYGWIN__)
1901
2298
  // || defined(__SYMBIAN32__)
1902
2299
  if (result == 0)
1903
- ec = (state & user_set_non_blocking)
1904
- ? boost::asio::error::would_block : boost::system::error_code();
1905
- else if (result > 0)
1906
- ec = boost::system::error_code();
2300
+ if (state & user_set_non_blocking)
2301
+ ec = boost::asio::error::would_block;
1907
2302
  return result;
1908
2303
  }
1909
2304
 
@@ -1938,8 +2333,8 @@ int poll_error(socket_type s, state_type state,
1938
2333
  }
1939
2334
  else
1940
2335
  timeout = 0;
1941
- clear_last_error();
1942
- int result = error_wrapper(::select(s + 1, 0, 0, &fds, timeout), ec);
2336
+ int result = ::select(s + 1, 0, 0, &fds, timeout);
2337
+ get_last_error(ec, result < 0);
1943
2338
  #else // defined(BOOST_ASIO_WINDOWS)
1944
2339
  // || defined(__CYGWIN__)
1945
2340
  // || defined(__SYMBIAN32__)
@@ -1948,16 +2343,14 @@ int poll_error(socket_type s, state_type state,
1948
2343
  fds.events = POLLPRI | POLLERR | POLLHUP;
1949
2344
  fds.revents = 0;
1950
2345
  int timeout = (state & user_set_non_blocking) ? 0 : msec;
1951
- clear_last_error();
1952
- int result = error_wrapper(::poll(&fds, 1, timeout), ec);
2346
+ int result = ::poll(&fds, 1, timeout);
2347
+ get_last_error(ec, result < 0);
1953
2348
  #endif // defined(BOOST_ASIO_WINDOWS)
1954
2349
  // || defined(__CYGWIN__)
1955
2350
  // || defined(__SYMBIAN32__)
1956
2351
  if (result == 0)
1957
- ec = (state & user_set_non_blocking)
1958
- ? boost::asio::error::would_block : boost::system::error_code();
1959
- else if (result > 0)
1960
- ec = boost::system::error_code();
2352
+ if (state & user_set_non_blocking)
2353
+ ec = boost::asio::error::would_block;
1961
2354
  return result;
1962
2355
  }
1963
2356
 
@@ -1988,11 +2381,8 @@ int poll_connect(socket_type s, int msec, boost::system::error_code& ec)
1988
2381
  }
1989
2382
  else
1990
2383
  timeout = 0;
1991
- clear_last_error();
1992
- int result = error_wrapper(::select(
1993
- s + 1, 0, &write_fds, &except_fds, timeout), ec);
1994
- if (result >= 0)
1995
- ec = boost::system::error_code();
2384
+ int result = ::select(s + 1, 0, &write_fds, &except_fds, timeout);
2385
+ get_last_error(ec, result < 0);
1996
2386
  return result;
1997
2387
  #else // defined(BOOST_ASIO_WINDOWS)
1998
2388
  // || defined(__CYGWIN__)
@@ -2001,10 +2391,8 @@ int poll_connect(socket_type s, int msec, boost::system::error_code& ec)
2001
2391
  fds.fd = s;
2002
2392
  fds.events = POLLOUT;
2003
2393
  fds.revents = 0;
2004
- clear_last_error();
2005
- int result = error_wrapper(::poll(&fds, 1, msec), ec);
2006
- if (result >= 0)
2007
- ec = boost::system::error_code();
2394
+ int result = ::poll(&fds, 1, msec);
2395
+ get_last_error(ec, result < 0);
2008
2396
  return result;
2009
2397
  #endif // defined(BOOST_ASIO_WINDOWS)
2010
2398
  // || defined(__CYGWIN__)
@@ -2089,18 +2477,20 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length,
2089
2477
  DWORD string_length = static_cast<DWORD>(length);
2090
2478
  #if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800))
2091
2479
  LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR));
2092
- int result = error_wrapper(::WSAAddressToStringW(&address.base,
2093
- address_length, 0, string_buffer, &string_length), ec);
2480
+ int result = ::WSAAddressToStringW(&address.base,
2481
+ address_length, 0, string_buffer, &string_length);
2482
+ get_last_error(ec, true);
2094
2483
  ::WideCharToMultiByte(CP_ACP, 0, string_buffer, -1,
2095
2484
  dest, static_cast<int>(length), 0, 0);
2096
2485
  #else
2097
- int result = error_wrapper(::WSAAddressToStringA(
2098
- &address.base, address_length, 0, dest, &string_length), ec);
2486
+ int result = ::WSAAddressToStringA(&address.base,
2487
+ address_length, 0, dest, &string_length);
2488
+ get_last_error(ec, true);
2099
2489
  #endif
2100
2490
 
2101
2491
  // Windows may set error code on success.
2102
2492
  if (result != socket_error_retval)
2103
- ec = boost::system::error_code();
2493
+ ec.assign(0, ec.category());
2104
2494
 
2105
2495
  // Windows may not set an error code on failure.
2106
2496
  else if (result == socket_error_retval && !ec)
@@ -2108,8 +2498,8 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length,
2108
2498
 
2109
2499
  return result == socket_error_retval ? 0 : dest;
2110
2500
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
2111
- const char* result = error_wrapper(::inet_ntop(
2112
- af, src, dest, static_cast<int>(length)), ec);
2501
+ const char* result = ::inet_ntop(af, src, dest, static_cast<int>(length));
2502
+ get_last_error(ec, true);
2113
2503
  if (result == 0 && !ec)
2114
2504
  ec = boost::asio::error::invalid_argument;
2115
2505
  if (result != 0 && af == BOOST_ASIO_OS_DEF(AF_INET6) && scope_id != 0)
@@ -2154,7 +2544,7 @@ int inet_pton(int af, const char* src, void* dest,
2154
2544
  bytes[1] = static_cast<unsigned char>(b1);
2155
2545
  bytes[2] = static_cast<unsigned char>(b2);
2156
2546
  bytes[3] = static_cast<unsigned char>(b3);
2157
- ec = boost::system::error_code();
2547
+ ec.assign(), ec.category());
2158
2548
  return 1;
2159
2549
  }
2160
2550
  else if (af == BOOST_ASIO_OS_DEF(AF_INET6))
@@ -2270,7 +2660,7 @@ int inet_pton(int af, const char* src, void* dest,
2270
2660
  for (int i = 0; i < num_back_bytes; ++i)
2271
2661
  bytes[16 - num_back_bytes + i] = back_bytes[i];
2272
2662
 
2273
- ec = boost::system::error_code();
2663
+ ec.assign(0, ec.category());
2274
2664
  return 1;
2275
2665
  }
2276
2666
  else
@@ -2299,11 +2689,13 @@ int inet_pton(int af, const char* src, void* dest,
2299
2689
  int num_wide_chars = static_cast<int>(strlen(src)) + 1;
2300
2690
  LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR));
2301
2691
  ::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars);
2302
- int result = error_wrapper(::WSAStringToAddressW(
2303
- wide_buffer, af, 0, &address.base, &address_length), ec);
2692
+ int result = ::WSAStringToAddressW(wide_buffer,
2693
+ af, 0, &address.base, &address_length);
2694
+ get_last_error(ec, true);
2304
2695
  #else
2305
- int result = error_wrapper(::WSAStringToAddressA(
2306
- const_cast<char*>(src), af, 0, &address.base, &address_length), ec);
2696
+ int result = ::WSAStringToAddressA(const_cast<char*>(src),
2697
+ af, 0, &address.base, &address_length);
2698
+ get_last_error(ec, true);
2307
2699
  #endif
2308
2700
 
2309
2701
  if (af == BOOST_ASIO_OS_DEF(AF_INET))
@@ -2311,12 +2703,12 @@ int inet_pton(int af, const char* src, void* dest,
2311
2703
  if (result != socket_error_retval)
2312
2704
  {
2313
2705
  memcpy(dest, &address.v4.sin_addr, sizeof(in4_addr_type));
2314
- ec = boost::system::error_code();
2706
+ ec.assign(0, ec.category());
2315
2707
  }
2316
2708
  else if (strcmp(src, "255.255.255.255") == 0)
2317
2709
  {
2318
2710
  static_cast<in4_addr_type*>(dest)->s_addr = INADDR_NONE;
2319
- ec = boost::system::error_code();
2711
+ ec.assign(0, ec.category());
2320
2712
  }
2321
2713
  }
2322
2714
  else // AF_INET6
@@ -2326,7 +2718,7 @@ int inet_pton(int af, const char* src, void* dest,
2326
2718
  memcpy(dest, &address.v6.sin6_addr, sizeof(in6_addr_type));
2327
2719
  if (scope_id)
2328
2720
  *scope_id = address.v6.sin6_scope_id;
2329
- ec = boost::system::error_code();
2721
+ ec.assign(0, ec.category());
2330
2722
  }
2331
2723
  }
2332
2724
 
@@ -2335,7 +2727,7 @@ int inet_pton(int af, const char* src, void* dest,
2335
2727
  ec = boost::asio::error::invalid_argument;
2336
2728
 
2337
2729
  if (result != socket_error_retval)
2338
- ec = boost::system::error_code();
2730
+ ec.assign(0, ec.category());
2339
2731
 
2340
2732
  return result == socket_error_retval ? -1 : 1;
2341
2733
  #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
@@ -2359,7 +2751,8 @@ int inet_pton(int af, const char* src, void* dest,
2359
2751
  src_ptr = src_buf;
2360
2752
  }
2361
2753
 
2362
- int result = error_wrapper(::inet_pton(af, src_ptr, dest), ec);
2754
+ int result = ::inet_pton(af, src_ptr, dest);
2755
+ get_last_error(ec, true);
2363
2756
  if (result <= 0 && !ec)
2364
2757
  ec = boost::asio::error::invalid_argument;
2365
2758
  if (result > 0 && is_v6 && scope_id)
@@ -2385,7 +2778,6 @@ int inet_pton(int af, const char* src, void* dest,
2385
2778
 
2386
2779
  int gethostname(char* name, int namelen, boost::system::error_code& ec)
2387
2780
  {
2388
- clear_last_error();
2389
2781
  #if defined(BOOST_ASIO_WINDOWS_RUNTIME)
2390
2782
  try
2391
2783
  {
@@ -2416,11 +2808,8 @@ int gethostname(char* name, int namelen, boost::system::error_code& ec)
2416
2808
  return -1;
2417
2809
  }
2418
2810
  #else // defined(BOOST_ASIO_WINDOWS_RUNTIME)
2419
- int result = error_wrapper(::gethostname(name, namelen), ec);
2420
- # if defined(BOOST_ASIO_WINDOWS)
2421
- if (result == 0)
2422
- ec = boost::system::error_code();
2423
- # endif // defined(BOOST_ASIO_WINDOWS)
2811
+ int result = ::gethostname(name, namelen);
2812
+ get_last_error(ec, result != 0);
2424
2813
  return result;
2425
2814
  #endif // defined(BOOST_ASIO_WINDOWS_RUNTIME)
2426
2815
  }
@@ -2455,20 +2844,20 @@ inline boost::system::error_code translate_netdb_error(int error)
2455
2844
  inline hostent* gethostbyaddr(const char* addr, int length, int af,
2456
2845
  hostent* result, char* buffer, int buflength, boost::system::error_code& ec)
2457
2846
  {
2458
- clear_last_error();
2459
2847
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
2460
2848
  (void)(buffer);
2461
2849
  (void)(buflength);
2462
- hostent* retval = error_wrapper(::gethostbyaddr(addr, length, af), ec);
2850
+ hostent* retval = ::gethostbyaddr(addr, length, af);
2851
+ get_last_error(ec, !retval);
2463
2852
  if (!retval)
2464
2853
  return 0;
2465
- ec = boost::system::error_code();
2466
2854
  *result = *retval;
2467
2855
  return retval;
2468
2856
  #elif defined(__sun) || defined(__QNX__)
2469
2857
  int error = 0;
2470
- hostent* retval = error_wrapper(::gethostbyaddr_r(addr, length, af, result,
2471
- buffer, buflength, &error), ec);
2858
+ hostent* retval = ::gethostbyaddr_r(addr, length,
2859
+ af, result, buffer, buflength, &error);
2860
+ get_last_error(ec, !retval);
2472
2861
  if (error)
2473
2862
  ec = translate_netdb_error(error);
2474
2863
  return retval;
@@ -2476,8 +2865,8 @@ inline hostent* gethostbyaddr(const char* addr, int length, int af,
2476
2865
  (void)(buffer);
2477
2866
  (void)(buflength);
2478
2867
  int error = 0;
2479
- hostent* retval = error_wrapper(::getipnodebyaddr(
2480
- addr, length, af, &error), ec);
2868
+ hostent* retval = ::getipnodebyaddr(addr, length, af, &error);
2869
+ get_last_error(ec, !retval);
2481
2870
  if (error)
2482
2871
  ec = translate_netdb_error(error);
2483
2872
  if (!retval)
@@ -2487,8 +2876,10 @@ inline hostent* gethostbyaddr(const char* addr, int length, int af,
2487
2876
  #else
2488
2877
  hostent* retval = 0;
2489
2878
  int error = 0;
2490
- error_wrapper(::gethostbyaddr_r(addr, length, af, result, buffer,
2491
- buflength, &retval, &error), ec);
2879
+ clear_last_error();
2880
+ ::gethostbyaddr_r(addr, length, af, result,
2881
+ buffer, buflength, &retval, &error);
2882
+ get_last_error(ec, true);
2492
2883
  if (error)
2493
2884
  ec = translate_netdb_error(error);
2494
2885
  return retval;
@@ -2498,7 +2889,6 @@ inline hostent* gethostbyaddr(const char* addr, int length, int af,
2498
2889
  inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
2499
2890
  char* buffer, int buflength, int ai_flags, boost::system::error_code& ec)
2500
2891
  {
2501
- clear_last_error();
2502
2892
  #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
2503
2893
  (void)(buffer);
2504
2894
  (void)(buflength);
@@ -2508,10 +2898,10 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
2508
2898
  ec = boost::asio::error::address_family_not_supported;
2509
2899
  return 0;
2510
2900
  }
2511
- hostent* retval = error_wrapper(::gethostbyname(name), ec);
2901
+ hostent* retval = ::gethostbyname(name);
2902
+ get_last_error(ec, !retval);
2512
2903
  if (!retval)
2513
2904
  return 0;
2514
- ec = boost::system::error_code();
2515
2905
  *result = *retval;
2516
2906
  return result;
2517
2907
  #elif defined(__sun) || defined(__QNX__)
@@ -2522,8 +2912,8 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
2522
2912
  return 0;
2523
2913
  }
2524
2914
  int error = 0;
2525
- hostent* retval = error_wrapper(::gethostbyname_r(name, result, buffer,
2526
- buflength, &error), ec);
2915
+ hostent* retval = ::gethostbyname_r(name, result, buffer, buflength, &error);
2916
+ get_last_error(ec, !retval);
2527
2917
  if (error)
2528
2918
  ec = translate_netdb_error(error);
2529
2919
  return retval;
@@ -2531,8 +2921,8 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
2531
2921
  (void)(buffer);
2532
2922
  (void)(buflength);
2533
2923
  int error = 0;
2534
- hostent* retval = error_wrapper(::getipnodebyname(
2535
- name, af, ai_flags, &error), ec);
2924
+ hostent* retval = ::getipnodebyname(name, af, ai_flags, &error);
2925
+ get_last_error(ec, !retval);
2536
2926
  if (error)
2537
2927
  ec = translate_netdb_error(error);
2538
2928
  if (!retval)
@@ -2548,8 +2938,9 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
2548
2938
  }
2549
2939
  hostent* retval = 0;
2550
2940
  int error = 0;
2551
- error_wrapper(::gethostbyname_r(name, result,
2552
- buffer, buflength, &retval, &error), ec);
2941
+ clear_last_error();
2942
+ ::gethostbyname_r(name, result, buffer, buflength, &retval, &error);
2943
+ get_last_error(ec, true);
2553
2944
  if (error)
2554
2945
  ec = translate_netdb_error(error);
2555
2946
  return retval;
@@ -3265,7 +3656,7 @@ inline boost::system::error_code getnameinfo_emulation(
3265
3656
  }
3266
3657
  }
3267
3658
 
3268
- ec = boost::system::error_code();
3659
+ ec.assign(0, ec.category());
3269
3660
  return ec;
3270
3661
  }
3271
3662