couchbase 3.0.0.alpha.1-universal-darwin-19

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 (1964) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.gitmodules +15 -0
  4. data/.idea/.gitignore +5 -0
  5. data/.idea/dictionaries/gem_terms.xml +13 -0
  6. data/.idea/inspectionProfiles/Project_Default.xml +7 -0
  7. data/.idea/vcs.xml +11 -0
  8. data/.travis.yml +7 -0
  9. data/Gemfile +23 -0
  10. data/LICENSE.txt +202 -0
  11. data/README.md +7 -0
  12. data/Rakefile +29 -0
  13. data/bin/console +21 -0
  14. data/bin/setup +23 -0
  15. data/couchbase.gemspec +45 -0
  16. data/examples/crud.rb +21 -0
  17. data/examples/query.rb +17 -0
  18. data/examples/subdocument.rb +29 -0
  19. data/ext/.clang-format +15 -0
  20. data/ext/.clang-tidy +20 -0
  21. data/ext/.cmake-format.yaml +8 -0
  22. data/ext/.gitignore +2 -0
  23. data/ext/.idea/.name +1 -0
  24. data/ext/.idea/dictionaries/couchbase_terms.xml +12 -0
  25. data/ext/.idea/ext.iml +2 -0
  26. data/ext/.idea/misc.xml +4 -0
  27. data/ext/.idea/modules.xml +8 -0
  28. data/ext/.idea/vcs.xml +11 -0
  29. data/ext/CMakeLists.txt +145 -0
  30. data/ext/LICENSE.txt +202 -0
  31. data/ext/couchbase/bucket.hxx +75 -0
  32. data/ext/couchbase/cbcrypto/cbcrypto.cc +888 -0
  33. data/ext/couchbase/cbcrypto/cbcrypto.h +89 -0
  34. data/ext/couchbase/cbsasl/client.cc +48 -0
  35. data/ext/couchbase/cbsasl/client.h +127 -0
  36. data/ext/couchbase/cbsasl/context.cc +33 -0
  37. data/ext/couchbase/cbsasl/context.h +52 -0
  38. data/ext/couchbase/cbsasl/error.h +72 -0
  39. data/ext/couchbase/cbsasl/mechanism.cc +48 -0
  40. data/ext/couchbase/cbsasl/mechanism.h +55 -0
  41. data/ext/couchbase/cbsasl/plain/plain.cc +36 -0
  42. data/ext/couchbase/cbsasl/plain/plain.h +53 -0
  43. data/ext/couchbase/cbsasl/scram-sha/scram-sha.cc +390 -0
  44. data/ext/couchbase/cbsasl/scram-sha/scram-sha.h +185 -0
  45. data/ext/couchbase/cbsasl/scram-sha/stringutils.cc +81 -0
  46. data/ext/couchbase/cbsasl/scram-sha/stringutils.h +48 -0
  47. data/ext/couchbase/cluster.hxx +159 -0
  48. data/ext/couchbase/collections_manifest.hxx +88 -0
  49. data/ext/couchbase/configuration.hxx +242 -0
  50. data/ext/couchbase/configuration_monitor.hxx +93 -0
  51. data/ext/couchbase/couchbase.cxx +1099 -0
  52. data/ext/couchbase/error_map.hxx +61 -0
  53. data/ext/couchbase/errors.hxx +691 -0
  54. data/ext/couchbase/io/binary_message.hxx +38 -0
  55. data/ext/couchbase/io/binary_parser.hxx +64 -0
  56. data/ext/couchbase/io/http_message.hxx +34 -0
  57. data/ext/couchbase/io/http_parser.hxx +173 -0
  58. data/ext/couchbase/io/http_session.hxx +281 -0
  59. data/ext/couchbase/io/key_value_session.hxx +754 -0
  60. data/ext/couchbase/io/session_manager.hxx +107 -0
  61. data/ext/couchbase/mutation_token.hxx +37 -0
  62. data/ext/couchbase/operations.hxx +29 -0
  63. data/ext/couchbase/operations/command.hxx +77 -0
  64. data/ext/couchbase/operations/document_id.hxx +37 -0
  65. data/ext/couchbase/operations/get.hxx +60 -0
  66. data/ext/couchbase/operations/lookup_in.hxx +85 -0
  67. data/ext/couchbase/operations/mutate_in.hxx +87 -0
  68. data/ext/couchbase/operations/query.hxx +230 -0
  69. data/ext/couchbase/operations/remove.hxx +58 -0
  70. data/ext/couchbase/operations/upsert.hxx +60 -0
  71. data/ext/couchbase/platform/base64.cc +234 -0
  72. data/ext/couchbase/platform/base64.h +47 -0
  73. data/ext/couchbase/platform/random.cc +119 -0
  74. data/ext/couchbase/platform/random.h +39 -0
  75. data/ext/couchbase/platform/string_hex.cc +99 -0
  76. data/ext/couchbase/platform/string_hex.h +50 -0
  77. data/ext/couchbase/platform/uuid.cc +96 -0
  78. data/ext/couchbase/platform/uuid.h +56 -0
  79. data/ext/couchbase/protocol/client_opcode.hxx +215 -0
  80. data/ext/couchbase/protocol/client_request.hxx +113 -0
  81. data/ext/couchbase/protocol/client_response.hxx +181 -0
  82. data/ext/couchbase/protocol/cmd_get.hxx +99 -0
  83. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +111 -0
  84. data/ext/couchbase/protocol/cmd_get_collections_manifest.hxx +86 -0
  85. data/ext/couchbase/protocol/cmd_get_error_map.hxx +113 -0
  86. data/ext/couchbase/protocol/cmd_hello.hxx +130 -0
  87. data/ext/couchbase/protocol/cmd_info.hxx +35 -0
  88. data/ext/couchbase/protocol/cmd_lookup_in.hxx +203 -0
  89. data/ext/couchbase/protocol/cmd_mutate_in.hxx +265 -0
  90. data/ext/couchbase/protocol/cmd_remove.hxx +79 -0
  91. data/ext/couchbase/protocol/cmd_sasl_auth.hxx +94 -0
  92. data/ext/couchbase/protocol/cmd_sasl_list_mechs.hxx +88 -0
  93. data/ext/couchbase/protocol/cmd_sasl_step.hxx +92 -0
  94. data/ext/couchbase/protocol/cmd_select_bucket.hxx +73 -0
  95. data/ext/couchbase/protocol/cmd_upsert.hxx +136 -0
  96. data/ext/couchbase/protocol/datatype.hxx +48 -0
  97. data/ext/couchbase/protocol/hello_feature.hxx +118 -0
  98. data/ext/couchbase/protocol/magic.hxx +83 -0
  99. data/ext/couchbase/protocol/status.hxx +333 -0
  100. data/ext/couchbase/protocol/unsigned_leb128.h +195 -0
  101. data/ext/couchbase/service_type.hxx +23 -0
  102. data/ext/couchbase/utils/byteswap.hxx +34 -0
  103. data/ext/couchbase/utils/crc32.hxx +48 -0
  104. data/ext/couchbase/version.hxx +22 -0
  105. data/ext/extconf.rb +44 -0
  106. data/ext/test/main.cxx +143 -0
  107. data/ext/third_party/asio/.appveyor.yml +107 -0
  108. data/ext/third_party/asio/.cirrus.yml +16 -0
  109. data/ext/third_party/asio/.gitignore +3 -0
  110. data/ext/third_party/asio/.travis.yml +323 -0
  111. data/ext/third_party/asio/asio/.gitignore +23 -0
  112. data/ext/third_party/asio/asio/COPYING +4 -0
  113. data/ext/third_party/asio/asio/INSTALL +5 -0
  114. data/ext/third_party/asio/asio/LICENSE_1_0.txt +23 -0
  115. data/ext/third_party/asio/asio/Makefile.am +19 -0
  116. data/ext/third_party/asio/asio/README +4 -0
  117. data/ext/third_party/asio/asio/asio.manifest +4865 -0
  118. data/ext/third_party/asio/asio/autogen.sh +55 -0
  119. data/ext/third_party/asio/asio/boost_asio.manifest +5193 -0
  120. data/ext/third_party/asio/asio/boostify.pl +603 -0
  121. data/ext/third_party/asio/asio/configure.ac +182 -0
  122. data/ext/third_party/asio/asio/include/.gitignore +2 -0
  123. data/ext/third_party/asio/asio/include/Makefile.am +484 -0
  124. data/ext/third_party/asio/asio/include/asio.hpp +147 -0
  125. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +131 -0
  126. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +149 -0
  127. data/ext/third_party/asio/asio/include/asio/async_result.hpp +589 -0
  128. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +123 -0
  129. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +1210 -0
  130. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +693 -0
  131. data/ext/third_party/asio/asio/include/asio/basic_io_object.hpp +290 -0
  132. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +1202 -0
  133. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +756 -0
  134. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +907 -0
  135. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +568 -0
  136. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +1894 -0
  137. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +2495 -0
  138. data/ext/third_party/asio/asio/include/asio/basic_socket_iostream.hpp +407 -0
  139. data/ext/third_party/asio/asio/include/asio/basic_socket_streambuf.hpp +687 -0
  140. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +1049 -0
  141. data/ext/third_party/asio/asio/include/asio/basic_streambuf.hpp +452 -0
  142. data/ext/third_party/asio/asio/include/asio/basic_streambuf_fwd.hpp +36 -0
  143. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +763 -0
  144. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +580 -0
  145. data/ext/third_party/asio/asio/include/asio/buffer.hpp +2494 -0
  146. data/ext/third_party/asio/asio/include/asio/buffered_read_stream.hpp +253 -0
  147. data/ext/third_party/asio/asio/include/asio/buffered_read_stream_fwd.hpp +25 -0
  148. data/ext/third_party/asio/asio/include/asio/buffered_stream.hpp +279 -0
  149. data/ext/third_party/asio/asio/include/asio/buffered_stream_fwd.hpp +25 -0
  150. data/ext/third_party/asio/asio/include/asio/buffered_write_stream.hpp +245 -0
  151. data/ext/third_party/asio/asio/include/asio/buffered_write_stream_fwd.hpp +25 -0
  152. data/ext/third_party/asio/asio/include/asio/buffers_iterator.hpp +521 -0
  153. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +100 -0
  154. data/ext/third_party/asio/asio/include/asio/completion_condition.hpp +218 -0
  155. data/ext/third_party/asio/asio/include/asio/compose.hpp +136 -0
  156. data/ext/third_party/asio/asio/include/asio/connect.hpp +1076 -0
  157. data/ext/third_party/asio/asio/include/asio/coroutine.hpp +328 -0
  158. data/ext/third_party/asio/asio/include/asio/deadline_timer.hpp +38 -0
  159. data/ext/third_party/asio/asio/include/asio/defer.hpp +127 -0
  160. data/ext/third_party/asio/asio/include/asio/detached.hpp +62 -0
  161. data/ext/third_party/asio/asio/include/asio/detail/array.hpp +38 -0
  162. data/ext/third_party/asio/asio/include/asio/detail/array_fwd.hpp +34 -0
  163. data/ext/third_party/asio/asio/include/asio/detail/assert.hpp +32 -0
  164. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +45 -0
  165. data/ext/third_party/asio/asio/include/asio/detail/base_from_completion_cond.hpp +69 -0
  166. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +816 -0
  167. data/ext/third_party/asio/asio/include/asio/detail/buffer_resize_guard.hpp +66 -0
  168. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +544 -0
  169. data/ext/third_party/asio/asio/include/asio/detail/buffered_stream_storage.hpp +126 -0
  170. data/ext/third_party/asio/asio/include/asio/detail/call_stack.hpp +125 -0
  171. data/ext/third_party/asio/asio/include/asio/detail/chrono.hpp +66 -0
  172. data/ext/third_party/asio/asio/include/asio/detail/chrono_time_traits.hpp +190 -0
  173. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +83 -0
  174. data/ext/third_party/asio/asio/include/asio/detail/concurrency_hint.hpp +94 -0
  175. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +112 -0
  176. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp +149 -0
  177. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +1499 -0
  178. data/ext/third_party/asio/asio/include/asio/detail/consuming_buffers.hpp +414 -0
  179. data/ext/third_party/asio/asio/include/asio/detail/cstddef.hpp +31 -0
  180. data/ext/third_party/asio/asio/include/asio/detail/cstdint.hpp +60 -0
  181. data/ext/third_party/asio/asio/include/asio/detail/date_time_fwd.hpp +34 -0
  182. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +280 -0
  183. data/ext/third_party/asio/asio/include/asio/detail/dependent_type.hpp +36 -0
  184. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +121 -0
  185. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +130 -0
  186. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +130 -0
  187. data/ext/third_party/asio/asio/include/asio/detail/dev_poll_reactor.hpp +218 -0
  188. data/ext/third_party/asio/asio/include/asio/detail/epoll_reactor.hpp +266 -0
  189. data/ext/third_party/asio/asio/include/asio/detail/event.hpp +48 -0
  190. data/ext/third_party/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp +83 -0
  191. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +104 -0
  192. data/ext/third_party/asio/asio/include/asio/detail/executor_op.hpp +84 -0
  193. data/ext/third_party/asio/asio/include/asio/detail/fd_set_adapter.hpp +39 -0
  194. data/ext/third_party/asio/asio/include/asio/detail/fenced_block.hpp +80 -0
  195. data/ext/third_party/asio/asio/include/asio/detail/functional.hpp +38 -0
  196. data/ext/third_party/asio/asio/include/asio/detail/future.hpp +33 -0
  197. data/ext/third_party/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp +91 -0
  198. data/ext/third_party/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp +68 -0
  199. data/ext/third_party/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp +65 -0
  200. data/ext/third_party/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp +99 -0
  201. data/ext/third_party/asio/asio/include/asio/detail/global.hpp +52 -0
  202. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +242 -0
  203. data/ext/third_party/asio/asio/include/asio/detail/handler_cont_helpers.hpp +45 -0
  204. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +57 -0
  205. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +238 -0
  206. data/ext/third_party/asio/asio/include/asio/detail/handler_type_requirements.hpp +556 -0
  207. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +113 -0
  208. data/ext/third_party/asio/asio/include/asio/detail/hash_map.hpp +331 -0
  209. data/ext/third_party/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp +118 -0
  210. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +474 -0
  211. data/ext/third_party/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp +91 -0
  212. data/ext/third_party/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp +446 -0
  213. data/ext/third_party/asio/asio/include/asio/detail/impl/epoll_reactor.hpp +89 -0
  214. data/ext/third_party/asio/asio/include/asio/detail/impl/epoll_reactor.ipp +787 -0
  215. data/ext/third_party/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp +169 -0
  216. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +358 -0
  217. data/ext/third_party/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp +93 -0
  218. data/ext/third_party/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp +570 -0
  219. data/ext/third_party/asio/asio/include/asio/detail/impl/null_event.ipp +74 -0
  220. data/ext/third_party/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp +129 -0
  221. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_event.ipp +59 -0
  222. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_mutex.ipp +46 -0
  223. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_thread.ipp +84 -0
  224. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp +46 -0
  225. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp +223 -0
  226. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +152 -0
  227. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp +300 -0
  228. data/ext/third_party/asio/asio/include/asio/detail/impl/resolver_service_base.ipp +158 -0
  229. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +617 -0
  230. data/ext/third_party/asio/asio/include/asio/detail/impl/select_reactor.hpp +100 -0
  231. data/ext/third_party/asio/asio/include/asio/detail/impl/select_reactor.ipp +338 -0
  232. data/ext/third_party/asio/asio/include/asio/detail/impl/service_registry.hpp +94 -0
  233. data/ext/third_party/asio/asio/include/asio/detail/impl/service_registry.ipp +197 -0
  234. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +667 -0
  235. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +3575 -0
  236. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp +185 -0
  237. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +179 -0
  238. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.ipp +134 -0
  239. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +118 -0
  240. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +177 -0
  241. data/ext/third_party/asio/asio/include/asio/detail/impl/throw_error.ipp +60 -0
  242. data/ext/third_party/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp +91 -0
  243. data/ext/third_party/asio/asio/include/asio/detail/impl/timer_queue_set.ipp +101 -0
  244. data/ext/third_party/asio/asio/include/asio/detail/impl/win_event.ipp +76 -0
  245. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp +525 -0
  246. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp +103 -0
  247. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +594 -0
  248. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp +192 -0
  249. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp +801 -0
  250. data/ext/third_party/asio/asio/include/asio/detail/impl/win_mutex.ipp +84 -0
  251. data/ext/third_party/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp +448 -0
  252. data/ext/third_party/asio/asio/include/asio/detail/impl/win_static_mutex.ipp +136 -0
  253. data/ext/third_party/asio/asio/include/asio/detail/impl/win_thread.ipp +150 -0
  254. data/ext/third_party/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp +57 -0
  255. data/ext/third_party/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp +626 -0
  256. data/ext/third_party/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp +92 -0
  257. data/ext/third_party/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp +121 -0
  258. data/ext/third_party/asio/asio/include/asio/detail/impl/winsock_init.ipp +82 -0
  259. data/ext/third_party/asio/asio/include/asio/detail/io_control.hpp +84 -0
  260. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +167 -0
  261. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +193 -0
  262. data/ext/third_party/asio/asio/include/asio/detail/is_buffer_sequence.hpp +312 -0
  263. data/ext/third_party/asio/asio/include/asio/detail/is_executor.hpp +126 -0
  264. data/ext/third_party/asio/asio/include/asio/detail/keyword_tss_ptr.hpp +70 -0
  265. data/ext/third_party/asio/asio/include/asio/detail/kqueue_reactor.hpp +242 -0
  266. data/ext/third_party/asio/asio/include/asio/detail/limits.hpp +26 -0
  267. data/ext/third_party/asio/asio/include/asio/detail/local_free_on_block_exit.hpp +59 -0
  268. data/ext/third_party/asio/asio/include/asio/detail/macos_fenced_block.hpp +62 -0
  269. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +70 -0
  270. data/ext/third_party/asio/asio/include/asio/detail/mutex.hpp +48 -0
  271. data/ext/third_party/asio/asio/include/asio/detail/non_const_lvalue.hpp +54 -0
  272. data/ext/third_party/asio/asio/include/asio/detail/noncopyable.hpp +43 -0
  273. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +100 -0
  274. data/ext/third_party/asio/asio/include/asio/detail/null_fenced_block.hpp +47 -0
  275. data/ext/third_party/asio/asio/include/asio/detail/null_global.hpp +59 -0
  276. data/ext/third_party/asio/asio/include/asio/detail/null_mutex.hpp +64 -0
  277. data/ext/third_party/asio/asio/include/asio/detail/null_reactor.hpp +68 -0
  278. data/ext/third_party/asio/asio/include/asio/detail/null_signal_blocker.hpp +69 -0
  279. data/ext/third_party/asio/asio/include/asio/detail/null_socket_service.hpp +519 -0
  280. data/ext/third_party/asio/asio/include/asio/detail/null_static_mutex.hpp +60 -0
  281. data/ext/third_party/asio/asio/include/asio/detail/null_thread.hpp +67 -0
  282. data/ext/third_party/asio/asio/include/asio/detail/null_tss_ptr.hpp +68 -0
  283. data/ext/third_party/asio/asio/include/asio/detail/object_pool.hpp +171 -0
  284. data/ext/third_party/asio/asio/include/asio/detail/old_win_sdk_compat.hpp +214 -0
  285. data/ext/third_party/asio/asio/include/asio/detail/op_queue.hpp +162 -0
  286. data/ext/third_party/asio/asio/include/asio/detail/operation.hpp +38 -0
  287. data/ext/third_party/asio/asio/include/asio/detail/pipe_select_interrupter.hpp +89 -0
  288. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +141 -0
  289. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +162 -0
  290. data/ext/third_party/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp +118 -0
  291. data/ext/third_party/asio/asio/include/asio/detail/posix_global.hpp +80 -0
  292. data/ext/third_party/asio/asio/include/asio/detail/posix_mutex.hpp +76 -0
  293. data/ext/third_party/asio/asio/include/asio/detail/posix_signal_blocker.hpp +85 -0
  294. data/ext/third_party/asio/asio/include/asio/detail/posix_static_mutex.hpp +64 -0
  295. data/ext/third_party/asio/asio/include/asio/detail/posix_thread.hpp +109 -0
  296. data/ext/third_party/asio/asio/include/asio/detail/posix_tss_ptr.hpp +79 -0
  297. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +185 -0
  298. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +391 -0
  299. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +92 -0
  300. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +238 -0
  301. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +230 -0
  302. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +116 -0
  303. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +137 -0
  304. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +142 -0
  305. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +135 -0
  306. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +136 -0
  307. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +134 -0
  308. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +505 -0
  309. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +518 -0
  310. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +92 -0
  311. data/ext/third_party/asio/asio/include/asio/detail/reactor.hpp +32 -0
  312. data/ext/third_party/asio/asio/include/asio/detail/reactor_fwd.hpp +40 -0
  313. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +65 -0
  314. data/ext/third_party/asio/asio/include/asio/detail/reactor_op_queue.hpp +168 -0
  315. data/ext/third_party/asio/asio/include/asio/detail/recycling_allocator.hpp +106 -0
  316. data/ext/third_party/asio/asio/include/asio/detail/regex_fwd.hpp +35 -0
  317. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +138 -0
  318. data/ext/third_party/asio/asio/include/asio/detail/resolve_op.hpp +45 -0
  319. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +148 -0
  320. data/ext/third_party/asio/asio/include/asio/detail/resolver_service.hpp +145 -0
  321. data/ext/third_party/asio/asio/include/asio/detail/resolver_service_base.hpp +143 -0
  322. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +224 -0
  323. data/ext/third_party/asio/asio/include/asio/detail/scheduler_operation.hpp +78 -0
  324. data/ext/third_party/asio/asio/include/asio/detail/scheduler_thread_info.hpp +40 -0
  325. data/ext/third_party/asio/asio/include/asio/detail/scoped_lock.hpp +101 -0
  326. data/ext/third_party/asio/asio/include/asio/detail/scoped_ptr.hpp +87 -0
  327. data/ext/third_party/asio/asio/include/asio/detail/select_interrupter.hpp +46 -0
  328. data/ext/third_party/asio/asio/include/asio/detail/select_reactor.hpp +238 -0
  329. data/ext/third_party/asio/asio/include/asio/detail/service_registry.hpp +164 -0
  330. data/ext/third_party/asio/asio/include/asio/detail/signal_blocker.hpp +44 -0
  331. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +88 -0
  332. data/ext/third_party/asio/asio/include/asio/detail/signal_init.hpp +47 -0
  333. data/ext/third_party/asio/asio/include/asio/detail/signal_op.hpp +49 -0
  334. data/ext/third_party/asio/asio/include/asio/detail/signal_set_service.hpp +229 -0
  335. data/ext/third_party/asio/asio/include/asio/detail/socket_holder.hpp +98 -0
  336. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +337 -0
  337. data/ext/third_party/asio/asio/include/asio/detail/socket_option.hpp +316 -0
  338. data/ext/third_party/asio/asio/include/asio/detail/socket_select_interrupter.hpp +91 -0
  339. data/ext/third_party/asio/asio/include/asio/detail/socket_types.hpp +416 -0
  340. data/ext/third_party/asio/asio/include/asio/detail/solaris_fenced_block.hpp +62 -0
  341. data/ext/third_party/asio/asio/include/asio/detail/static_mutex.hpp +52 -0
  342. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +176 -0
  343. data/ext/third_party/asio/asio/include/asio/detail/std_fenced_block.hpp +62 -0
  344. data/ext/third_party/asio/asio/include/asio/detail/std_global.hpp +70 -0
  345. data/ext/third_party/asio/asio/include/asio/detail/std_mutex.hpp +73 -0
  346. data/ext/third_party/asio/asio/include/asio/detail/std_static_mutex.hpp +81 -0
  347. data/ext/third_party/asio/asio/include/asio/detail/std_thread.hpp +71 -0
  348. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +142 -0
  349. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +142 -0
  350. data/ext/third_party/asio/asio/include/asio/detail/string_view.hpp +47 -0
  351. data/ext/third_party/asio/asio/include/asio/detail/thread.hpp +60 -0
  352. data/ext/third_party/asio/asio/include/asio/detail/thread_context.hpp +42 -0
  353. data/ext/third_party/asio/asio/include/asio/detail/thread_group.hpp +95 -0
  354. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +125 -0
  355. data/ext/third_party/asio/asio/include/asio/detail/throw_error.hpp +53 -0
  356. data/ext/third_party/asio/asio/include/asio/detail/throw_exception.hpp +51 -0
  357. data/ext/third_party/asio/asio/include/asio/detail/timer_queue.hpp +360 -0
  358. data/ext/third_party/asio/asio/include/asio/detail/timer_queue_base.hpp +68 -0
  359. data/ext/third_party/asio/asio/include/asio/detail/timer_queue_ptime.hpp +99 -0
  360. data/ext/third_party/asio/asio/include/asio/detail/timer_queue_set.hpp +66 -0
  361. data/ext/third_party/asio/asio/include/asio/detail/timer_scheduler.hpp +35 -0
  362. data/ext/third_party/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp +40 -0
  363. data/ext/third_party/asio/asio/include/asio/detail/tss_ptr.hpp +69 -0
  364. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +89 -0
  365. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +151 -0
  366. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +87 -0
  367. data/ext/third_party/asio/asio/include/asio/detail/wait_op.hpp +45 -0
  368. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +151 -0
  369. data/ext/third_party/asio/asio/include/asio/detail/win_fd_set_adapter.hpp +149 -0
  370. data/ext/third_party/asio/asio/include/asio/detail/win_fenced_block.hpp +90 -0
  371. data/ext/third_party/asio/asio/include/asio/detail/win_global.hpp +71 -0
  372. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +113 -0
  373. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_service.hpp +335 -0
  374. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +106 -0
  375. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +338 -0
  376. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +123 -0
  377. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_operation.hpp +96 -0
  378. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +92 -0
  379. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +159 -0
  380. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp +232 -0
  381. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +308 -0
  382. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +130 -0
  383. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +120 -0
  384. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +129 -0
  385. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +121 -0
  386. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +114 -0
  387. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_service.hpp +581 -0
  388. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp +600 -0
  389. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_thread_info.hpp +34 -0
  390. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +123 -0
  391. data/ext/third_party/asio/asio/include/asio/detail/win_mutex.hpp +78 -0
  392. data/ext/third_party/asio/asio/include/asio/detail/win_object_handle_service.hpp +195 -0
  393. data/ext/third_party/asio/asio/include/asio/detail/win_static_mutex.hpp +74 -0
  394. data/ext/third_party/asio/asio/include/asio/detail/win_thread.hpp +147 -0
  395. data/ext/third_party/asio/asio/include/asio/detail/win_tss_ptr.hpp +79 -0
  396. data/ext/third_party/asio/asio/include/asio/detail/winapp_thread.hpp +124 -0
  397. data/ext/third_party/asio/asio/include/asio/detail/wince_thread.hpp +124 -0
  398. data/ext/third_party/asio/asio/include/asio/detail/winrt_async_manager.hpp +305 -0
  399. data/ext/third_party/asio/asio/include/asio/detail/winrt_async_op.hpp +65 -0
  400. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +121 -0
  401. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolver_service.hpp +212 -0
  402. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +94 -0
  403. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +115 -0
  404. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +106 -0
  405. data/ext/third_party/asio/asio/include/asio/detail/winrt_ssocket_service.hpp +250 -0
  406. data/ext/third_party/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp +362 -0
  407. data/ext/third_party/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp +147 -0
  408. data/ext/third_party/asio/asio/include/asio/detail/winrt_utils.hpp +106 -0
  409. data/ext/third_party/asio/asio/include/asio/detail/winsock_init.hpp +128 -0
  410. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +73 -0
  411. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +291 -0
  412. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +118 -0
  413. data/ext/third_party/asio/asio/include/asio/error.hpp +356 -0
  414. data/ext/third_party/asio/asio/include/asio/error_code.hpp +202 -0
  415. data/ext/third_party/asio/asio/include/asio/execution_context.hpp +412 -0
  416. data/ext/third_party/asio/asio/include/asio/executor.hpp +341 -0
  417. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +170 -0
  418. data/ext/third_party/asio/asio/include/asio/generic/basic_endpoint.hpp +193 -0
  419. data/ext/third_party/asio/asio/include/asio/generic/datagram_protocol.hpp +123 -0
  420. data/ext/third_party/asio/asio/include/asio/generic/detail/endpoint.hpp +133 -0
  421. data/ext/third_party/asio/asio/include/asio/generic/detail/impl/endpoint.ipp +110 -0
  422. data/ext/third_party/asio/asio/include/asio/generic/raw_protocol.hpp +121 -0
  423. data/ext/third_party/asio/asio/include/asio/generic/seq_packet_protocol.hpp +122 -0
  424. data/ext/third_party/asio/asio/include/asio/generic/stream_protocol.hpp +127 -0
  425. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +81 -0
  426. data/ext/third_party/asio/asio/include/asio/handler_continuation_hook.hpp +54 -0
  427. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +85 -0
  428. data/ext/third_party/asio/asio/include/asio/high_resolution_timer.hpp +44 -0
  429. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +422 -0
  430. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +491 -0
  431. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +471 -0
  432. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +160 -0
  433. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +533 -0
  434. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +872 -0
  435. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +113 -0
  436. data/ext/third_party/asio/asio/include/asio/impl/detached.hpp +130 -0
  437. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +113 -0
  438. data/ext/third_party/asio/asio/include/asio/impl/error.ipp +128 -0
  439. data/ext/third_party/asio/asio/include/asio/impl/error_code.ipp +206 -0
  440. data/ext/third_party/asio/asio/include/asio/impl/execution_context.hpp +109 -0
  441. data/ext/third_party/asio/asio/include/asio/impl/execution_context.ipp +82 -0
  442. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +387 -0
  443. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +38 -0
  444. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +52 -0
  445. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +353 -0
  446. data/ext/third_party/asio/asio/include/asio/impl/io_context.ipp +175 -0
  447. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +113 -0
  448. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +1135 -0
  449. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +699 -0
  450. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +3150 -0
  451. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +372 -0
  452. data/ext/third_party/asio/asio/include/asio/impl/serial_port_base.hpp +59 -0
  453. data/ext/third_party/asio/asio/include/asio/impl/serial_port_base.ipp +554 -0
  454. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +490 -0
  455. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +25 -0
  456. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +82 -0
  457. data/ext/third_party/asio/asio/include/asio/impl/system_context.hpp +34 -0
  458. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +80 -0
  459. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +85 -0
  460. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +127 -0
  461. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +87 -0
  462. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +276 -0
  463. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +887 -0
  464. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +1043 -0
  465. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +624 -0
  466. data/ext/third_party/asio/asio/include/asio/io_context.hpp +872 -0
  467. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +374 -0
  468. data/ext/third_party/asio/asio/include/asio/io_service.hpp +33 -0
  469. data/ext/third_party/asio/asio/include/asio/io_service_strand.hpp +20 -0
  470. data/ext/third_party/asio/asio/include/asio/ip/address.hpp +268 -0
  471. data/ext/third_party/asio/asio/include/asio/ip/address_v4.hpp +335 -0
  472. data/ext/third_party/asio/asio/include/asio/ip/address_v4_iterator.hpp +162 -0
  473. data/ext/third_party/asio/asio/include/asio/ip/address_v4_range.hpp +134 -0
  474. data/ext/third_party/asio/asio/include/asio/ip/address_v6.hpp +341 -0
  475. data/ext/third_party/asio/asio/include/asio/ip/address_v6_iterator.hpp +183 -0
  476. data/ext/third_party/asio/asio/include/asio/ip/address_v6_range.hpp +129 -0
  477. data/ext/third_party/asio/asio/include/asio/ip/bad_address_cast.hpp +53 -0
  478. data/ext/third_party/asio/asio/include/asio/ip/basic_endpoint.hpp +264 -0
  479. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +1030 -0
  480. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_entry.hpp +113 -0
  481. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_iterator.hpp +192 -0
  482. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_query.hpp +244 -0
  483. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_results.hpp +311 -0
  484. data/ext/third_party/asio/asio/include/asio/ip/detail/endpoint.hpp +141 -0
  485. data/ext/third_party/asio/asio/include/asio/ip/detail/impl/endpoint.ipp +199 -0
  486. data/ext/third_party/asio/asio/include/asio/ip/detail/socket_option.hpp +566 -0
  487. data/ext/third_party/asio/asio/include/asio/ip/host_name.hpp +42 -0
  488. data/ext/third_party/asio/asio/include/asio/ip/icmp.hpp +115 -0
  489. data/ext/third_party/asio/asio/include/asio/ip/impl/address.hpp +67 -0
  490. data/ext/third_party/asio/asio/include/asio/ip/impl/address.ipp +239 -0
  491. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v4.hpp +67 -0
  492. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v4.ipp +210 -0
  493. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v6.hpp +67 -0
  494. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v6.ipp +350 -0
  495. data/ext/third_party/asio/asio/include/asio/ip/impl/basic_endpoint.hpp +43 -0
  496. data/ext/third_party/asio/asio/include/asio/ip/impl/host_name.ipp +54 -0
  497. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v4.hpp +54 -0
  498. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v4.ipp +216 -0
  499. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v6.hpp +53 -0
  500. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v6.ipp +185 -0
  501. data/ext/third_party/asio/asio/include/asio/ip/multicast.hpp +191 -0
  502. data/ext/third_party/asio/asio/include/asio/ip/network_v4.hpp +261 -0
  503. data/ext/third_party/asio/asio/include/asio/ip/network_v6.hpp +235 -0
  504. data/ext/third_party/asio/asio/include/asio/ip/resolver_base.hpp +129 -0
  505. data/ext/third_party/asio/asio/include/asio/ip/resolver_query_base.hpp +43 -0
  506. data/ext/third_party/asio/asio/include/asio/ip/tcp.hpp +155 -0
  507. data/ext/third_party/asio/asio/include/asio/ip/udp.hpp +111 -0
  508. data/ext/third_party/asio/asio/include/asio/ip/unicast.hpp +70 -0
  509. data/ext/third_party/asio/asio/include/asio/ip/v6_only.hpp +69 -0
  510. data/ext/third_party/asio/asio/include/asio/is_executor.hpp +46 -0
  511. data/ext/third_party/asio/asio/include/asio/is_read_buffered.hpp +59 -0
  512. data/ext/third_party/asio/asio/include/asio/is_write_buffered.hpp +59 -0
  513. data/ext/third_party/asio/asio/include/asio/local/basic_endpoint.hpp +247 -0
  514. data/ext/third_party/asio/asio/include/asio/local/connect_pair.hpp +101 -0
  515. data/ext/third_party/asio/asio/include/asio/local/datagram_protocol.hpp +80 -0
  516. data/ext/third_party/asio/asio/include/asio/local/detail/endpoint.hpp +139 -0
  517. data/ext/third_party/asio/asio/include/asio/local/detail/impl/endpoint.ipp +136 -0
  518. data/ext/third_party/asio/asio/include/asio/local/stream_protocol.hpp +90 -0
  519. data/ext/third_party/asio/asio/include/asio/packaged_task.hpp +126 -0
  520. data/ext/third_party/asio/asio/include/asio/placeholders.hpp +151 -0
  521. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +697 -0
  522. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +470 -0
  523. data/ext/third_party/asio/asio/include/asio/posix/descriptor.hpp +37 -0
  524. data/ext/third_party/asio/asio/include/asio/posix/descriptor_base.hpp +90 -0
  525. data/ext/third_party/asio/asio/include/asio/posix/stream_descriptor.hpp +37 -0
  526. data/ext/third_party/asio/asio/include/asio/post.hpp +123 -0
  527. data/ext/third_party/asio/asio/include/asio/read.hpp +1288 -0
  528. data/ext/third_party/asio/asio/include/asio/read_at.hpp +694 -0
  529. data/ext/third_party/asio/asio/include/asio/read_until.hpp +2863 -0
  530. data/ext/third_party/asio/asio/include/asio/redirect_error.hpp +66 -0
  531. data/ext/third_party/asio/asio/include/asio/serial_port.hpp +36 -0
  532. data/ext/third_party/asio/asio/include/asio/serial_port_base.hpp +167 -0
  533. data/ext/third_party/asio/asio/include/asio/signal_set.hpp +28 -0
  534. data/ext/third_party/asio/asio/include/asio/socket_base.hpp +559 -0
  535. data/ext/third_party/asio/asio/include/asio/spawn.hpp +336 -0
  536. data/ext/third_party/asio/asio/include/asio/ssl.hpp +28 -0
  537. data/ext/third_party/asio/asio/include/asio/ssl/context.hpp +761 -0
  538. data/ext/third_party/asio/asio/include/asio/ssl/context_base.hpp +209 -0
  539. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +114 -0
  540. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +160 -0
  541. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +62 -0
  542. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +336 -0
  543. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/openssl_init.ipp +165 -0
  544. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +381 -0
  545. data/ext/third_party/asio/asio/include/asio/ssl/detail/openssl_init.hpp +101 -0
  546. data/ext/third_party/asio/asio/include/asio/ssl/detail/openssl_types.hpp +34 -0
  547. data/ext/third_party/asio/asio/include/asio/ssl/detail/password_callback.hpp +66 -0
  548. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +67 -0
  549. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +64 -0
  550. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +135 -0
  551. data/ext/third_party/asio/asio/include/asio/ssl/detail/verify_callback.hpp +62 -0
  552. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +67 -0
  553. data/ext/third_party/asio/asio/include/asio/ssl/error.hpp +125 -0
  554. data/ext/third_party/asio/asio/include/asio/ssl/host_name_verification.hpp +90 -0
  555. data/ext/third_party/asio/asio/include/asio/ssl/impl/context.hpp +67 -0
  556. data/ext/third_party/asio/asio/include/asio/ssl/impl/context.ipp +1238 -0
  557. data/ext/third_party/asio/asio/include/asio/ssl/impl/error.ipp +102 -0
  558. data/ext/third_party/asio/asio/include/asio/ssl/impl/host_name_verification.ipp +73 -0
  559. data/ext/third_party/asio/asio/include/asio/ssl/impl/rfc2818_verification.ipp +164 -0
  560. data/ext/third_party/asio/asio/include/asio/ssl/impl/src.hpp +29 -0
  561. data/ext/third_party/asio/asio/include/asio/ssl/rfc2818_verification.hpp +98 -0
  562. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +885 -0
  563. data/ext/third_party/asio/asio/include/asio/ssl/stream_base.hpp +52 -0
  564. data/ext/third_party/asio/asio/include/asio/ssl/verify_context.hpp +67 -0
  565. data/ext/third_party/asio/asio/include/asio/ssl/verify_mode.hpp +63 -0
  566. data/ext/third_party/asio/asio/include/asio/steady_timer.hpp +42 -0
  567. data/ext/third_party/asio/asio/include/asio/strand.hpp +314 -0
  568. data/ext/third_party/asio/asio/include/asio/streambuf.hpp +33 -0
  569. data/ext/third_party/asio/asio/include/asio/system_context.hpp +81 -0
  570. data/ext/third_party/asio/asio/include/asio/system_error.hpp +131 -0
  571. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +129 -0
  572. data/ext/third_party/asio/asio/include/asio/system_timer.hpp +42 -0
  573. data/ext/third_party/asio/asio/include/asio/this_coro.hpp +45 -0
  574. data/ext/third_party/asio/asio/include/asio/thread.hpp +92 -0
  575. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +235 -0
  576. data/ext/third_party/asio/asio/include/asio/time_traits.hpp +86 -0
  577. data/ext/third_party/asio/asio/include/asio/ts/buffer.hpp +24 -0
  578. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +34 -0
  579. data/ext/third_party/asio/asio/include/asio/ts/internet.hpp +40 -0
  580. data/ext/third_party/asio/asio/include/asio/ts/io_context.hpp +20 -0
  581. data/ext/third_party/asio/asio/include/asio/ts/net.hpp +26 -0
  582. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +203 -0
  583. data/ext/third_party/asio/asio/include/asio/ts/socket.hpp +27 -0
  584. data/ext/third_party/asio/asio/include/asio/ts/timer.hpp +26 -0
  585. data/ext/third_party/asio/asio/include/asio/unyield.hpp +21 -0
  586. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +110 -0
  587. data/ext/third_party/asio/asio/include/asio/use_future.hpp +160 -0
  588. data/ext/third_party/asio/asio/include/asio/uses_executor.hpp +71 -0
  589. data/ext/third_party/asio/asio/include/asio/version.hpp +23 -0
  590. data/ext/third_party/asio/asio/include/asio/wait_traits.hpp +56 -0
  591. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +435 -0
  592. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +361 -0
  593. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +490 -0
  594. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +474 -0
  595. data/ext/third_party/asio/asio/include/asio/windows/object_handle.hpp +38 -0
  596. data/ext/third_party/asio/asio/include/asio/windows/overlapped_handle.hpp +39 -0
  597. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +143 -0
  598. data/ext/third_party/asio/asio/include/asio/windows/random_access_handle.hpp +37 -0
  599. data/ext/third_party/asio/asio/include/asio/windows/stream_handle.hpp +37 -0
  600. data/ext/third_party/asio/asio/include/asio/write.hpp +1246 -0
  601. data/ext/third_party/asio/asio/include/asio/write_at.hpp +702 -0
  602. data/ext/third_party/asio/asio/include/asio/yield.hpp +23 -0
  603. data/ext/third_party/asio/asio/release.pl +440 -0
  604. data/ext/third_party/asio/asio/src/.gitignore +11 -0
  605. data/ext/third_party/asio/asio/src/Makefile.am +23 -0
  606. data/ext/third_party/asio/asio/src/Makefile.mgw +204 -0
  607. data/ext/third_party/asio/asio/src/Makefile.msc +497 -0
  608. data/ext/third_party/asio/asio/src/asio.cpp +11 -0
  609. data/ext/third_party/asio/asio/src/asio_ssl.cpp +11 -0
  610. data/ext/third_party/asio/asio/src/doc/.gitignore +5 -0
  611. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +62 -0
  612. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  613. data/ext/third_party/asio/asio/src/doc/asio.qbk +127 -0
  614. data/ext/third_party/asio/asio/src/doc/asioref.sty +90 -0
  615. data/ext/third_party/asio/asio/src/doc/asioref.xsl +94 -0
  616. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +5 -0
  617. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +22 -0
  618. data/ext/third_party/asio/asio/src/doc/examples.qbk +564 -0
  619. data/ext/third_party/asio/asio/src/doc/history.qbk +1794 -0
  620. data/ext/third_party/asio/asio/src/doc/index.xml +13 -0
  621. data/ext/third_party/asio/asio/src/doc/makepdf.pl +26 -0
  622. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +479 -0
  623. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +3 -0
  624. data/ext/third_party/asio/asio/src/doc/overview.qbk +103 -0
  625. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +89 -0
  626. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +185 -0
  627. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +78 -0
  628. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  629. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +78 -0
  630. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  631. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +106 -0
  632. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +270 -0
  633. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +163 -0
  634. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +88 -0
  635. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +51 -0
  636. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +97 -0
  637. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +271 -0
  638. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +220 -0
  639. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +305 -0
  640. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +72 -0
  641. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +118 -0
  642. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +94 -0
  643. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +152 -0
  644. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +100 -0
  645. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  646. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +149 -0
  647. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +54 -0
  648. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +44 -0
  649. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +45 -0
  650. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +44 -0
  651. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +102 -0
  652. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +124 -0
  653. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +114 -0
  654. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +62 -0
  655. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +67 -0
  656. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  657. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +67 -0
  658. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +52 -0
  659. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +126 -0
  660. data/ext/third_party/asio/asio/src/doc/project-root.jam +1 -0
  661. data/ext/third_party/asio/asio/src/doc/quickref.xml +561 -0
  662. data/ext/third_party/asio/asio/src/doc/reference.dox +264 -0
  663. data/ext/third_party/asio/asio/src/doc/reference.qbk +125973 -0
  664. data/ext/third_party/asio/asio/src/doc/reference.xsl +1831 -0
  665. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +68 -0
  666. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +72 -0
  667. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +25 -0
  668. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +56 -0
  669. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +57 -0
  670. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +50 -0
  671. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +48 -0
  672. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +55 -0
  673. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +42 -0
  674. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +63 -0
  675. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +34 -0
  676. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +72 -0
  677. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +53 -0
  678. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +16 -0
  679. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +93 -0
  680. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +94 -0
  681. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +97 -0
  682. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +30 -0
  683. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +36 -0
  684. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +141 -0
  685. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +33 -0
  686. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +67 -0
  687. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +64 -0
  688. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +72 -0
  689. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +47 -0
  690. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +34 -0
  691. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +62 -0
  692. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +81 -0
  693. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +65 -0
  694. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +61 -0
  695. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +54 -0
  696. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +19 -0
  697. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +56 -0
  698. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +82 -0
  699. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +79 -0
  700. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +82 -0
  701. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +40 -0
  702. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +33 -0
  703. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +54 -0
  704. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +72 -0
  705. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +79 -0
  706. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +49 -0
  707. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +49 -0
  708. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +41 -0
  709. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +39 -0
  710. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +72 -0
  711. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +72 -0
  712. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +52 -0
  713. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +79 -0
  714. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +300 -0
  715. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +39 -0
  716. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +34 -0
  717. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +37 -0
  718. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +7 -0
  719. data/ext/third_party/asio/asio/src/doc/tutorial.dox +226 -0
  720. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +2387 -0
  721. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +437 -0
  722. data/ext/third_party/asio/asio/src/doc/using.qbk +309 -0
  723. data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +251 -0
  724. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +10 -0
  725. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +285 -0
  726. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +10 -0
  727. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +131 -0
  728. data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +11 -0
  729. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +177 -0
  730. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +93 -0
  731. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +249 -0
  732. data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +204 -0
  733. data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +11 -0
  734. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +137 -0
  735. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +92 -0
  736. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +59 -0
  737. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +79 -0
  738. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +59 -0
  739. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +53 -0
  740. data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +11 -0
  741. data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +190 -0
  742. data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +161 -0
  743. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +10 -0
  744. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +204 -0
  745. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +106 -0
  746. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +28 -0
  747. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +49 -0
  748. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +91 -0
  749. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +175 -0
  750. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +11 -0
  751. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +99 -0
  752. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +83 -0
  753. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +38 -0
  754. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +44 -0
  755. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +28 -0
  756. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +44 -0
  757. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +46 -0
  758. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +27 -0
  759. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +256 -0
  760. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +64 -0
  761. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +34 -0
  762. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +122 -0
  763. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +46 -0
  764. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +315 -0
  765. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +95 -0
  766. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +94 -0
  767. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +69 -0
  768. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +11 -0
  769. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +93 -0
  770. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +75 -0
  771. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +28 -0
  772. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +69 -0
  773. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +58 -0
  774. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +46 -0
  775. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +46 -0
  776. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +27 -0
  777. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +256 -0
  778. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +64 -0
  779. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +34 -0
  780. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +122 -0
  781. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +46 -0
  782. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +315 -0
  783. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +95 -0
  784. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +77 -0
  785. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +68 -0
  786. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +11 -0
  787. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +94 -0
  788. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +78 -0
  789. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +28 -0
  790. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +46 -0
  791. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +46 -0
  792. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +27 -0
  793. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +256 -0
  794. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +64 -0
  795. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +34 -0
  796. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +122 -0
  797. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +46 -0
  798. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +315 -0
  799. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +95 -0
  800. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +89 -0
  801. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +70 -0
  802. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +11 -0
  803. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +122 -0
  804. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +44 -0
  805. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +28 -0
  806. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +58 -0
  807. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +46 -0
  808. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +27 -0
  809. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +256 -0
  810. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +64 -0
  811. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +46 -0
  812. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +226 -0
  813. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +78 -0
  814. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +122 -0
  815. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +73 -0
  816. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +10 -0
  817. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +94 -0
  818. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +102 -0
  819. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +163 -0
  820. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +10 -0
  821. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +171 -0
  822. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +11 -0
  823. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +44 -0
  824. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +51 -0
  825. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +91 -0
  826. data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +13 -0
  827. data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +141 -0
  828. data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +62 -0
  829. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +61 -0
  830. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +141 -0
  831. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +11 -0
  832. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +93 -0
  833. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +98 -0
  834. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +10 -0
  835. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +240 -0
  836. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +11 -0
  837. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +192 -0
  838. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +156 -0
  839. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +187 -0
  840. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +11 -0
  841. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +125 -0
  842. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +188 -0
  843. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +123 -0
  844. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +50 -0
  845. data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +11 -0
  846. data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +83 -0
  847. data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +97 -0
  848. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +24 -0
  849. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +11 -0
  850. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +145 -0
  851. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +10 -0
  852. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +144 -0
  853. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +94 -0
  854. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +12 -0
  855. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +122 -0
  856. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +89 -0
  857. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +11 -0
  858. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +8 -0
  859. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +49 -0
  860. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +157 -0
  861. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +8 -0
  862. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +170 -0
  863. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +71 -0
  864. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +11 -0
  865. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +311 -0
  866. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +191 -0
  867. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +200 -0
  868. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +154 -0
  869. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +433 -0
  870. data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +10 -0
  871. data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +106 -0
  872. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +10 -0
  873. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +57 -0
  874. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +10 -0
  875. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +50 -0
  876. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +10 -0
  877. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +119 -0
  878. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +10 -0
  879. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +52 -0
  880. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +10 -0
  881. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +53 -0
  882. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +10 -0
  883. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +89 -0
  884. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +10 -0
  885. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +160 -0
  886. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +500 -0
  887. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +48 -0
  888. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +10 -0
  889. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +24 -0
  890. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +10 -0
  891. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +29 -0
  892. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +10 -0
  893. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +43 -0
  894. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +10 -0
  895. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +54 -0
  896. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +10 -0
  897. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +80 -0
  898. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +378 -0
  899. data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +10 -0
  900. data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +177 -0
  901. data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +161 -0
  902. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +10 -0
  903. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +255 -0
  904. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +10 -0
  905. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +122 -0
  906. data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +11 -0
  907. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +167 -0
  908. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +91 -0
  909. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +227 -0
  910. data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +11 -0
  911. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +114 -0
  912. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +82 -0
  913. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +55 -0
  914. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +74 -0
  915. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +58 -0
  916. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +52 -0
  917. data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +5 -0
  918. data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +286 -0
  919. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +54 -0
  920. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +54 -0
  921. data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +328 -0
  922. data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +299 -0
  923. data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +174 -0
  924. data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +11 -0
  925. data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +189 -0
  926. data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +162 -0
  927. data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +11 -0
  928. data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +94 -0
  929. data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +201 -0
  930. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +11 -0
  931. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +94 -0
  932. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +79 -0
  933. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +40 -0
  934. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +48 -0
  935. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +28 -0
  936. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +43 -0
  937. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +45 -0
  938. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +27 -0
  939. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +255 -0
  940. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +64 -0
  941. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +34 -0
  942. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +121 -0
  943. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +47 -0
  944. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +315 -0
  945. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +96 -0
  946. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +94 -0
  947. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +64 -0
  948. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +10 -0
  949. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +202 -0
  950. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +11 -0
  951. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +91 -0
  952. data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +13 -0
  953. data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +129 -0
  954. data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +61 -0
  955. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +60 -0
  956. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +121 -0
  957. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +11 -0
  958. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +88 -0
  959. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +91 -0
  960. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +10 -0
  961. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +212 -0
  962. data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +10 -0
  963. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +113 -0
  964. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +131 -0
  965. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +192 -0
  966. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +207 -0
  967. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +243 -0
  968. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +302 -0
  969. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +222 -0
  970. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +217 -0
  971. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +10 -0
  972. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +143 -0
  973. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +93 -0
  974. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +12 -0
  975. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +111 -0
  976. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +84 -0
  977. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +11 -0
  978. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +8 -0
  979. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +49 -0
  980. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +165 -0
  981. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +8 -0
  982. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +143 -0
  983. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +71 -0
  984. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +11 -0
  985. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +311 -0
  986. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +192 -0
  987. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +197 -0
  988. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +155 -0
  989. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +433 -0
  990. data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +10 -0
  991. data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +106 -0
  992. data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +64 -0
  993. data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +11 -0
  994. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +117 -0
  995. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +83 -0
  996. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +55 -0
  997. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +77 -0
  998. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +59 -0
  999. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +53 -0
  1000. data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +6 -0
  1001. data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +281 -0
  1002. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +47 -0
  1003. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +68 -0
  1004. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +54 -0
  1005. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +53 -0
  1006. data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +327 -0
  1007. data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +294 -0
  1008. data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +173 -0
  1009. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +11 -0
  1010. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +91 -0
  1011. data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +10 -0
  1012. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +113 -0
  1013. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +131 -0
  1014. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +186 -0
  1015. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +201 -0
  1016. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +238 -0
  1017. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +298 -0
  1018. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +219 -0
  1019. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +212 -0
  1020. data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +8 -0
  1021. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +225 -0
  1022. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +76 -0
  1023. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +78 -0
  1024. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +107 -0
  1025. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +85 -0
  1026. data/ext/third_party/asio/asio/src/tests/.gitignore +11 -0
  1027. data/ext/third_party/asio/asio/src/tests/Makefile.am +432 -0
  1028. data/ext/third_party/asio/asio/src/tests/latency/.gitignore +11 -0
  1029. data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +52 -0
  1030. data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +53 -0
  1031. data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +124 -0
  1032. data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +114 -0
  1033. data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +104 -0
  1034. data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +125 -0
  1035. data/ext/third_party/asio/asio/src/tests/performance/.gitignore +11 -0
  1036. data/ext/third_party/asio/asio/src/tests/performance/client.cpp +286 -0
  1037. data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +112 -0
  1038. data/ext/third_party/asio/asio/src/tests/performance/server.cpp +233 -0
  1039. data/ext/third_party/asio/asio/src/tests/unit/.gitignore +75 -0
  1040. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +415 -0
  1041. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +94 -0
  1042. data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +54 -0
  1043. data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +32 -0
  1044. data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +49 -0
  1045. data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +25 -0
  1046. data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +25 -0
  1047. data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +25 -0
  1048. data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +25 -0
  1049. data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +25 -0
  1050. data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +25 -0
  1051. data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +25 -0
  1052. data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +25 -0
  1053. data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +26 -0
  1054. data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +25 -0
  1055. data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +25 -0
  1056. data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +25 -0
  1057. data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +25 -0
  1058. data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +25 -0
  1059. data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +25 -0
  1060. data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +25 -0
  1061. data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +830 -0
  1062. data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +338 -0
  1063. data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +364 -0
  1064. data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +353 -0
  1065. data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +292 -0
  1066. data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +25 -0
  1067. data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +25 -0
  1068. data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +185 -0
  1069. data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +1190 -0
  1070. data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +112 -0
  1071. data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +392 -0
  1072. data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +25 -0
  1073. data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +25 -0
  1074. data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +25 -0
  1075. data/ext/third_party/asio/asio/src/tests/unit/error.cpp +89 -0
  1076. data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +25 -0
  1077. data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +25 -0
  1078. data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +25 -0
  1079. data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +14 -0
  1080. data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +25 -0
  1081. data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +263 -0
  1082. data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +263 -0
  1083. data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +205 -0
  1084. data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +248 -0
  1085. data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +30 -0
  1086. data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +362 -0
  1087. data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +325 -0
  1088. data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +27 -0
  1089. data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +144 -0
  1090. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +25 -0
  1091. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +25 -0
  1092. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +25 -0
  1093. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +25 -0
  1094. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +25 -0
  1095. data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +55 -0
  1096. data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +577 -0
  1097. data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +363 -0
  1098. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +314 -0
  1099. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +238 -0
  1100. data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +25 -0
  1101. data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +1346 -0
  1102. data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +673 -0
  1103. data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +171 -0
  1104. data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +135 -0
  1105. data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +129 -0
  1106. data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +129 -0
  1107. data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +13 -0
  1108. data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +25 -0
  1109. data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +76 -0
  1110. data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +242 -0
  1111. data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +219 -0
  1112. data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +25 -0
  1113. data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +25 -0
  1114. data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +14 -0
  1115. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +25 -0
  1116. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +25 -0
  1117. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +25 -0
  1118. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +25 -0
  1119. data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +183 -0
  1120. data/ext/third_party/asio/asio/src/tests/unit/post.cpp +25 -0
  1121. data/ext/third_party/asio/asio/src/tests/unit/read.cpp +4997 -0
  1122. data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +7502 -0
  1123. data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +1658 -0
  1124. data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +25 -0
  1125. data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +173 -0
  1126. data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +99 -0
  1127. data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +95 -0
  1128. data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +650 -0
  1129. data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +15 -0
  1130. data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +25 -0
  1131. data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +25 -0
  1132. data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +25 -0
  1133. data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +25 -0
  1134. data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +25 -0
  1135. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +191 -0
  1136. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +25 -0
  1137. data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +30 -0
  1138. data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +263 -0
  1139. data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +62 -0
  1140. data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +30 -0
  1141. data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +30 -0
  1142. data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +399 -0
  1143. data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +25 -0
  1144. data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +25 -0
  1145. data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +25 -0
  1146. data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +17 -0
  1147. data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +30 -0
  1148. data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +30 -0
  1149. data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +30 -0
  1150. data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +30 -0
  1151. data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +30 -0
  1152. data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +33 -0
  1153. data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +30 -0
  1154. data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +30 -0
  1155. data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +175 -0
  1156. data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +25 -0
  1157. data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +670 -0
  1158. data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +25 -0
  1159. data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +25 -0
  1160. data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +18 -0
  1161. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +25 -0
  1162. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +25 -0
  1163. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +25 -0
  1164. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +25 -0
  1165. data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +130 -0
  1166. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +26 -0
  1167. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +107 -0
  1168. data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +155 -0
  1169. data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +148 -0
  1170. data/ext/third_party/asio/asio/src/tests/unit/write.cpp +4904 -0
  1171. data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +7563 -0
  1172. data/ext/third_party/asio/asio/src/tools/handlerviz.pl +299 -0
  1173. data/ext/third_party/asio/asio/tsify.pl +574 -0
  1174. data/ext/third_party/gsl/.clang-format +34 -0
  1175. data/ext/third_party/gsl/.github/workflows/main.yml +94 -0
  1176. data/ext/third_party/gsl/.gitignore +16 -0
  1177. data/ext/third_party/gsl/.travis.yml +551 -0
  1178. data/ext/third_party/gsl/CMakeLists.txt +119 -0
  1179. data/ext/third_party/gsl/CMakeSettings.json +18 -0
  1180. data/ext/third_party/gsl/CONTRIBUTING.md +29 -0
  1181. data/ext/third_party/gsl/GSL.natvis +98 -0
  1182. data/ext/third_party/gsl/LICENSE +21 -0
  1183. data/ext/third_party/gsl/README.md +124 -0
  1184. data/ext/third_party/gsl/ThirdPartyNotices.txt +41 -0
  1185. data/ext/third_party/gsl/appveyor.yml +128 -0
  1186. data/ext/third_party/gsl/include/gsl/gsl +29 -0
  1187. data/ext/third_party/gsl/include/gsl/gsl_algorithm +61 -0
  1188. data/ext/third_party/gsl/include/gsl/gsl_assert +133 -0
  1189. data/ext/third_party/gsl/include/gsl/gsl_byte +209 -0
  1190. data/ext/third_party/gsl/include/gsl/gsl_util +171 -0
  1191. data/ext/third_party/gsl/include/gsl/multi_span +2273 -0
  1192. data/ext/third_party/gsl/include/gsl/pointers +301 -0
  1193. data/ext/third_party/gsl/include/gsl/span +764 -0
  1194. data/ext/third_party/gsl/include/gsl/span_ext +198 -0
  1195. data/ext/third_party/gsl/include/gsl/string_span +716 -0
  1196. data/ext/third_party/gsl/tests/CMakeLists.txt +267 -0
  1197. data/ext/third_party/gsl/tests/CMakeLists.txt.in +14 -0
  1198. data/ext/third_party/gsl/tests/algorithm_tests.cpp +227 -0
  1199. data/ext/third_party/gsl/tests/assertion_tests.cpp +61 -0
  1200. data/ext/third_party/gsl/tests/at_tests.cpp +135 -0
  1201. data/ext/third_party/gsl/tests/bounds_tests.cpp +102 -0
  1202. data/ext/third_party/gsl/tests/byte_tests.cpp +129 -0
  1203. data/ext/third_party/gsl/tests/multi_span_tests.cpp +1866 -0
  1204. data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +48 -0
  1205. data/ext/third_party/gsl/tests/notnull_tests.cpp +535 -0
  1206. data/ext/third_party/gsl/tests/owner_tests.cpp +43 -0
  1207. data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +1021 -0
  1208. data/ext/third_party/gsl/tests/span_ext_tests.cpp +360 -0
  1209. data/ext/third_party/gsl/tests/span_tests.cpp +1244 -0
  1210. data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +190 -0
  1211. data/ext/third_party/gsl/tests/strided_span_tests.cpp +790 -0
  1212. data/ext/third_party/gsl/tests/string_span_tests.cpp +1217 -0
  1213. data/ext/third_party/gsl/tests/utils_tests.cpp +129 -0
  1214. data/ext/third_party/http_parser/.gitignore +30 -0
  1215. data/ext/third_party/http_parser/.mailmap +8 -0
  1216. data/ext/third_party/http_parser/.travis.yml +13 -0
  1217. data/ext/third_party/http_parser/AUTHORS +68 -0
  1218. data/ext/third_party/http_parser/LICENSE-MIT +19 -0
  1219. data/ext/third_party/http_parser/README.md +246 -0
  1220. data/ext/third_party/http_parser/bench.c +128 -0
  1221. data/ext/third_party/http_parser/contrib/parsertrace.c +157 -0
  1222. data/ext/third_party/http_parser/contrib/url_parser.c +47 -0
  1223. data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +26 -0
  1224. data/ext/third_party/http_parser/fuzzers/fuzz_url.c +14 -0
  1225. data/ext/third_party/http_parser/http_parser.c +2568 -0
  1226. data/ext/third_party/http_parser/http_parser.gyp +111 -0
  1227. data/ext/third_party/http_parser/http_parser.h +447 -0
  1228. data/ext/third_party/http_parser/test.c +4600 -0
  1229. data/ext/third_party/json/.appveyor.yml +44 -0
  1230. data/ext/third_party/json/.clang-format +84 -0
  1231. data/ext/third_party/json/.conan/build.py +80 -0
  1232. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +12 -0
  1233. data/ext/third_party/json/.conan/test_package/conanfile.py +24 -0
  1234. data/ext/third_party/json/.conan/test_package/test_package.cpp +16 -0
  1235. data/ext/third_party/json/.gitignore +3 -0
  1236. data/ext/third_party/json/.travis.yml +173 -0
  1237. data/ext/third_party/json/CMakeLists.txt +44 -0
  1238. data/ext/third_party/json/LICENSE +21 -0
  1239. data/ext/third_party/json/LICENSE.double-conversion +32 -0
  1240. data/ext/third_party/json/LICENSE.itoa +19 -0
  1241. data/ext/third_party/json/LICENSE.ryu +201 -0
  1242. data/ext/third_party/json/README.md +149 -0
  1243. data/ext/third_party/json/conanfile.py +28 -0
  1244. data/ext/third_party/json/contrib/nlohmann.cpp +48 -0
  1245. data/ext/third_party/json/contrib/nlohmann/from_value.hpp +62 -0
  1246. data/ext/third_party/json/contrib/nlohmann/json.hpp +18928 -0
  1247. data/ext/third_party/json/contrib/nlohmann/to_value.hpp +109 -0
  1248. data/ext/third_party/json/doc/Advanced-Use-Cases.md +83 -0
  1249. data/ext/third_party/json/doc/Batteries-Included.md +212 -0
  1250. data/ext/third_party/json/doc/Binding-Traits.md +319 -0
  1251. data/ext/third_party/json/doc/Changelog.md +31 -0
  1252. data/ext/third_party/json/doc/Common-Use-Cases.md +148 -0
  1253. data/ext/third_party/json/doc/Design-Decisions.md +36 -0
  1254. data/ext/third_party/json/doc/Events-Interface.md +140 -0
  1255. data/ext/third_party/json/doc/Getting-Started.md +19 -0
  1256. data/ext/third_party/json/doc/Instance-Sharing.md +163 -0
  1257. data/ext/third_party/json/doc/Interoperability.md +75 -0
  1258. data/ext/third_party/json/doc/Overview.md +24 -0
  1259. data/ext/third_party/json/doc/Overview.png +0 -0
  1260. data/ext/third_party/json/doc/Parser-Interface.md +84 -0
  1261. data/ext/third_party/json/doc/README.md +78 -0
  1262. data/ext/third_party/json/doc/Scratchpad.md +25 -0
  1263. data/ext/third_party/json/doc/Type-Traits.md +364 -0
  1264. data/ext/third_party/json/doc/Types.png +0 -0
  1265. data/ext/third_party/json/doc/Value-Class.md +525 -0
  1266. data/ext/third_party/json/include/tao/json.hpp +45 -0
  1267. data/ext/third_party/json/include/tao/json/basic_value.hpp +941 -0
  1268. data/ext/third_party/json/include/tao/json/binary.hpp +103 -0
  1269. data/ext/third_party/json/include/tao/json/binary_view.hpp +31 -0
  1270. data/ext/third_party/json/include/tao/json/binding.hpp +71 -0
  1271. data/ext/third_party/json/include/tao/json/binding/constant.hpp +232 -0
  1272. data/ext/third_party/json/include/tao/json/binding/element.hpp +182 -0
  1273. data/ext/third_party/json/include/tao/json/binding/factory.hpp +250 -0
  1274. data/ext/third_party/json/include/tao/json/binding/for_nothing_value.hpp +17 -0
  1275. data/ext/third_party/json/include/tao/json/binding/for_unknown_key.hpp +17 -0
  1276. data/ext/third_party/json/include/tao/json/binding/inherit.hpp +14 -0
  1277. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +103 -0
  1278. data/ext/third_party/json/include/tao/json/binding/internal/inherit.hpp +45 -0
  1279. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +267 -0
  1280. data/ext/third_party/json/include/tao/json/binding/internal/type_key.hpp +54 -0
  1281. data/ext/third_party/json/include/tao/json/binding/member.hpp +32 -0
  1282. data/ext/third_party/json/include/tao/json/binding/member_kind.hpp +17 -0
  1283. data/ext/third_party/json/include/tao/json/binding/versions.hpp +127 -0
  1284. data/ext/third_party/json/include/tao/json/cbor.hpp +18 -0
  1285. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +34 -0
  1286. data/ext/third_party/json/include/tao/json/cbor/consume_string.hpp +32 -0
  1287. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +27 -0
  1288. data/ext/third_party/json/include/tao/json/cbor/events/from_input.hpp +43 -0
  1289. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +37 -0
  1290. data/ext/third_party/json/include/tao/json/cbor/events/to_stream.hpp +161 -0
  1291. data/ext/third_party/json/include/tao/json/cbor/events/to_string.hpp +31 -0
  1292. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +33 -0
  1293. data/ext/third_party/json/include/tao/json/cbor/from_input.hpp +33 -0
  1294. data/ext/third_party/json/include/tao/json/cbor/from_string.hpp +32 -0
  1295. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +417 -0
  1296. data/ext/third_party/json/include/tao/json/cbor/internal/major.hpp +28 -0
  1297. data/ext/third_party/json/include/tao/json/cbor/parts_parser.hpp +392 -0
  1298. data/ext/third_party/json/include/tao/json/cbor/to_stream.hpp +27 -0
  1299. data/ext/third_party/json/include/tao/json/cbor/to_string.hpp +28 -0
  1300. data/ext/third_party/json/include/tao/json/consume.hpp +43 -0
  1301. data/ext/third_party/json/include/tao/json/consume_file.hpp +33 -0
  1302. data/ext/third_party/json/include/tao/json/consume_string.hpp +31 -0
  1303. data/ext/third_party/json/include/tao/json/contrib/array_traits.hpp +43 -0
  1304. data/ext/third_party/json/include/tao/json/contrib/deque_traits.hpp +41 -0
  1305. data/ext/third_party/json/include/tao/json/contrib/diff.hpp +106 -0
  1306. data/ext/third_party/json/include/tao/json/contrib/get.hpp +152 -0
  1307. data/ext/third_party/json/include/tao/json/contrib/internal/array_traits.hpp +92 -0
  1308. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +69 -0
  1309. data/ext/third_party/json/include/tao/json/contrib/internal/object_traits.hpp +105 -0
  1310. data/ext/third_party/json/include/tao/json/contrib/internal/type_traits.hpp +36 -0
  1311. data/ext/third_party/json/include/tao/json/contrib/list_traits.hpp +41 -0
  1312. data/ext/third_party/json/include/tao/json/contrib/map_traits.hpp +43 -0
  1313. data/ext/third_party/json/include/tao/json/contrib/multimap_traits.hpp +43 -0
  1314. data/ext/third_party/json/include/tao/json/contrib/multiset_traits.hpp +41 -0
  1315. data/ext/third_party/json/include/tao/json/contrib/pair_traits.hpp +21 -0
  1316. data/ext/third_party/json/include/tao/json/contrib/patch.hpp +105 -0
  1317. data/ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp +59 -0
  1318. data/ext/third_party/json/include/tao/json/contrib/position.hpp +166 -0
  1319. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +115 -0
  1320. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +1851 -0
  1321. data/ext/third_party/json/include/tao/json/contrib/set_traits.hpp +41 -0
  1322. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +90 -0
  1323. data/ext/third_party/json/include/tao/json/contrib/traits.hpp +121 -0
  1324. data/ext/third_party/json/include/tao/json/contrib/tuple_traits.hpp +51 -0
  1325. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +89 -0
  1326. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +43 -0
  1327. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +41 -0
  1328. data/ext/third_party/json/include/tao/json/contrib/vector_bool_traits.hpp +45 -0
  1329. data/ext/third_party/json/include/tao/json/contrib/vector_traits.hpp +51 -0
  1330. data/ext/third_party/json/include/tao/json/events.hpp +47 -0
  1331. data/ext/third_party/json/include/tao/json/events/apply.hpp +20 -0
  1332. data/ext/third_party/json/include/tao/json/events/binary_to_base64.hpp +26 -0
  1333. data/ext/third_party/json/include/tao/json/events/binary_to_base64url.hpp +28 -0
  1334. data/ext/third_party/json/include/tao/json/events/binary_to_exception.hpp +27 -0
  1335. data/ext/third_party/json/include/tao/json/events/binary_to_hex.hpp +26 -0
  1336. data/ext/third_party/json/include/tao/json/events/compare.hpp +265 -0
  1337. data/ext/third_party/json/include/tao/json/events/debug.hpp +145 -0
  1338. data/ext/third_party/json/include/tao/json/events/discard.hpp +43 -0
  1339. data/ext/third_party/json/include/tao/json/events/from_file.hpp +28 -0
  1340. data/ext/third_party/json/include/tao/json/events/from_input.hpp +45 -0
  1341. data/ext/third_party/json/include/tao/json/events/from_stream.hpp +33 -0
  1342. data/ext/third_party/json/include/tao/json/events/from_string.hpp +38 -0
  1343. data/ext/third_party/json/include/tao/json/events/from_value.hpp +202 -0
  1344. data/ext/third_party/json/include/tao/json/events/hash.hpp +174 -0
  1345. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +50 -0
  1346. data/ext/third_party/json/include/tao/json/events/invalid_string_to_exception.hpp +49 -0
  1347. data/ext/third_party/json/include/tao/json/events/invalid_string_to_hex.hpp +48 -0
  1348. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +62 -0
  1349. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +57 -0
  1350. data/ext/third_party/json/include/tao/json/events/limit_nesting_depth.hpp +82 -0
  1351. data/ext/third_party/json/include/tao/json/events/limit_value_count.hpp +46 -0
  1352. data/ext/third_party/json/include/tao/json/events/non_finite_to_exception.hpp +31 -0
  1353. data/ext/third_party/json/include/tao/json/events/non_finite_to_null.hpp +32 -0
  1354. data/ext/third_party/json/include/tao/json/events/non_finite_to_string.hpp +40 -0
  1355. data/ext/third_party/json/include/tao/json/events/prefer_signed.hpp +32 -0
  1356. data/ext/third_party/json/include/tao/json/events/prefer_unsigned.hpp +32 -0
  1357. data/ext/third_party/json/include/tao/json/events/produce.hpp +22 -0
  1358. data/ext/third_party/json/include/tao/json/events/ref.hpp +111 -0
  1359. data/ext/third_party/json/include/tao/json/events/statistics.hpp +112 -0
  1360. data/ext/third_party/json/include/tao/json/events/tee.hpp +386 -0
  1361. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +172 -0
  1362. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +142 -0
  1363. data/ext/third_party/json/include/tao/json/events/to_string.hpp +33 -0
  1364. data/ext/third_party/json/include/tao/json/events/to_value.hpp +137 -0
  1365. data/ext/third_party/json/include/tao/json/events/transformer.hpp +70 -0
  1366. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +411 -0
  1367. data/ext/third_party/json/include/tao/json/events/validate_keys.hpp +51 -0
  1368. data/ext/third_party/json/include/tao/json/events/virtual_base.hpp +192 -0
  1369. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +170 -0
  1370. data/ext/third_party/json/include/tao/json/external/double.hpp +1313 -0
  1371. data/ext/third_party/json/include/tao/json/external/itoa.hpp +149 -0
  1372. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +53 -0
  1373. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +127 -0
  1374. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +23 -0
  1375. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +31 -0
  1376. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +32 -0
  1377. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +51 -0
  1378. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +25 -0
  1379. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +29 -0
  1380. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +21 -0
  1381. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +21 -0
  1382. data/ext/third_party/json/include/tao/json/external/pegtl/apply_mode.hpp +19 -0
  1383. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +51 -0
  1384. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +67 -0
  1385. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +212 -0
  1386. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +38 -0
  1387. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +53 -0
  1388. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +62 -0
  1389. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +36 -0
  1390. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +50 -0
  1391. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +61 -0
  1392. data/ext/third_party/json/include/tao/json/external/pegtl/config.hpp +11 -0
  1393. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/abnf.hpp +35 -0
  1394. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +67 -0
  1395. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +54 -0
  1396. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +253 -0
  1397. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +68 -0
  1398. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +200 -0
  1399. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +200 -0
  1400. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +105 -0
  1401. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +55 -0
  1402. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +446 -0
  1403. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/json.hpp +88 -0
  1404. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/json_pointer.hpp +33 -0
  1405. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +561 -0
  1406. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +104 -0
  1407. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +225 -0
  1408. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +86 -0
  1409. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +62 -0
  1410. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +44 -0
  1411. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/to_string.hpp +38 -0
  1412. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +158 -0
  1413. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +199 -0
  1414. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +106 -0
  1415. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +33 -0
  1416. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +35 -0
  1417. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +37 -0
  1418. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +39 -0
  1419. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +39 -0
  1420. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +35 -0
  1421. data/ext/third_party/json/include/tao/json/external/pegtl/eol.hpp +37 -0
  1422. data/ext/third_party/json/include/tao/json/external/pegtl/eol_pair.hpp +18 -0
  1423. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +44 -0
  1424. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +44 -0
  1425. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +107 -0
  1426. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +18 -0
  1427. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +18 -0
  1428. data/ext/third_party/json/include/tao/json/external/pegtl/internal/always_false.hpp +21 -0
  1429. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +58 -0
  1430. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +53 -0
  1431. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +50 -0
  1432. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0_single.hpp +34 -0
  1433. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +34 -0
  1434. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +53 -0
  1435. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +31 -0
  1436. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +31 -0
  1437. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +45 -0
  1438. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +29 -0
  1439. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +36 -0
  1440. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +44 -0
  1441. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +32 -0
  1442. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +32 -0
  1443. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +32 -0
  1444. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +49 -0
  1445. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstring_reader.hpp +40 -0
  1446. data/ext/third_party/json/include/tao/json/external/pegtl/internal/demangle.hpp +140 -0
  1447. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +44 -0
  1448. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +33 -0
  1449. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +23 -0
  1450. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +187 -0
  1451. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +44 -0
  1452. data/ext/third_party/json/include/tao/json/external/pegtl/internal/endian.hpp +62 -0
  1453. data/ext/third_party/json/include/tao/json/external/pegtl/internal/endian_gcc.hpp +206 -0
  1454. data/ext/third_party/json/include/tao/json/external/pegtl/internal/endian_win.hpp +106 -0
  1455. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +31 -0
  1456. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +31 -0
  1457. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +32 -0
  1458. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +83 -0
  1459. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +219 -0
  1460. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +72 -0
  1461. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +114 -0
  1462. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +25 -0
  1463. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +25 -0
  1464. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +56 -0
  1465. data/ext/third_party/json/include/tao/json/external/pegtl/internal/identifier.hpp +22 -0
  1466. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +53 -0
  1467. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +48 -0
  1468. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +19 -0
  1469. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +51 -0
  1470. data/ext/third_party/json/include/tao/json/external/pegtl/internal/input_pair.hpp +29 -0
  1471. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +40 -0
  1472. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +72 -0
  1473. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +52 -0
  1474. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +37 -0
  1475. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +32 -0
  1476. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list.hpp +19 -0
  1477. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_must.hpp +20 -0
  1478. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +20 -0
  1479. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +22 -0
  1480. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +82 -0
  1481. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +25 -0
  1482. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +23 -0
  1483. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +72 -0
  1484. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +53 -0
  1485. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +44 -0
  1486. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +57 -0
  1487. data/ext/third_party/json/include/tao/json/external/pegtl/internal/pad.hpp +19 -0
  1488. data/ext/third_party/json/include/tao/json/external/pegtl/internal/pad_opt.hpp +20 -0
  1489. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +32 -0
  1490. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_mask_uint.hpp +54 -0
  1491. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_mask_uint8.hpp +34 -0
  1492. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_uint.hpp +45 -0
  1493. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_uint8.hpp +33 -0
  1494. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf16.hpp +54 -0
  1495. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf32.hpp +43 -0
  1496. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +90 -0
  1497. data/ext/third_party/json/include/tao/json/external/pegtl/internal/pegtl_string.hpp +90 -0
  1498. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +53 -0
  1499. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +53 -0
  1500. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +51 -0
  1501. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +93 -0
  1502. data/ext/third_party/json/include/tao/json/external/pegtl/internal/read_uint.hpp +77 -0
  1503. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +69 -0
  1504. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +66 -0
  1505. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min.hpp +20 -0
  1506. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +79 -0
  1507. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +46 -0
  1508. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +42 -0
  1509. data/ext/third_party/json/include/tao/json/external/pegtl/internal/result_on_found.hpp +19 -0
  1510. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +61 -0
  1511. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +73 -0
  1512. data/ext/third_party/json/include/tao/json/external/pegtl/internal/skip_control.hpp +25 -0
  1513. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +60 -0
  1514. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +47 -0
  1515. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star_must.hpp +19 -0
  1516. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +49 -0
  1517. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +58 -0
  1518. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +32 -0
  1519. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +64 -0
  1520. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +84 -0
  1521. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +33 -0
  1522. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +73 -0
  1523. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +381 -0
  1524. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +79 -0
  1525. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +87 -0
  1526. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +20 -0
  1527. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +53 -0
  1528. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +69 -0
  1529. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +75 -0
  1530. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +74 -0
  1531. data/ext/third_party/json/include/tao/json/external/pegtl/require_apply.hpp +16 -0
  1532. data/ext/third_party/json/include/tao/json/external/pegtl/require_apply0.hpp +16 -0
  1533. data/ext/third_party/json/include/tao/json/external/pegtl/rewind_mode.hpp +20 -0
  1534. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +67 -0
  1535. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +66 -0
  1536. data/ext/third_party/json/include/tao/json/external/pegtl/tracking_mode.hpp +19 -0
  1537. data/ext/third_party/json/include/tao/json/external/pegtl/uint16.hpp +62 -0
  1538. data/ext/third_party/json/include/tao/json/external/pegtl/uint32.hpp +62 -0
  1539. data/ext/third_party/json/include/tao/json/external/pegtl/uint64.hpp +63 -0
  1540. data/ext/third_party/json/include/tao/json/external/pegtl/uint8.hpp +36 -0
  1541. data/ext/third_party/json/include/tao/json/external/pegtl/utf16.hpp +49 -0
  1542. data/ext/third_party/json/include/tao/json/external/pegtl/utf32.hpp +49 -0
  1543. data/ext/third_party/json/include/tao/json/external/pegtl/utf8.hpp +28 -0
  1544. data/ext/third_party/json/include/tao/json/external/pegtl/version.hpp +13 -0
  1545. data/ext/third_party/json/include/tao/json/external/ryu.hpp +1216 -0
  1546. data/ext/third_party/json/include/tao/json/forward.hpp +44 -0
  1547. data/ext/third_party/json/include/tao/json/from_file.hpp +32 -0
  1548. data/ext/third_party/json/include/tao/json/from_input.hpp +32 -0
  1549. data/ext/third_party/json/include/tao/json/from_stream.hpp +45 -0
  1550. data/ext/third_party/json/include/tao/json/from_string.hpp +41 -0
  1551. data/ext/third_party/json/include/tao/json/internal/action.hpp +268 -0
  1552. data/ext/third_party/json/include/tao/json/internal/base64.hpp +55 -0
  1553. data/ext/third_party/json/include/tao/json/internal/base64url.hpp +53 -0
  1554. data/ext/third_party/json/include/tao/json/internal/endian.hpp +60 -0
  1555. data/ext/third_party/json/include/tao/json/internal/endian_gcc.hpp +198 -0
  1556. data/ext/third_party/json/include/tao/json/internal/endian_win.hpp +103 -0
  1557. data/ext/third_party/json/include/tao/json/internal/errors.hpp +85 -0
  1558. data/ext/third_party/json/include/tao/json/internal/escape.hpp +77 -0
  1559. data/ext/third_party/json/include/tao/json/internal/format.hpp +59 -0
  1560. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +229 -0
  1561. data/ext/third_party/json/include/tao/json/internal/hexdump.hpp +31 -0
  1562. data/ext/third_party/json/include/tao/json/internal/identity.hpp +22 -0
  1563. data/ext/third_party/json/include/tao/json/internal/number_state.hpp +80 -0
  1564. data/ext/third_party/json/include/tao/json/internal/number_traits.hpp +267 -0
  1565. data/ext/third_party/json/include/tao/json/internal/pair.hpp +42 -0
  1566. data/ext/third_party/json/include/tao/json/internal/parse_util.hpp +112 -0
  1567. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +218 -0
  1568. data/ext/third_party/json/include/tao/json/internal/single.hpp +40 -0
  1569. data/ext/third_party/json/include/tao/json/internal/string_t.hpp +35 -0
  1570. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +113 -0
  1571. data/ext/third_party/json/include/tao/json/internal/unescape_action.hpp +24 -0
  1572. data/ext/third_party/json/include/tao/json/internal/uri_fragment.hpp +182 -0
  1573. data/ext/third_party/json/include/tao/json/jaxn.hpp +19 -0
  1574. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +34 -0
  1575. data/ext/third_party/json/include/tao/json/jaxn/consume_string.hpp +32 -0
  1576. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +28 -0
  1577. data/ext/third_party/json/include/tao/json/jaxn/events/from_input.hpp +45 -0
  1578. data/ext/third_party/json/include/tao/json/jaxn/events/from_stream.hpp +33 -0
  1579. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +39 -0
  1580. data/ext/third_party/json/include/tao/json/jaxn/events/to_pretty_stream.hpp +69 -0
  1581. data/ext/third_party/json/include/tao/json/jaxn/events/to_stream.hpp +67 -0
  1582. data/ext/third_party/json/include/tao/json/jaxn/events/to_string.hpp +33 -0
  1583. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +33 -0
  1584. data/ext/third_party/json/include/tao/json/jaxn/from_input.hpp +33 -0
  1585. data/ext/third_party/json/include/tao/json/jaxn/from_stream.hpp +48 -0
  1586. data/ext/third_party/json/include/tao/json/jaxn/from_string.hpp +42 -0
  1587. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +355 -0
  1588. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +114 -0
  1589. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +108 -0
  1590. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +375 -0
  1591. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +256 -0
  1592. data/ext/third_party/json/include/tao/json/jaxn/internal/unescape_action.hpp +28 -0
  1593. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +27 -0
  1594. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +263 -0
  1595. data/ext/third_party/json/include/tao/json/jaxn/to_stream.hpp +36 -0
  1596. data/ext/third_party/json/include/tao/json/jaxn/to_string.hpp +33 -0
  1597. data/ext/third_party/json/include/tao/json/message_extension.hpp +49 -0
  1598. data/ext/third_party/json/include/tao/json/msgpack.hpp +18 -0
  1599. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +34 -0
  1600. data/ext/third_party/json/include/tao/json/msgpack/consume_string.hpp +32 -0
  1601. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +27 -0
  1602. data/ext/third_party/json/include/tao/json/msgpack/events/from_input.hpp +43 -0
  1603. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +37 -0
  1604. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +214 -0
  1605. data/ext/third_party/json/include/tao/json/msgpack/events/to_string.hpp +31 -0
  1606. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +33 -0
  1607. data/ext/third_party/json/include/tao/json/msgpack/from_input.hpp +33 -0
  1608. data/ext/third_party/json/include/tao/json/msgpack/from_string.hpp +32 -0
  1609. data/ext/third_party/json/include/tao/json/msgpack/internal/format.hpp +57 -0
  1610. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +249 -0
  1611. data/ext/third_party/json/include/tao/json/msgpack/parts_parser.hpp +311 -0
  1612. data/ext/third_party/json/include/tao/json/msgpack/to_stream.hpp +27 -0
  1613. data/ext/third_party/json/include/tao/json/msgpack/to_string.hpp +28 -0
  1614. data/ext/third_party/json/include/tao/json/operators.hpp +494 -0
  1615. data/ext/third_party/json/include/tao/json/parts_parser.hpp +306 -0
  1616. data/ext/third_party/json/include/tao/json/pointer.hpp +432 -0
  1617. data/ext/third_party/json/include/tao/json/produce.hpp +61 -0
  1618. data/ext/third_party/json/include/tao/json/self_contained.hpp +143 -0
  1619. data/ext/third_party/json/include/tao/json/span.hpp +568 -0
  1620. data/ext/third_party/json/include/tao/json/stream.hpp +38 -0
  1621. data/ext/third_party/json/include/tao/json/to_stream.hpp +42 -0
  1622. data/ext/third_party/json/include/tao/json/to_string.hpp +23 -0
  1623. data/ext/third_party/json/include/tao/json/traits.hpp +971 -0
  1624. data/ext/third_party/json/include/tao/json/type.hpp +112 -0
  1625. data/ext/third_party/json/include/tao/json/ubjson.hpp +18 -0
  1626. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +34 -0
  1627. data/ext/third_party/json/include/tao/json/ubjson/consume_string.hpp +32 -0
  1628. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +27 -0
  1629. data/ext/third_party/json/include/tao/json/ubjson/events/from_input.hpp +43 -0
  1630. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +37 -0
  1631. data/ext/third_party/json/include/tao/json/ubjson/events/to_stream.hpp +174 -0
  1632. data/ext/third_party/json/include/tao/json/ubjson/events/to_string.hpp +31 -0
  1633. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +33 -0
  1634. data/ext/third_party/json/include/tao/json/ubjson/from_input.hpp +33 -0
  1635. data/ext/third_party/json/include/tao/json/ubjson/from_string.hpp +32 -0
  1636. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +413 -0
  1637. data/ext/third_party/json/include/tao/json/ubjson/internal/marker.hpp +46 -0
  1638. data/ext/third_party/json/include/tao/json/ubjson/parts_parser.hpp +393 -0
  1639. data/ext/third_party/json/include/tao/json/ubjson/to_stream.hpp +28 -0
  1640. data/ext/third_party/json/include/tao/json/ubjson/to_string.hpp +29 -0
  1641. data/ext/third_party/json/include/tao/json/utf8.hpp +57 -0
  1642. data/ext/third_party/json/include/tao/json/value.hpp +12 -0
  1643. data/ext/third_party/json/src/example/json/CMakeLists.txt +67 -0
  1644. data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +18 -0
  1645. data/ext/third_party/json/src/example/json/cbor_to_json.cpp +18 -0
  1646. data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +18 -0
  1647. data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +18 -0
  1648. data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +18 -0
  1649. data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +18 -0
  1650. data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +18 -0
  1651. data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +249 -0
  1652. data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +18 -0
  1653. data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +18 -0
  1654. data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +18 -0
  1655. data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +18 -0
  1656. data/ext/third_party/json/src/example/json/json_to_cbor.cpp +18 -0
  1657. data/ext/third_party/json/src/example/json/json_to_json.cpp +18 -0
  1658. data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +18 -0
  1659. data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +18 -0
  1660. data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +18 -0
  1661. data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +18 -0
  1662. data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +18 -0
  1663. data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +18 -0
  1664. data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +18 -0
  1665. data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +18 -0
  1666. data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +18 -0
  1667. data/ext/third_party/json/src/example/json/printf_doubles.cpp +51 -0
  1668. data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +18 -0
  1669. data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +18 -0
  1670. data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +18 -0
  1671. data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +18 -0
  1672. data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +18 -0
  1673. data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +18 -0
  1674. data/ext/third_party/json/src/example/json/validate_event_order.cpp +27 -0
  1675. data/ext/third_party/json/src/example/json/validate_integer.cpp +56 -0
  1676. data/ext/third_party/json/src/perf/json/bench_mark.hpp +43 -0
  1677. data/ext/third_party/json/src/perf/json/benchmark.cpp +34 -0
  1678. data/ext/third_party/json/src/perf/json/parse_file.cpp +17 -0
  1679. data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +19 -0
  1680. data/ext/third_party/json/src/perf/json/print_double.cpp +34 -0
  1681. data/ext/third_party/json/src/perf/json/print_file.cpp +19 -0
  1682. data/ext/third_party/json/src/perf/json/sizes.cpp +24 -0
  1683. data/ext/third_party/json/src/perf/json/syntax_only.cpp +27 -0
  1684. data/ext/third_party/json/src/test/json/CMakeLists.txt +97 -0
  1685. data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +43 -0
  1686. data/ext/third_party/json/src/test/json/binding_array.cpp +549 -0
  1687. data/ext/third_party/json/src/test/json/binding_factory.cpp +265 -0
  1688. data/ext/third_party/json/src/test/json/binding_object.cpp +208 -0
  1689. data/ext/third_party/json/src/test/json/binding_versions.cpp +95 -0
  1690. data/ext/third_party/json/src/test/json/cbor.cpp +149 -0
  1691. data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +36 -0
  1692. data/ext/third_party/json/src/test/json/contrib_diff.cpp +43 -0
  1693. data/ext/third_party/json/src/test/json/contrib_get.cpp +42 -0
  1694. data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +75 -0
  1695. data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +113 -0
  1696. data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +97 -0
  1697. data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +85 -0
  1698. data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +79 -0
  1699. data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +69 -0
  1700. data/ext/third_party/json/src/test/json/contrib_position.cpp +48 -0
  1701. data/ext/third_party/json/src/test/json/contrib_reference.cpp +44 -0
  1702. data/ext/third_party/json/src/test/json/contrib_schema.cpp +132 -0
  1703. data/ext/third_party/json/src/test/json/contrib_traits.cpp +258 -0
  1704. data/ext/third_party/json/src/test/json/double.cpp +182 -0
  1705. data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +54 -0
  1706. data/ext/third_party/json/src/test/json/escape.cpp +42 -0
  1707. data/ext/third_party/json/src/test/json/events_binary_to.cpp +56 -0
  1708. data/ext/third_party/json/src/test/json/events_compare.cpp +433 -0
  1709. data/ext/third_party/json/src/test/json/events_debug.cpp +24 -0
  1710. data/ext/third_party/json/src/test/json/events_hash.cpp +65 -0
  1711. data/ext/third_party/json/src/test/json/events_to_stream.cpp +28 -0
  1712. data/ext/third_party/json/src/test/json/events_to_string.cpp +25 -0
  1713. data/ext/third_party/json/src/test/json/include_json.cpp +14 -0
  1714. data/ext/third_party/json/src/test/json/integer.cpp +118 -0
  1715. data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +76 -0
  1716. data/ext/third_party/json/src/test/json/jaxn_parse.cpp +239 -0
  1717. data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +220 -0
  1718. data/ext/third_party/json/src/test/json/json_ostream.cpp +102 -0
  1719. data/ext/third_party/json/src/test/json/json_parse.cpp +153 -0
  1720. data/ext/third_party/json/src/test/json/json_parts_parser.cpp +124 -0
  1721. data/ext/third_party/json/src/test/json/json_pointer.cpp +176 -0
  1722. data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +38 -0
  1723. data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +33 -0
  1724. data/ext/third_party/json/src/test/json/literal.cpp +18 -0
  1725. data/ext/third_party/json/src/test/json/main.hpp +20 -0
  1726. data/ext/third_party/json/src/test/json/make_events.hpp +362 -0
  1727. data/ext/third_party/json/src/test/json/msgpack.cpp +136 -0
  1728. data/ext/third_party/json/src/test/json/object_construction.cpp +167 -0
  1729. data/ext/third_party/json/src/test/json/opaque_pointer.cpp +192 -0
  1730. data/ext/third_party/json/src/test/json/operators.cpp +494 -0
  1731. data/ext/third_party/json/src/test/json/optional.cpp +79 -0
  1732. data/ext/third_party/json/src/test/json/public_base.cpp +142 -0
  1733. data/ext/third_party/json/src/test/json/self_contained.cpp +106 -0
  1734. data/ext/third_party/json/src/test/json/sha256.cpp +38 -0
  1735. data/ext/third_party/json/src/test/json/string_view.cpp +70 -0
  1736. data/ext/third_party/json/src/test/json/temporary_parsing.cpp +339 -0
  1737. data/ext/third_party/json/src/test/json/test.hpp +74 -0
  1738. data/ext/third_party/json/src/test/json/test_events.hpp +250 -0
  1739. data/ext/third_party/json/src/test/json/test_types.hpp +557 -0
  1740. data/ext/third_party/json/src/test/json/test_unhex.hpp +42 -0
  1741. data/ext/third_party/json/src/test/json/type.cpp +35 -0
  1742. data/ext/third_party/json/src/test/json/ubjson.cpp +119 -0
  1743. data/ext/third_party/json/src/test/json/uri_fragment.cpp +52 -0
  1744. data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +177 -0
  1745. data/ext/third_party/json/src/test/json/validate_utf8.cpp +37 -0
  1746. data/ext/third_party/json/src/test/json/value_access.cpp +144 -0
  1747. data/ext/third_party/json/src/test/json/value_basics.cpp +241 -0
  1748. data/ext/third_party/json/src/test/json/value_create.cpp +372 -0
  1749. data/ext/third_party/json/src/test/json/value_ptr.cpp +33 -0
  1750. data/ext/third_party/json/src/test/json/value_subscript.cpp +89 -0
  1751. data/ext/third_party/json/src/test/json/with_arguments.cpp +98 -0
  1752. data/ext/third_party/json/tests/blns.json +496 -0
  1753. data/ext/third_party/json/tests/canada.json +9 -0
  1754. data/ext/third_party/json/tests/citm_catalog.json +50469 -0
  1755. data/ext/third_party/json/tests/draft4/additionalItems.json +82 -0
  1756. data/ext/third_party/json/tests/draft4/additionalProperties.json +88 -0
  1757. data/ext/third_party/json/tests/draft4/allOf.json +112 -0
  1758. data/ext/third_party/json/tests/draft4/anyOf.json +68 -0
  1759. data/ext/third_party/json/tests/draft4/default.json +49 -0
  1760. data/ext/third_party/json/tests/draft4/definitions.json +32 -0
  1761. data/ext/third_party/json/tests/draft4/dependencies.json +113 -0
  1762. data/ext/third_party/json/tests/draft4/enum.json +72 -0
  1763. data/ext/third_party/json/tests/draft4/items.json +46 -0
  1764. data/ext/third_party/json/tests/draft4/maxItems.json +28 -0
  1765. data/ext/third_party/json/tests/draft4/maxLength.json +33 -0
  1766. data/ext/third_party/json/tests/draft4/maxProperties.json +28 -0
  1767. data/ext/third_party/json/tests/draft4/maximum.json +42 -0
  1768. data/ext/third_party/json/tests/draft4/minItems.json +28 -0
  1769. data/ext/third_party/json/tests/draft4/minLength.json +33 -0
  1770. data/ext/third_party/json/tests/draft4/minProperties.json +28 -0
  1771. data/ext/third_party/json/tests/draft4/minimum.json +42 -0
  1772. data/ext/third_party/json/tests/draft4/multipleOf.json +60 -0
  1773. data/ext/third_party/json/tests/draft4/not.json +96 -0
  1774. data/ext/third_party/json/tests/draft4/oneOf.json +68 -0
  1775. data/ext/third_party/json/tests/draft4/optional/bignum.json +107 -0
  1776. data/ext/third_party/json/tests/draft4/optional/format.json +148 -0
  1777. data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
  1778. data/ext/third_party/json/tests/draft4/pattern.json +34 -0
  1779. data/ext/third_party/json/tests/draft4/patternProperties.json +110 -0
  1780. data/ext/third_party/json/tests/draft4/properties.json +92 -0
  1781. data/ext/third_party/json/tests/draft4/ref.json +179 -0
  1782. data/ext/third_party/json/tests/draft4/refRemote.json +74 -0
  1783. data/ext/third_party/json/tests/draft4/required.json +44 -0
  1784. data/ext/third_party/json/tests/draft4/type.json +345 -0
  1785. data/ext/third_party/json/tests/draft4/uniqueItems.json +79 -0
  1786. data/ext/third_party/json/tests/taocpp/binary.jaxn +4 -0
  1787. data/ext/third_party/json/tests/taocpp/dateTime.json +108 -0
  1788. data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
  1789. data/ext/third_party/json/tests/taocpp/number.json +682 -0
  1790. data/ext/third_party/json/tests/taocpp/position.json +8 -0
  1791. data/ext/third_party/json/tests/taocpp/schema.json +378 -0
  1792. data/ext/third_party/json/tests/twitter.json +15482 -0
  1793. data/ext/third_party/spdlog/.clang-format +108 -0
  1794. data/ext/third_party/spdlog/.clang-tidy +54 -0
  1795. data/ext/third_party/spdlog/.gitattributes +1 -0
  1796. data/ext/third_party/spdlog/.gitignore +83 -0
  1797. data/ext/third_party/spdlog/.travis.yml +112 -0
  1798. data/ext/third_party/spdlog/CMakeLists.txt +324 -0
  1799. data/ext/third_party/spdlog/INSTALL +24 -0
  1800. data/ext/third_party/spdlog/LICENSE +26 -0
  1801. data/ext/third_party/spdlog/README.md +423 -0
  1802. data/ext/third_party/spdlog/appveyor.yml +51 -0
  1803. data/ext/third_party/spdlog/bench/CMakeLists.txt +25 -0
  1804. data/ext/third_party/spdlog/bench/async_bench.cpp +179 -0
  1805. data/ext/third_party/spdlog/bench/bench.cpp +238 -0
  1806. data/ext/third_party/spdlog/bench/formatter-bench.cpp +80 -0
  1807. data/ext/third_party/spdlog/bench/latency.cpp +166 -0
  1808. data/ext/third_party/spdlog/bench/utils.h +34 -0
  1809. data/ext/third_party/spdlog/cmake/ide.cmake +18 -0
  1810. data/ext/third_party/spdlog/cmake/pch.h.in +258 -0
  1811. data/ext/third_party/spdlog/cmake/spdlog.pc.in +13 -0
  1812. data/ext/third_party/spdlog/cmake/spdlogCPack.cmake +46 -0
  1813. data/ext/third_party/spdlog/cmake/spdlogConfig.cmake.in +15 -0
  1814. data/ext/third_party/spdlog/cmake/utils.cmake +61 -0
  1815. data/ext/third_party/spdlog/cmake/version.rc.in +42 -0
  1816. data/ext/third_party/spdlog/example/CMakeLists.txt +23 -0
  1817. data/ext/third_party/spdlog/example/example.cpp +282 -0
  1818. data/ext/third_party/spdlog/include/spdlog/async.h +93 -0
  1819. data/ext/third_party/spdlog/include/spdlog/async_logger-inl.h +92 -0
  1820. data/ext/third_party/spdlog/include/spdlog/async_logger.h +68 -0
  1821. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +45 -0
  1822. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +36 -0
  1823. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +103 -0
  1824. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +28 -0
  1825. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +47 -0
  1826. data/ext/third_party/spdlog/include/spdlog/common-inl.h +76 -0
  1827. data/ext/third_party/spdlog/include/spdlog/common.h +246 -0
  1828. data/ext/third_party/spdlog/include/spdlog/details/backtracer-inl.h +69 -0
  1829. data/ext/third_party/spdlog/include/spdlog/details/backtracer.h +45 -0
  1830. data/ext/third_party/spdlog/include/spdlog/details/circular_q.h +141 -0
  1831. data/ext/third_party/spdlog/include/spdlog/details/console_globals.h +32 -0
  1832. data/ext/third_party/spdlog/include/spdlog/details/file_helper-inl.h +132 -0
  1833. data/ext/third_party/spdlog/include/spdlog/details/file_helper.h +59 -0
  1834. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +108 -0
  1835. data/ext/third_party/spdlog/include/spdlog/details/log_msg-inl.h +37 -0
  1836. data/ext/third_party/spdlog/include/spdlog/details/log_msg.h +36 -0
  1837. data/ext/third_party/spdlog/include/spdlog/details/log_msg_buffer-inl.h +58 -0
  1838. data/ext/third_party/spdlog/include/spdlog/details/log_msg_buffer.h +33 -0
  1839. data/ext/third_party/spdlog/include/spdlog/details/mpmc_blocking_q.h +120 -0
  1840. data/ext/third_party/spdlog/include/spdlog/details/null_mutex.h +49 -0
  1841. data/ext/third_party/spdlog/include/spdlog/details/os-inl.h +554 -0
  1842. data/ext/third_party/spdlog/include/spdlog/details/os.h +111 -0
  1843. data/ext/third_party/spdlog/include/spdlog/details/periodic_worker-inl.h +49 -0
  1844. data/ext/third_party/spdlog/include/spdlog/details/periodic_worker.h +40 -0
  1845. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +299 -0
  1846. data/ext/third_party/spdlog/include/spdlog/details/registry.h +112 -0
  1847. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +24 -0
  1848. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +175 -0
  1849. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +145 -0
  1850. data/ext/third_party/spdlog/include/spdlog/details/thread_pool-inl.h +124 -0
  1851. data/ext/third_party/spdlog/include/spdlog/details/thread_pool.h +120 -0
  1852. data/ext/third_party/spdlog/include/spdlog/details/windows_include.h +11 -0
  1853. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +216 -0
  1854. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/LICENSE.rst +27 -0
  1855. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +1119 -0
  1856. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +568 -0
  1857. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +595 -0
  1858. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +1789 -0
  1859. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +1403 -0
  1860. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +3648 -0
  1861. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +78 -0
  1862. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +143 -0
  1863. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +2 -0
  1864. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +721 -0
  1865. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +387 -0
  1866. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +25 -0
  1867. data/ext/third_party/spdlog/include/spdlog/fmt/ostr.h +20 -0
  1868. data/ext/third_party/spdlog/include/spdlog/formatter.h +18 -0
  1869. data/ext/third_party/spdlog/include/spdlog/fwd.h +14 -0
  1870. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +253 -0
  1871. data/ext/third_party/spdlog/include/spdlog/logger.h +392 -0
  1872. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +1358 -0
  1873. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +126 -0
  1874. data/ext/third_party/spdlog/include/spdlog/sinks/android_sink.h +119 -0
  1875. data/ext/third_party/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +143 -0
  1876. data/ext/third_party/spdlog/include/spdlog/sinks/ansicolor_sink.h +118 -0
  1877. data/ext/third_party/spdlog/include/spdlog/sinks/base_sink-inl.h +63 -0
  1878. data/ext/third_party/spdlog/include/spdlog/sinks/base_sink.h +52 -0
  1879. data/ext/third_party/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +43 -0
  1880. data/ext/third_party/spdlog/include/spdlog/sinks/basic_file_sink.h +58 -0
  1881. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +204 -0
  1882. data/ext/third_party/spdlog/include/spdlog/sinks/dist_sink.h +97 -0
  1883. data/ext/third_party/spdlog/include/spdlog/sinks/dup_filter_sink.h +90 -0
  1884. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +49 -0
  1885. data/ext/third_party/spdlog/include/spdlog/sinks/null_sink.h +44 -0
  1886. data/ext/third_party/spdlog/include/spdlog/sinks/ostream_sink.h +50 -0
  1887. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +72 -0
  1888. data/ext/third_party/spdlog/include/spdlog/sinks/rotating_file_sink-inl.h +131 -0
  1889. data/ext/third_party/spdlog/include/spdlog/sinks/rotating_file_sink.h +78 -0
  1890. data/ext/third_party/spdlog/include/spdlog/sinks/sink-inl.h +25 -0
  1891. data/ext/third_party/spdlog/include/spdlog/sinks/sink.h +35 -0
  1892. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  1893. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_color_sinks.h +45 -0
  1894. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +94 -0
  1895. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +80 -0
  1896. data/ext/third_party/spdlog/include/spdlog/sinks/syslog_sink.h +109 -0
  1897. data/ext/third_party/spdlog/include/spdlog/sinks/systemd_sink.h +103 -0
  1898. data/ext/third_party/spdlog/include/spdlog/sinks/tcp_sink.h +81 -0
  1899. data/ext/third_party/spdlog/include/spdlog/sinks/win_eventlog_sink.h +266 -0
  1900. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +180 -0
  1901. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink.h +94 -0
  1902. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +115 -0
  1903. data/ext/third_party/spdlog/include/spdlog/spdlog.h +340 -0
  1904. data/ext/third_party/spdlog/include/spdlog/tweakme.h +116 -0
  1905. data/ext/third_party/spdlog/include/spdlog/version.h +10 -0
  1906. data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +43 -0
  1907. data/ext/third_party/spdlog/scripts/extract_version.py +17 -0
  1908. data/ext/third_party/spdlog/scripts/format.sh +16 -0
  1909. data/ext/third_party/spdlog/src/async.cpp +13 -0
  1910. data/ext/third_party/spdlog/src/cfg.cpp +8 -0
  1911. data/ext/third_party/spdlog/src/color_sinks.cpp +51 -0
  1912. data/ext/third_party/spdlog/src/file_sinks.cpp +20 -0
  1913. data/ext/third_party/spdlog/src/fmt.cpp +189 -0
  1914. data/ext/third_party/spdlog/src/spdlog.cpp +26 -0
  1915. data/ext/third_party/spdlog/src/stdout_sinks.cpp +29 -0
  1916. data/ext/third_party/spdlog/tests/CMakeLists.txt +70 -0
  1917. data/ext/third_party/spdlog/tests/catch.hpp +15372 -0
  1918. data/ext/third_party/spdlog/tests/catch.license +23 -0
  1919. data/ext/third_party/spdlog/tests/includes.h +26 -0
  1920. data/ext/third_party/spdlog/tests/main.cpp +2 -0
  1921. data/ext/third_party/spdlog/tests/test_async.cpp +188 -0
  1922. data/ext/third_party/spdlog/tests/test_backtrace.cpp +65 -0
  1923. data/ext/third_party/spdlog/tests/test_cfg.cpp +93 -0
  1924. data/ext/third_party/spdlog/tests/test_create_dir.cpp +80 -0
  1925. data/ext/third_party/spdlog/tests/test_daily_logger.cpp +149 -0
  1926. data/ext/third_party/spdlog/tests/test_dup_filter.cpp +88 -0
  1927. data/ext/third_party/spdlog/tests/test_errors.cpp +118 -0
  1928. data/ext/third_party/spdlog/tests/test_eventlog.cpp +71 -0
  1929. data/ext/third_party/spdlog/tests/test_file_helper.cpp +102 -0
  1930. data/ext/third_party/spdlog/tests/test_file_logging.cpp +98 -0
  1931. data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +86 -0
  1932. data/ext/third_party/spdlog/tests/test_macros.cpp +60 -0
  1933. data/ext/third_party/spdlog/tests/test_misc.cpp +271 -0
  1934. data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +106 -0
  1935. data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +443 -0
  1936. data/ext/third_party/spdlog/tests/test_registry.cpp +116 -0
  1937. data/ext/third_party/spdlog/tests/test_sink.h +79 -0
  1938. data/ext/third_party/spdlog/tests/test_stdout_api.cpp +98 -0
  1939. data/ext/third_party/spdlog/tests/test_systemd.cpp +15 -0
  1940. data/ext/third_party/spdlog/tests/test_time_point.cpp +36 -0
  1941. data/ext/third_party/spdlog/tests/utils.cpp +125 -0
  1942. data/ext/third_party/spdlog/tests/utils.h +18 -0
  1943. data/lib/couchbase.rb +18 -0
  1944. data/lib/couchbase/authenticator.rb +25 -0
  1945. data/lib/couchbase/binary_collection.rb +128 -0
  1946. data/lib/couchbase/bucket.rb +81 -0
  1947. data/lib/couchbase/cluster.rb +256 -0
  1948. data/lib/couchbase/collection.rb +378 -0
  1949. data/lib/couchbase/common_options.rb +29 -0
  1950. data/lib/couchbase/errors.rb +222 -0
  1951. data/lib/couchbase/management/analytics_index_manager.rb +143 -0
  1952. data/lib/couchbase/management/bucket_manager.rb +187 -0
  1953. data/lib/couchbase/management/collection_manager.rb +28 -0
  1954. data/lib/couchbase/management/query_index_manager.rb +26 -0
  1955. data/lib/couchbase/management/search_index_manager.rb +26 -0
  1956. data/lib/couchbase/management/user_manager.rb +321 -0
  1957. data/lib/couchbase/management/view_index_manager.rb +28 -0
  1958. data/lib/couchbase/mutation_state.rb +40 -0
  1959. data/lib/couchbase/results.rb +307 -0
  1960. data/lib/couchbase/scope.rb +49 -0
  1961. data/lib/couchbase/subdoc.rb +226 -0
  1962. data/lib/couchbase/version.rb +18 -0
  1963. data/rbi/couchbase.rbi +79 -0
  1964. metadata +2073 -0
@@ -0,0 +1,1894 @@
1
+ //
2
+ // basic_socket.hpp
3
+ // ~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_BASIC_SOCKET_HPP
12
+ #define ASIO_BASIC_SOCKET_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include "asio/async_result.hpp"
20
+ #include "asio/detail/handler_type_requirements.hpp"
21
+ #include "asio/detail/io_object_impl.hpp"
22
+ #include "asio/detail/non_const_lvalue.hpp"
23
+ #include "asio/detail/throw_error.hpp"
24
+ #include "asio/detail/type_traits.hpp"
25
+ #include "asio/error.hpp"
26
+ #include "asio/execution_context.hpp"
27
+ #include "asio/executor.hpp"
28
+ #include "asio/post.hpp"
29
+ #include "asio/socket_base.hpp"
30
+
31
+ #if defined(ASIO_WINDOWS_RUNTIME)
32
+ # include "asio/detail/null_socket_service.hpp"
33
+ #elif defined(ASIO_HAS_IOCP)
34
+ # include "asio/detail/win_iocp_socket_service.hpp"
35
+ #else
36
+ # include "asio/detail/reactive_socket_service.hpp"
37
+ #endif
38
+
39
+ #if defined(ASIO_HAS_MOVE)
40
+ # include <utility>
41
+ #endif // defined(ASIO_HAS_MOVE)
42
+
43
+ #include "asio/detail/push_options.hpp"
44
+
45
+ namespace asio {
46
+
47
+ #if !defined(ASIO_BASIC_SOCKET_FWD_DECL)
48
+ #define ASIO_BASIC_SOCKET_FWD_DECL
49
+
50
+ // Forward declaration with defaulted arguments.
51
+ template <typename Protocol, typename Executor = executor>
52
+ class basic_socket;
53
+
54
+ #endif // !defined(ASIO_BASIC_SOCKET_FWD_DECL)
55
+
56
+ /// Provides socket functionality.
57
+ /**
58
+ * The basic_socket class template provides functionality that is common to both
59
+ * stream-oriented and datagram-oriented sockets.
60
+ *
61
+ * @par Thread Safety
62
+ * @e Distinct @e objects: Safe.@n
63
+ * @e Shared @e objects: Unsafe.
64
+ */
65
+ template <typename Protocol, typename Executor>
66
+ class basic_socket
67
+ : public socket_base
68
+ {
69
+ public:
70
+ /// The type of the executor associated with the object.
71
+ typedef Executor executor_type;
72
+
73
+ /// Rebinds the socket type to another executor.
74
+ template <typename Executor1>
75
+ struct rebind_executor
76
+ {
77
+ /// The socket type when rebound to the specified executor.
78
+ typedef basic_socket<Protocol, Executor1> other;
79
+ };
80
+
81
+ /// The native representation of a socket.
82
+ #if defined(GENERATING_DOCUMENTATION)
83
+ typedef implementation_defined native_handle_type;
84
+ #elif defined(ASIO_WINDOWS_RUNTIME)
85
+ typedef typename detail::null_socket_service<
86
+ Protocol>::native_handle_type native_handle_type;
87
+ #elif defined(ASIO_HAS_IOCP)
88
+ typedef typename detail::win_iocp_socket_service<
89
+ Protocol>::native_handle_type native_handle_type;
90
+ #else
91
+ typedef typename detail::reactive_socket_service<
92
+ Protocol>::native_handle_type native_handle_type;
93
+ #endif
94
+
95
+ /// The protocol type.
96
+ typedef Protocol protocol_type;
97
+
98
+ /// The endpoint type.
99
+ typedef typename Protocol::endpoint endpoint_type;
100
+
101
+ #if !defined(ASIO_NO_EXTENSIONS)
102
+ /// A basic_socket is always the lowest layer.
103
+ typedef basic_socket<Protocol, Executor> lowest_layer_type;
104
+ #endif // !defined(ASIO_NO_EXTENSIONS)
105
+
106
+ /// Construct a basic_socket without opening it.
107
+ /**
108
+ * This constructor creates a socket without opening it.
109
+ *
110
+ * @param ex The I/O executor that the socket will use, by default, to
111
+ * dispatch handlers for any asynchronous operations performed on the socket.
112
+ */
113
+ explicit basic_socket(const executor_type& ex)
114
+ : impl_(ex)
115
+ {
116
+ }
117
+
118
+ /// Construct a basic_socket without opening it.
119
+ /**
120
+ * This constructor creates a socket without opening it.
121
+ *
122
+ * @param context An execution context which provides the I/O executor that
123
+ * the socket will use, by default, to dispatch handlers for any asynchronous
124
+ * operations performed on the socket.
125
+ */
126
+ template <typename ExecutionContext>
127
+ explicit basic_socket(ExecutionContext& context,
128
+ typename enable_if<
129
+ is_convertible<ExecutionContext&, execution_context&>::value
130
+ >::type* = 0)
131
+ : impl_(context)
132
+ {
133
+ }
134
+
135
+ /// Construct and open a basic_socket.
136
+ /**
137
+ * This constructor creates and opens a socket.
138
+ *
139
+ * @param ex The I/O executor that the socket will use, by default, to
140
+ * dispatch handlers for any asynchronous operations performed on the socket.
141
+ *
142
+ * @param protocol An object specifying protocol parameters to be used.
143
+ *
144
+ * @throws asio::system_error Thrown on failure.
145
+ */
146
+ basic_socket(const executor_type& ex, const protocol_type& protocol)
147
+ : impl_(ex)
148
+ {
149
+ asio::error_code ec;
150
+ impl_.get_service().open(impl_.get_implementation(), protocol, ec);
151
+ asio::detail::throw_error(ec, "open");
152
+ }
153
+
154
+ /// Construct and open a basic_socket.
155
+ /**
156
+ * This constructor creates and opens a socket.
157
+ *
158
+ * @param context An execution context which provides the I/O executor that
159
+ * the socket will use, by default, to dispatch handlers for any asynchronous
160
+ * operations performed on the socket.
161
+ *
162
+ * @param protocol An object specifying protocol parameters to be used.
163
+ *
164
+ * @throws asio::system_error Thrown on failure.
165
+ */
166
+ template <typename ExecutionContext>
167
+ basic_socket(ExecutionContext& context, const protocol_type& protocol,
168
+ typename enable_if<
169
+ is_convertible<ExecutionContext&, execution_context&>::value
170
+ >::type* = 0)
171
+ : impl_(context)
172
+ {
173
+ asio::error_code ec;
174
+ impl_.get_service().open(impl_.get_implementation(), protocol, ec);
175
+ asio::detail::throw_error(ec, "open");
176
+ }
177
+
178
+ /// Construct a basic_socket, opening it and binding it to the given local
179
+ /// endpoint.
180
+ /**
181
+ * This constructor creates a socket and automatically opens it bound to the
182
+ * specified endpoint on the local machine. The protocol used is the protocol
183
+ * associated with the given endpoint.
184
+ *
185
+ * @param ex The I/O executor that the socket will use, by default, to
186
+ * dispatch handlers for any asynchronous operations performed on the socket.
187
+ *
188
+ * @param endpoint An endpoint on the local machine to which the socket will
189
+ * be bound.
190
+ *
191
+ * @throws asio::system_error Thrown on failure.
192
+ */
193
+ basic_socket(const executor_type& ex, const endpoint_type& endpoint)
194
+ : impl_(ex)
195
+ {
196
+ asio::error_code ec;
197
+ const protocol_type protocol = endpoint.protocol();
198
+ impl_.get_service().open(impl_.get_implementation(), protocol, ec);
199
+ asio::detail::throw_error(ec, "open");
200
+ impl_.get_service().bind(impl_.get_implementation(), endpoint, ec);
201
+ asio::detail::throw_error(ec, "bind");
202
+ }
203
+
204
+ /// Construct a basic_socket, opening it and binding it to the given local
205
+ /// endpoint.
206
+ /**
207
+ * This constructor creates a socket and automatically opens it bound to the
208
+ * specified endpoint on the local machine. The protocol used is the protocol
209
+ * associated with the given endpoint.
210
+ *
211
+ * @param context An execution context which provides the I/O executor that
212
+ * the socket will use, by default, to dispatch handlers for any asynchronous
213
+ * operations performed on the socket.
214
+ *
215
+ * @param endpoint An endpoint on the local machine to which the socket will
216
+ * be bound.
217
+ *
218
+ * @throws asio::system_error Thrown on failure.
219
+ */
220
+ template <typename ExecutionContext>
221
+ basic_socket(ExecutionContext& context, const endpoint_type& endpoint,
222
+ typename enable_if<
223
+ is_convertible<ExecutionContext&, execution_context&>::value
224
+ >::type* = 0)
225
+ : impl_(context)
226
+ {
227
+ asio::error_code ec;
228
+ const protocol_type protocol = endpoint.protocol();
229
+ impl_.get_service().open(impl_.get_implementation(), protocol, ec);
230
+ asio::detail::throw_error(ec, "open");
231
+ impl_.get_service().bind(impl_.get_implementation(), endpoint, ec);
232
+ asio::detail::throw_error(ec, "bind");
233
+ }
234
+
235
+ /// Construct a basic_socket on an existing native socket.
236
+ /**
237
+ * This constructor creates a socket object to hold an existing native socket.
238
+ *
239
+ * @param ex The I/O executor that the socket will use, by default, to
240
+ * dispatch handlers for any asynchronous operations performed on the socket.
241
+ *
242
+ * @param protocol An object specifying protocol parameters to be used.
243
+ *
244
+ * @param native_socket A native socket.
245
+ *
246
+ * @throws asio::system_error Thrown on failure.
247
+ */
248
+ basic_socket(const executor_type& ex, const protocol_type& protocol,
249
+ const native_handle_type& native_socket)
250
+ : impl_(ex)
251
+ {
252
+ asio::error_code ec;
253
+ impl_.get_service().assign(impl_.get_implementation(),
254
+ protocol, native_socket, ec);
255
+ asio::detail::throw_error(ec, "assign");
256
+ }
257
+
258
+ /// Construct a basic_socket on an existing native socket.
259
+ /**
260
+ * This constructor creates a socket object to hold an existing native socket.
261
+ *
262
+ * @param context An execution context which provides the I/O executor that
263
+ * the socket will use, by default, to dispatch handlers for any asynchronous
264
+ * operations performed on the socket.
265
+ *
266
+ * @param protocol An object specifying protocol parameters to be used.
267
+ *
268
+ * @param native_socket A native socket.
269
+ *
270
+ * @throws asio::system_error Thrown on failure.
271
+ */
272
+ template <typename ExecutionContext>
273
+ basic_socket(ExecutionContext& context, const protocol_type& protocol,
274
+ const native_handle_type& native_socket,
275
+ typename enable_if<
276
+ is_convertible<ExecutionContext&, execution_context&>::value
277
+ >::type* = 0)
278
+ : impl_(context)
279
+ {
280
+ asio::error_code ec;
281
+ impl_.get_service().assign(impl_.get_implementation(),
282
+ protocol, native_socket, ec);
283
+ asio::detail::throw_error(ec, "assign");
284
+ }
285
+
286
+ #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
287
+ /// Move-construct a basic_socket from another.
288
+ /**
289
+ * This constructor moves a socket from one object to another.
290
+ *
291
+ * @param other The other basic_socket object from which the move will
292
+ * occur.
293
+ *
294
+ * @note Following the move, the moved-from object is in the same state as if
295
+ * constructed using the @c basic_socket(const executor_type&) constructor.
296
+ */
297
+ basic_socket(basic_socket&& other) ASIO_NOEXCEPT
298
+ : impl_(std::move(other.impl_))
299
+ {
300
+ }
301
+
302
+ /// Move-assign a basic_socket from another.
303
+ /**
304
+ * This assignment operator moves a socket from one object to another.
305
+ *
306
+ * @param other The other basic_socket object from which the move will
307
+ * occur.
308
+ *
309
+ * @note Following the move, the moved-from object is in the same state as if
310
+ * constructed using the @c basic_socket(const executor_type&) constructor.
311
+ */
312
+ basic_socket& operator=(basic_socket&& other)
313
+ {
314
+ impl_ = std::move(other.impl_);
315
+ return *this;
316
+ }
317
+
318
+ // All sockets have access to each other's implementations.
319
+ template <typename Protocol1, typename Executor1>
320
+ friend class basic_socket;
321
+
322
+ /// Move-construct a basic_socket from a socket of another protocol type.
323
+ /**
324
+ * This constructor moves a socket from one object to another.
325
+ *
326
+ * @param other The other basic_socket object from which the move will
327
+ * occur.
328
+ *
329
+ * @note Following the move, the moved-from object is in the same state as if
330
+ * constructed using the @c basic_socket(const executor_type&) constructor.
331
+ */
332
+ template <typename Protocol1, typename Executor1>
333
+ basic_socket(basic_socket<Protocol1, Executor1>&& other,
334
+ typename enable_if<
335
+ is_convertible<Protocol1, Protocol>::value
336
+ && is_convertible<Executor1, Executor>::value
337
+ >::type* = 0)
338
+ : impl_(std::move(other.impl_))
339
+ {
340
+ }
341
+
342
+ /// Move-assign a basic_socket from a socket of another protocol type.
343
+ /**
344
+ * This assignment operator moves a socket from one object to another.
345
+ *
346
+ * @param other The other basic_socket object from which the move will
347
+ * occur.
348
+ *
349
+ * @note Following the move, the moved-from object is in the same state as if
350
+ * constructed using the @c basic_socket(const executor_type&) constructor.
351
+ */
352
+ template <typename Protocol1, typename Executor1>
353
+ typename enable_if<
354
+ is_convertible<Protocol1, Protocol>::value
355
+ && is_convertible<Executor1, Executor>::value,
356
+ basic_socket&
357
+ >::type operator=(basic_socket<Protocol1, Executor1> && other)
358
+ {
359
+ basic_socket tmp(std::move(other));
360
+ impl_ = std::move(tmp.impl_);
361
+ return *this;
362
+ }
363
+ #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
364
+
365
+ /// Get the executor associated with the object.
366
+ executor_type get_executor() ASIO_NOEXCEPT
367
+ {
368
+ return impl_.get_executor();
369
+ }
370
+
371
+ #if !defined(ASIO_NO_EXTENSIONS)
372
+ /// Get a reference to the lowest layer.
373
+ /**
374
+ * This function returns a reference to the lowest layer in a stack of
375
+ * layers. Since a basic_socket cannot contain any further layers, it simply
376
+ * returns a reference to itself.
377
+ *
378
+ * @return A reference to the lowest layer in the stack of layers. Ownership
379
+ * is not transferred to the caller.
380
+ */
381
+ lowest_layer_type& lowest_layer()
382
+ {
383
+ return *this;
384
+ }
385
+
386
+ /// Get a const reference to the lowest layer.
387
+ /**
388
+ * This function returns a const reference to the lowest layer in a stack of
389
+ * layers. Since a basic_socket cannot contain any further layers, it simply
390
+ * returns a reference to itself.
391
+ *
392
+ * @return A const reference to the lowest layer in the stack of layers.
393
+ * Ownership is not transferred to the caller.
394
+ */
395
+ const lowest_layer_type& lowest_layer() const
396
+ {
397
+ return *this;
398
+ }
399
+ #endif // !defined(ASIO_NO_EXTENSIONS)
400
+
401
+ /// Open the socket using the specified protocol.
402
+ /**
403
+ * This function opens the socket so that it will use the specified protocol.
404
+ *
405
+ * @param protocol An object specifying protocol parameters to be used.
406
+ *
407
+ * @throws asio::system_error Thrown on failure.
408
+ *
409
+ * @par Example
410
+ * @code
411
+ * asio::ip::tcp::socket socket(my_context);
412
+ * socket.open(asio::ip::tcp::v4());
413
+ * @endcode
414
+ */
415
+ void open(const protocol_type& protocol = protocol_type())
416
+ {
417
+ asio::error_code ec;
418
+ impl_.get_service().open(impl_.get_implementation(), protocol, ec);
419
+ asio::detail::throw_error(ec, "open");
420
+ }
421
+
422
+ /// Open the socket using the specified protocol.
423
+ /**
424
+ * This function opens the socket so that it will use the specified protocol.
425
+ *
426
+ * @param protocol An object specifying which protocol is to be used.
427
+ *
428
+ * @param ec Set to indicate what error occurred, if any.
429
+ *
430
+ * @par Example
431
+ * @code
432
+ * asio::ip::tcp::socket socket(my_context);
433
+ * asio::error_code ec;
434
+ * socket.open(asio::ip::tcp::v4(), ec);
435
+ * if (ec)
436
+ * {
437
+ * // An error occurred.
438
+ * }
439
+ * @endcode
440
+ */
441
+ ASIO_SYNC_OP_VOID open(const protocol_type& protocol,
442
+ asio::error_code& ec)
443
+ {
444
+ impl_.get_service().open(impl_.get_implementation(), protocol, ec);
445
+ ASIO_SYNC_OP_VOID_RETURN(ec);
446
+ }
447
+
448
+ /// Assign an existing native socket to the socket.
449
+ /*
450
+ * This function opens the socket to hold an existing native socket.
451
+ *
452
+ * @param protocol An object specifying which protocol is to be used.
453
+ *
454
+ * @param native_socket A native socket.
455
+ *
456
+ * @throws asio::system_error Thrown on failure.
457
+ */
458
+ void assign(const protocol_type& protocol,
459
+ const native_handle_type& native_socket)
460
+ {
461
+ asio::error_code ec;
462
+ impl_.get_service().assign(impl_.get_implementation(),
463
+ protocol, native_socket, ec);
464
+ asio::detail::throw_error(ec, "assign");
465
+ }
466
+
467
+ /// Assign an existing native socket to the socket.
468
+ /*
469
+ * This function opens the socket to hold an existing native socket.
470
+ *
471
+ * @param protocol An object specifying which protocol is to be used.
472
+ *
473
+ * @param native_socket A native socket.
474
+ *
475
+ * @param ec Set to indicate what error occurred, if any.
476
+ */
477
+ ASIO_SYNC_OP_VOID assign(const protocol_type& protocol,
478
+ const native_handle_type& native_socket, asio::error_code& ec)
479
+ {
480
+ impl_.get_service().assign(impl_.get_implementation(),
481
+ protocol, native_socket, ec);
482
+ ASIO_SYNC_OP_VOID_RETURN(ec);
483
+ }
484
+
485
+ /// Determine whether the socket is open.
486
+ bool is_open() const
487
+ {
488
+ return impl_.get_service().is_open(impl_.get_implementation());
489
+ }
490
+
491
+ /// Close the socket.
492
+ /**
493
+ * This function is used to close the socket. Any asynchronous send, receive
494
+ * or connect operations will be cancelled immediately, and will complete
495
+ * with the asio::error::operation_aborted error.
496
+ *
497
+ * @throws asio::system_error Thrown on failure. Note that, even if
498
+ * the function indicates an error, the underlying descriptor is closed.
499
+ *
500
+ * @note For portable behaviour with respect to graceful closure of a
501
+ * connected socket, call shutdown() before closing the socket.
502
+ */
503
+ void close()
504
+ {
505
+ asio::error_code ec;
506
+ impl_.get_service().close(impl_.get_implementation(), ec);
507
+ asio::detail::throw_error(ec, "close");
508
+ }
509
+
510
+ /// Close the socket.
511
+ /**
512
+ * This function is used to close the socket. Any asynchronous send, receive
513
+ * or connect operations will be cancelled immediately, and will complete
514
+ * with the asio::error::operation_aborted error.
515
+ *
516
+ * @param ec Set to indicate what error occurred, if any. Note that, even if
517
+ * the function indicates an error, the underlying descriptor is closed.
518
+ *
519
+ * @par Example
520
+ * @code
521
+ * asio::ip::tcp::socket socket(my_context);
522
+ * ...
523
+ * asio::error_code ec;
524
+ * socket.close(ec);
525
+ * if (ec)
526
+ * {
527
+ * // An error occurred.
528
+ * }
529
+ * @endcode
530
+ *
531
+ * @note For portable behaviour with respect to graceful closure of a
532
+ * connected socket, call shutdown() before closing the socket.
533
+ */
534
+ ASIO_SYNC_OP_VOID close(asio::error_code& ec)
535
+ {
536
+ impl_.get_service().close(impl_.get_implementation(), ec);
537
+ ASIO_SYNC_OP_VOID_RETURN(ec);
538
+ }
539
+
540
+ /// Release ownership of the underlying native socket.
541
+ /**
542
+ * This function causes all outstanding asynchronous connect, send and receive
543
+ * operations to finish immediately, and the handlers for cancelled operations
544
+ * will be passed the asio::error::operation_aborted error. Ownership
545
+ * of the native socket is then transferred to the caller.
546
+ *
547
+ * @throws asio::system_error Thrown on failure.
548
+ *
549
+ * @note This function is unsupported on Windows versions prior to Windows
550
+ * 8.1, and will fail with asio::error::operation_not_supported on
551
+ * these platforms.
552
+ */
553
+ #if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
554
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603)
555
+ __declspec(deprecated("This function always fails with "
556
+ "operation_not_supported when used on Windows versions "
557
+ "prior to Windows 8.1."))
558
+ #endif
559
+ native_handle_type release()
560
+ {
561
+ asio::error_code ec;
562
+ native_handle_type s = impl_.get_service().release(
563
+ impl_.get_implementation(), ec);
564
+ asio::detail::throw_error(ec, "release");
565
+ return s;
566
+ }
567
+
568
+ /// Release ownership of the underlying native socket.
569
+ /**
570
+ * This function causes all outstanding asynchronous connect, send and receive
571
+ * operations to finish immediately, and the handlers for cancelled operations
572
+ * will be passed the asio::error::operation_aborted error. Ownership
573
+ * of the native socket is then transferred to the caller.
574
+ *
575
+ * @param ec Set to indicate what error occurred, if any.
576
+ *
577
+ * @note This function is unsupported on Windows versions prior to Windows
578
+ * 8.1, and will fail with asio::error::operation_not_supported on
579
+ * these platforms.
580
+ */
581
+ #if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
582
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0603)
583
+ __declspec(deprecated("This function always fails with "
584
+ "operation_not_supported when used on Windows versions "
585
+ "prior to Windows 8.1."))
586
+ #endif
587
+ native_handle_type release(asio::error_code& ec)
588
+ {
589
+ return impl_.get_service().release(impl_.get_implementation(), ec);
590
+ }
591
+
592
+ /// Get the native socket representation.
593
+ /**
594
+ * This function may be used to obtain the underlying representation of the
595
+ * socket. This is intended to allow access to native socket functionality
596
+ * that is not otherwise provided.
597
+ */
598
+ native_handle_type native_handle()
599
+ {
600
+ return impl_.get_service().native_handle(impl_.get_implementation());
601
+ }
602
+
603
+ /// Cancel all asynchronous operations associated with the socket.
604
+ /**
605
+ * This function causes all outstanding asynchronous connect, send and receive
606
+ * operations to finish immediately, and the handlers for cancelled operations
607
+ * will be passed the asio::error::operation_aborted error.
608
+ *
609
+ * @throws asio::system_error Thrown on failure.
610
+ *
611
+ * @note Calls to cancel() will always fail with
612
+ * asio::error::operation_not_supported when run on Windows XP, Windows
613
+ * Server 2003, and earlier versions of Windows, unless
614
+ * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
615
+ * two issues that should be considered before enabling its use:
616
+ *
617
+ * @li It will only cancel asynchronous operations that were initiated in the
618
+ * current thread.
619
+ *
620
+ * @li It can appear to complete without error, but the request to cancel the
621
+ * unfinished operations may be silently ignored by the operating system.
622
+ * Whether it works or not seems to depend on the drivers that are installed.
623
+ *
624
+ * For portable cancellation, consider using one of the following
625
+ * alternatives:
626
+ *
627
+ * @li Disable asio's I/O completion port backend by defining
628
+ * ASIO_DISABLE_IOCP.
629
+ *
630
+ * @li Use the close() function to simultaneously cancel the outstanding
631
+ * operations and close the socket.
632
+ *
633
+ * When running on Windows Vista, Windows Server 2008, and later, the
634
+ * CancelIoEx function is always used. This function does not have the
635
+ * problems described above.
636
+ */
637
+ #if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
638
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
639
+ && !defined(ASIO_ENABLE_CANCELIO)
640
+ __declspec(deprecated("By default, this function always fails with "
641
+ "operation_not_supported when used on Windows XP, Windows Server 2003, "
642
+ "or earlier. Consult documentation for details."))
643
+ #endif
644
+ void cancel()
645
+ {
646
+ asio::error_code ec;
647
+ impl_.get_service().cancel(impl_.get_implementation(), ec);
648
+ asio::detail::throw_error(ec, "cancel");
649
+ }
650
+
651
+ /// Cancel all asynchronous operations associated with the socket.
652
+ /**
653
+ * This function causes all outstanding asynchronous connect, send and receive
654
+ * operations to finish immediately, and the handlers for cancelled operations
655
+ * will be passed the asio::error::operation_aborted error.
656
+ *
657
+ * @param ec Set to indicate what error occurred, if any.
658
+ *
659
+ * @note Calls to cancel() will always fail with
660
+ * asio::error::operation_not_supported when run on Windows XP, Windows
661
+ * Server 2003, and earlier versions of Windows, unless
662
+ * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
663
+ * two issues that should be considered before enabling its use:
664
+ *
665
+ * @li It will only cancel asynchronous operations that were initiated in the
666
+ * current thread.
667
+ *
668
+ * @li It can appear to complete without error, but the request to cancel the
669
+ * unfinished operations may be silently ignored by the operating system.
670
+ * Whether it works or not seems to depend on the drivers that are installed.
671
+ *
672
+ * For portable cancellation, consider using one of the following
673
+ * alternatives:
674
+ *
675
+ * @li Disable asio's I/O completion port backend by defining
676
+ * ASIO_DISABLE_IOCP.
677
+ *
678
+ * @li Use the close() function to simultaneously cancel the outstanding
679
+ * operations and close the socket.
680
+ *
681
+ * When running on Windows Vista, Windows Server 2008, and later, the
682
+ * CancelIoEx function is always used. This function does not have the
683
+ * problems described above.
684
+ */
685
+ #if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
686
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
687
+ && !defined(ASIO_ENABLE_CANCELIO)
688
+ __declspec(deprecated("By default, this function always fails with "
689
+ "operation_not_supported when used on Windows XP, Windows Server 2003, "
690
+ "or earlier. Consult documentation for details."))
691
+ #endif
692
+ ASIO_SYNC_OP_VOID cancel(asio::error_code& ec)
693
+ {
694
+ impl_.get_service().cancel(impl_.get_implementation(), ec);
695
+ ASIO_SYNC_OP_VOID_RETURN(ec);
696
+ }
697
+
698
+ /// Determine whether the socket is at the out-of-band data mark.
699
+ /**
700
+ * This function is used to check whether the socket input is currently
701
+ * positioned at the out-of-band data mark.
702
+ *
703
+ * @return A bool indicating whether the socket is at the out-of-band data
704
+ * mark.
705
+ *
706
+ * @throws asio::system_error Thrown on failure.
707
+ */
708
+ bool at_mark() const
709
+ {
710
+ asio::error_code ec;
711
+ bool b = impl_.get_service().at_mark(impl_.get_implementation(), ec);
712
+ asio::detail::throw_error(ec, "at_mark");
713
+ return b;
714
+ }
715
+
716
+ /// Determine whether the socket is at the out-of-band data mark.
717
+ /**
718
+ * This function is used to check whether the socket input is currently
719
+ * positioned at the out-of-band data mark.
720
+ *
721
+ * @param ec Set to indicate what error occurred, if any.
722
+ *
723
+ * @return A bool indicating whether the socket is at the out-of-band data
724
+ * mark.
725
+ */
726
+ bool at_mark(asio::error_code& ec) const
727
+ {
728
+ return impl_.get_service().at_mark(impl_.get_implementation(), ec);
729
+ }
730
+
731
+ /// Determine the number of bytes available for reading.
732
+ /**
733
+ * This function is used to determine the number of bytes that may be read
734
+ * without blocking.
735
+ *
736
+ * @return The number of bytes that may be read without blocking, or 0 if an
737
+ * error occurs.
738
+ *
739
+ * @throws asio::system_error Thrown on failure.
740
+ */
741
+ std::size_t available() const
742
+ {
743
+ asio::error_code ec;
744
+ std::size_t s = impl_.get_service().available(
745
+ impl_.get_implementation(), ec);
746
+ asio::detail::throw_error(ec, "available");
747
+ return s;
748
+ }
749
+
750
+ /// Determine the number of bytes available for reading.
751
+ /**
752
+ * This function is used to determine the number of bytes that may be read
753
+ * without blocking.
754
+ *
755
+ * @param ec Set to indicate what error occurred, if any.
756
+ *
757
+ * @return The number of bytes that may be read without blocking, or 0 if an
758
+ * error occurs.
759
+ */
760
+ std::size_t available(asio::error_code& ec) const
761
+ {
762
+ return impl_.get_service().available(impl_.get_implementation(), ec);
763
+ }
764
+
765
+ /// Bind the socket to the given local endpoint.
766
+ /**
767
+ * This function binds the socket to the specified endpoint on the local
768
+ * machine.
769
+ *
770
+ * @param endpoint An endpoint on the local machine to which the socket will
771
+ * be bound.
772
+ *
773
+ * @throws asio::system_error Thrown on failure.
774
+ *
775
+ * @par Example
776
+ * @code
777
+ * asio::ip::tcp::socket socket(my_context);
778
+ * socket.open(asio::ip::tcp::v4());
779
+ * socket.bind(asio::ip::tcp::endpoint(
780
+ * asio::ip::tcp::v4(), 12345));
781
+ * @endcode
782
+ */
783
+ void bind(const endpoint_type& endpoint)
784
+ {
785
+ asio::error_code ec;
786
+ impl_.get_service().bind(impl_.get_implementation(), endpoint, ec);
787
+ asio::detail::throw_error(ec, "bind");
788
+ }
789
+
790
+ /// Bind the socket to the given local endpoint.
791
+ /**
792
+ * This function binds the socket to the specified endpoint on the local
793
+ * machine.
794
+ *
795
+ * @param endpoint An endpoint on the local machine to which the socket will
796
+ * be bound.
797
+ *
798
+ * @param ec Set to indicate what error occurred, if any.
799
+ *
800
+ * @par Example
801
+ * @code
802
+ * asio::ip::tcp::socket socket(my_context);
803
+ * socket.open(asio::ip::tcp::v4());
804
+ * asio::error_code ec;
805
+ * socket.bind(asio::ip::tcp::endpoint(
806
+ * asio::ip::tcp::v4(), 12345), ec);
807
+ * if (ec)
808
+ * {
809
+ * // An error occurred.
810
+ * }
811
+ * @endcode
812
+ */
813
+ ASIO_SYNC_OP_VOID bind(const endpoint_type& endpoint,
814
+ asio::error_code& ec)
815
+ {
816
+ impl_.get_service().bind(impl_.get_implementation(), endpoint, ec);
817
+ ASIO_SYNC_OP_VOID_RETURN(ec);
818
+ }
819
+
820
+ /// Connect the socket to the specified endpoint.
821
+ /**
822
+ * This function is used to connect a socket to the specified remote endpoint.
823
+ * The function call will block until the connection is successfully made or
824
+ * an error occurs.
825
+ *
826
+ * The socket is automatically opened if it is not already open. If the
827
+ * connect fails, and the socket was automatically opened, the socket is
828
+ * not returned to the closed state.
829
+ *
830
+ * @param peer_endpoint The remote endpoint to which the socket will be
831
+ * connected.
832
+ *
833
+ * @throws asio::system_error Thrown on failure.
834
+ *
835
+ * @par Example
836
+ * @code
837
+ * asio::ip::tcp::socket socket(my_context);
838
+ * asio::ip::tcp::endpoint endpoint(
839
+ * asio::ip::address::from_string("1.2.3.4"), 12345);
840
+ * socket.connect(endpoint);
841
+ * @endcode
842
+ */
843
+ void connect(const endpoint_type& peer_endpoint)
844
+ {
845
+ asio::error_code ec;
846
+ if (!is_open())
847
+ {
848
+ impl_.get_service().open(impl_.get_implementation(),
849
+ peer_endpoint.protocol(), ec);
850
+ asio::detail::throw_error(ec, "connect");
851
+ }
852
+ impl_.get_service().connect(impl_.get_implementation(), peer_endpoint, ec);
853
+ asio::detail::throw_error(ec, "connect");
854
+ }
855
+
856
+ /// Connect the socket to the specified endpoint.
857
+ /**
858
+ * This function is used to connect a socket to the specified remote endpoint.
859
+ * The function call will block until the connection is successfully made or
860
+ * an error occurs.
861
+ *
862
+ * The socket is automatically opened if it is not already open. If the
863
+ * connect fails, and the socket was automatically opened, the socket is
864
+ * not returned to the closed state.
865
+ *
866
+ * @param peer_endpoint The remote endpoint to which the socket will be
867
+ * connected.
868
+ *
869
+ * @param ec Set to indicate what error occurred, if any.
870
+ *
871
+ * @par Example
872
+ * @code
873
+ * asio::ip::tcp::socket socket(my_context);
874
+ * asio::ip::tcp::endpoint endpoint(
875
+ * asio::ip::address::from_string("1.2.3.4"), 12345);
876
+ * asio::error_code ec;
877
+ * socket.connect(endpoint, ec);
878
+ * if (ec)
879
+ * {
880
+ * // An error occurred.
881
+ * }
882
+ * @endcode
883
+ */
884
+ ASIO_SYNC_OP_VOID connect(const endpoint_type& peer_endpoint,
885
+ asio::error_code& ec)
886
+ {
887
+ if (!is_open())
888
+ {
889
+ impl_.get_service().open(impl_.get_implementation(),
890
+ peer_endpoint.protocol(), ec);
891
+ if (ec)
892
+ {
893
+ ASIO_SYNC_OP_VOID_RETURN(ec);
894
+ }
895
+ }
896
+
897
+ impl_.get_service().connect(impl_.get_implementation(), peer_endpoint, ec);
898
+ ASIO_SYNC_OP_VOID_RETURN(ec);
899
+ }
900
+
901
+ /// Start an asynchronous connect.
902
+ /**
903
+ * This function is used to asynchronously connect a socket to the specified
904
+ * remote endpoint. The function call always returns immediately.
905
+ *
906
+ * The socket is automatically opened if it is not already open. If the
907
+ * connect fails, and the socket was automatically opened, the socket is
908
+ * not returned to the closed state.
909
+ *
910
+ * @param peer_endpoint The remote endpoint to which the socket will be
911
+ * connected. Copies will be made of the endpoint object as required.
912
+ *
913
+ * @param handler The handler to be called when the connection operation
914
+ * completes. Copies will be made of the handler as required. The function
915
+ * signature of the handler must be:
916
+ * @code void handler(
917
+ * const asio::error_code& error // Result of operation
918
+ * ); @endcode
919
+ * Regardless of whether the asynchronous operation completes immediately or
920
+ * not, the handler will not be invoked from within this function. On
921
+ * immediate completion, invocation of the handler will be performed in a
922
+ * manner equivalent to using asio::post().
923
+ *
924
+ * @par Example
925
+ * @code
926
+ * void connect_handler(const asio::error_code& error)
927
+ * {
928
+ * if (!error)
929
+ * {
930
+ * // Connect succeeded.
931
+ * }
932
+ * }
933
+ *
934
+ * ...
935
+ *
936
+ * asio::ip::tcp::socket socket(my_context);
937
+ * asio::ip::tcp::endpoint endpoint(
938
+ * asio::ip::address::from_string("1.2.3.4"), 12345);
939
+ * socket.async_connect(endpoint, connect_handler);
940
+ * @endcode
941
+ */
942
+ template <
943
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code))
944
+ ConnectHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)>
945
+ ASIO_INITFN_AUTO_RESULT_TYPE(ConnectHandler,
946
+ void (asio::error_code))
947
+ async_connect(const endpoint_type& peer_endpoint,
948
+ ASIO_MOVE_ARG(ConnectHandler) handler
949
+ ASIO_DEFAULT_COMPLETION_TOKEN(executor_type))
950
+ {
951
+ asio::error_code open_ec;
952
+ if (!is_open())
953
+ {
954
+ const protocol_type protocol = peer_endpoint.protocol();
955
+ impl_.get_service().open(impl_.get_implementation(), protocol, open_ec);
956
+ }
957
+
958
+ return async_initiate<ConnectHandler, void (asio::error_code)>(
959
+ initiate_async_connect(this), handler, peer_endpoint, open_ec);
960
+ }
961
+
962
+ /// Set an option on the socket.
963
+ /**
964
+ * This function is used to set an option on the socket.
965
+ *
966
+ * @param option The new option value to be set on the socket.
967
+ *
968
+ * @throws asio::system_error Thrown on failure.
969
+ *
970
+ * @sa SettableSocketOption @n
971
+ * asio::socket_base::broadcast @n
972
+ * asio::socket_base::do_not_route @n
973
+ * asio::socket_base::keep_alive @n
974
+ * asio::socket_base::linger @n
975
+ * asio::socket_base::receive_buffer_size @n
976
+ * asio::socket_base::receive_low_watermark @n
977
+ * asio::socket_base::reuse_address @n
978
+ * asio::socket_base::send_buffer_size @n
979
+ * asio::socket_base::send_low_watermark @n
980
+ * asio::ip::multicast::join_group @n
981
+ * asio::ip::multicast::leave_group @n
982
+ * asio::ip::multicast::enable_loopback @n
983
+ * asio::ip::multicast::outbound_interface @n
984
+ * asio::ip::multicast::hops @n
985
+ * asio::ip::tcp::no_delay
986
+ *
987
+ * @par Example
988
+ * Setting the IPPROTO_TCP/TCP_NODELAY option:
989
+ * @code
990
+ * asio::ip::tcp::socket socket(my_context);
991
+ * ...
992
+ * asio::ip::tcp::no_delay option(true);
993
+ * socket.set_option(option);
994
+ * @endcode
995
+ */
996
+ template <typename SettableSocketOption>
997
+ void set_option(const SettableSocketOption& option)
998
+ {
999
+ asio::error_code ec;
1000
+ impl_.get_service().set_option(impl_.get_implementation(), option, ec);
1001
+ asio::detail::throw_error(ec, "set_option");
1002
+ }
1003
+
1004
+ /// Set an option on the socket.
1005
+ /**
1006
+ * This function is used to set an option on the socket.
1007
+ *
1008
+ * @param option The new option value to be set on the socket.
1009
+ *
1010
+ * @param ec Set to indicate what error occurred, if any.
1011
+ *
1012
+ * @sa SettableSocketOption @n
1013
+ * asio::socket_base::broadcast @n
1014
+ * asio::socket_base::do_not_route @n
1015
+ * asio::socket_base::keep_alive @n
1016
+ * asio::socket_base::linger @n
1017
+ * asio::socket_base::receive_buffer_size @n
1018
+ * asio::socket_base::receive_low_watermark @n
1019
+ * asio::socket_base::reuse_address @n
1020
+ * asio::socket_base::send_buffer_size @n
1021
+ * asio::socket_base::send_low_watermark @n
1022
+ * asio::ip::multicast::join_group @n
1023
+ * asio::ip::multicast::leave_group @n
1024
+ * asio::ip::multicast::enable_loopback @n
1025
+ * asio::ip::multicast::outbound_interface @n
1026
+ * asio::ip::multicast::hops @n
1027
+ * asio::ip::tcp::no_delay
1028
+ *
1029
+ * @par Example
1030
+ * Setting the IPPROTO_TCP/TCP_NODELAY option:
1031
+ * @code
1032
+ * asio::ip::tcp::socket socket(my_context);
1033
+ * ...
1034
+ * asio::ip::tcp::no_delay option(true);
1035
+ * asio::error_code ec;
1036
+ * socket.set_option(option, ec);
1037
+ * if (ec)
1038
+ * {
1039
+ * // An error occurred.
1040
+ * }
1041
+ * @endcode
1042
+ */
1043
+ template <typename SettableSocketOption>
1044
+ ASIO_SYNC_OP_VOID set_option(const SettableSocketOption& option,
1045
+ asio::error_code& ec)
1046
+ {
1047
+ impl_.get_service().set_option(impl_.get_implementation(), option, ec);
1048
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1049
+ }
1050
+
1051
+ /// Get an option from the socket.
1052
+ /**
1053
+ * This function is used to get the current value of an option on the socket.
1054
+ *
1055
+ * @param option The option value to be obtained from the socket.
1056
+ *
1057
+ * @throws asio::system_error Thrown on failure.
1058
+ *
1059
+ * @sa GettableSocketOption @n
1060
+ * asio::socket_base::broadcast @n
1061
+ * asio::socket_base::do_not_route @n
1062
+ * asio::socket_base::keep_alive @n
1063
+ * asio::socket_base::linger @n
1064
+ * asio::socket_base::receive_buffer_size @n
1065
+ * asio::socket_base::receive_low_watermark @n
1066
+ * asio::socket_base::reuse_address @n
1067
+ * asio::socket_base::send_buffer_size @n
1068
+ * asio::socket_base::send_low_watermark @n
1069
+ * asio::ip::multicast::join_group @n
1070
+ * asio::ip::multicast::leave_group @n
1071
+ * asio::ip::multicast::enable_loopback @n
1072
+ * asio::ip::multicast::outbound_interface @n
1073
+ * asio::ip::multicast::hops @n
1074
+ * asio::ip::tcp::no_delay
1075
+ *
1076
+ * @par Example
1077
+ * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
1078
+ * @code
1079
+ * asio::ip::tcp::socket socket(my_context);
1080
+ * ...
1081
+ * asio::ip::tcp::socket::keep_alive option;
1082
+ * socket.get_option(option);
1083
+ * bool is_set = option.value();
1084
+ * @endcode
1085
+ */
1086
+ template <typename GettableSocketOption>
1087
+ void get_option(GettableSocketOption& option) const
1088
+ {
1089
+ asio::error_code ec;
1090
+ impl_.get_service().get_option(impl_.get_implementation(), option, ec);
1091
+ asio::detail::throw_error(ec, "get_option");
1092
+ }
1093
+
1094
+ /// Get an option from the socket.
1095
+ /**
1096
+ * This function is used to get the current value of an option on the socket.
1097
+ *
1098
+ * @param option The option value to be obtained from the socket.
1099
+ *
1100
+ * @param ec Set to indicate what error occurred, if any.
1101
+ *
1102
+ * @sa GettableSocketOption @n
1103
+ * asio::socket_base::broadcast @n
1104
+ * asio::socket_base::do_not_route @n
1105
+ * asio::socket_base::keep_alive @n
1106
+ * asio::socket_base::linger @n
1107
+ * asio::socket_base::receive_buffer_size @n
1108
+ * asio::socket_base::receive_low_watermark @n
1109
+ * asio::socket_base::reuse_address @n
1110
+ * asio::socket_base::send_buffer_size @n
1111
+ * asio::socket_base::send_low_watermark @n
1112
+ * asio::ip::multicast::join_group @n
1113
+ * asio::ip::multicast::leave_group @n
1114
+ * asio::ip::multicast::enable_loopback @n
1115
+ * asio::ip::multicast::outbound_interface @n
1116
+ * asio::ip::multicast::hops @n
1117
+ * asio::ip::tcp::no_delay
1118
+ *
1119
+ * @par Example
1120
+ * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
1121
+ * @code
1122
+ * asio::ip::tcp::socket socket(my_context);
1123
+ * ...
1124
+ * asio::ip::tcp::socket::keep_alive option;
1125
+ * asio::error_code ec;
1126
+ * socket.get_option(option, ec);
1127
+ * if (ec)
1128
+ * {
1129
+ * // An error occurred.
1130
+ * }
1131
+ * bool is_set = option.value();
1132
+ * @endcode
1133
+ */
1134
+ template <typename GettableSocketOption>
1135
+ ASIO_SYNC_OP_VOID get_option(GettableSocketOption& option,
1136
+ asio::error_code& ec) const
1137
+ {
1138
+ impl_.get_service().get_option(impl_.get_implementation(), option, ec);
1139
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1140
+ }
1141
+
1142
+ /// Perform an IO control command on the socket.
1143
+ /**
1144
+ * This function is used to execute an IO control command on the socket.
1145
+ *
1146
+ * @param command The IO control command to be performed on the socket.
1147
+ *
1148
+ * @throws asio::system_error Thrown on failure.
1149
+ *
1150
+ * @sa IoControlCommand @n
1151
+ * asio::socket_base::bytes_readable @n
1152
+ * asio::socket_base::non_blocking_io
1153
+ *
1154
+ * @par Example
1155
+ * Getting the number of bytes ready to read:
1156
+ * @code
1157
+ * asio::ip::tcp::socket socket(my_context);
1158
+ * ...
1159
+ * asio::ip::tcp::socket::bytes_readable command;
1160
+ * socket.io_control(command);
1161
+ * std::size_t bytes_readable = command.get();
1162
+ * @endcode
1163
+ */
1164
+ template <typename IoControlCommand>
1165
+ void io_control(IoControlCommand& command)
1166
+ {
1167
+ asio::error_code ec;
1168
+ impl_.get_service().io_control(impl_.get_implementation(), command, ec);
1169
+ asio::detail::throw_error(ec, "io_control");
1170
+ }
1171
+
1172
+ /// Perform an IO control command on the socket.
1173
+ /**
1174
+ * This function is used to execute an IO control command on the socket.
1175
+ *
1176
+ * @param command The IO control command to be performed on the socket.
1177
+ *
1178
+ * @param ec Set to indicate what error occurred, if any.
1179
+ *
1180
+ * @sa IoControlCommand @n
1181
+ * asio::socket_base::bytes_readable @n
1182
+ * asio::socket_base::non_blocking_io
1183
+ *
1184
+ * @par Example
1185
+ * Getting the number of bytes ready to read:
1186
+ * @code
1187
+ * asio::ip::tcp::socket socket(my_context);
1188
+ * ...
1189
+ * asio::ip::tcp::socket::bytes_readable command;
1190
+ * asio::error_code ec;
1191
+ * socket.io_control(command, ec);
1192
+ * if (ec)
1193
+ * {
1194
+ * // An error occurred.
1195
+ * }
1196
+ * std::size_t bytes_readable = command.get();
1197
+ * @endcode
1198
+ */
1199
+ template <typename IoControlCommand>
1200
+ ASIO_SYNC_OP_VOID io_control(IoControlCommand& command,
1201
+ asio::error_code& ec)
1202
+ {
1203
+ impl_.get_service().io_control(impl_.get_implementation(), command, ec);
1204
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1205
+ }
1206
+
1207
+ /// Gets the non-blocking mode of the socket.
1208
+ /**
1209
+ * @returns @c true if the socket's synchronous operations will fail with
1210
+ * asio::error::would_block if they are unable to perform the requested
1211
+ * operation immediately. If @c false, synchronous operations will block
1212
+ * until complete.
1213
+ *
1214
+ * @note The non-blocking mode has no effect on the behaviour of asynchronous
1215
+ * operations. Asynchronous operations will never fail with the error
1216
+ * asio::error::would_block.
1217
+ */
1218
+ bool non_blocking() const
1219
+ {
1220
+ return impl_.get_service().non_blocking(impl_.get_implementation());
1221
+ }
1222
+
1223
+ /// Sets the non-blocking mode of the socket.
1224
+ /**
1225
+ * @param mode If @c true, the socket's synchronous operations will fail with
1226
+ * asio::error::would_block if they are unable to perform the requested
1227
+ * operation immediately. If @c false, synchronous operations will block
1228
+ * until complete.
1229
+ *
1230
+ * @throws asio::system_error Thrown on failure.
1231
+ *
1232
+ * @note The non-blocking mode has no effect on the behaviour of asynchronous
1233
+ * operations. Asynchronous operations will never fail with the error
1234
+ * asio::error::would_block.
1235
+ */
1236
+ void non_blocking(bool mode)
1237
+ {
1238
+ asio::error_code ec;
1239
+ impl_.get_service().non_blocking(impl_.get_implementation(), mode, ec);
1240
+ asio::detail::throw_error(ec, "non_blocking");
1241
+ }
1242
+
1243
+ /// Sets the non-blocking mode of the socket.
1244
+ /**
1245
+ * @param mode If @c true, the socket's synchronous operations will fail with
1246
+ * asio::error::would_block if they are unable to perform the requested
1247
+ * operation immediately. If @c false, synchronous operations will block
1248
+ * until complete.
1249
+ *
1250
+ * @param ec Set to indicate what error occurred, if any.
1251
+ *
1252
+ * @note The non-blocking mode has no effect on the behaviour of asynchronous
1253
+ * operations. Asynchronous operations will never fail with the error
1254
+ * asio::error::would_block.
1255
+ */
1256
+ ASIO_SYNC_OP_VOID non_blocking(
1257
+ bool mode, asio::error_code& ec)
1258
+ {
1259
+ impl_.get_service().non_blocking(impl_.get_implementation(), mode, ec);
1260
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1261
+ }
1262
+
1263
+ /// Gets the non-blocking mode of the native socket implementation.
1264
+ /**
1265
+ * This function is used to retrieve the non-blocking mode of the underlying
1266
+ * native socket. This mode has no effect on the behaviour of the socket
1267
+ * object's synchronous operations.
1268
+ *
1269
+ * @returns @c true if the underlying socket is in non-blocking mode and
1270
+ * direct system calls may fail with asio::error::would_block (or the
1271
+ * equivalent system error).
1272
+ *
1273
+ * @note The current non-blocking mode is cached by the socket object.
1274
+ * Consequently, the return value may be incorrect if the non-blocking mode
1275
+ * was set directly on the native socket.
1276
+ *
1277
+ * @par Example
1278
+ * This function is intended to allow the encapsulation of arbitrary
1279
+ * non-blocking system calls as asynchronous operations, in a way that is
1280
+ * transparent to the user of the socket object. The following example
1281
+ * illustrates how Linux's @c sendfile system call might be encapsulated:
1282
+ * @code template <typename Handler>
1283
+ * struct sendfile_op
1284
+ * {
1285
+ * tcp::socket& sock_;
1286
+ * int fd_;
1287
+ * Handler handler_;
1288
+ * off_t offset_;
1289
+ * std::size_t total_bytes_transferred_;
1290
+ *
1291
+ * // Function call operator meeting WriteHandler requirements.
1292
+ * // Used as the handler for the async_write_some operation.
1293
+ * void operator()(asio::error_code ec, std::size_t)
1294
+ * {
1295
+ * // Put the underlying socket into non-blocking mode.
1296
+ * if (!ec)
1297
+ * if (!sock_.native_non_blocking())
1298
+ * sock_.native_non_blocking(true, ec);
1299
+ *
1300
+ * if (!ec)
1301
+ * {
1302
+ * for (;;)
1303
+ * {
1304
+ * // Try the system call.
1305
+ * errno = 0;
1306
+ * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
1307
+ * ec = asio::error_code(n < 0 ? errno : 0,
1308
+ * asio::error::get_system_category());
1309
+ * total_bytes_transferred_ += ec ? 0 : n;
1310
+ *
1311
+ * // Retry operation immediately if interrupted by signal.
1312
+ * if (ec == asio::error::interrupted)
1313
+ * continue;
1314
+ *
1315
+ * // Check if we need to run the operation again.
1316
+ * if (ec == asio::error::would_block
1317
+ * || ec == asio::error::try_again)
1318
+ * {
1319
+ * // We have to wait for the socket to become ready again.
1320
+ * sock_.async_wait(tcp::socket::wait_write, *this);
1321
+ * return;
1322
+ * }
1323
+ *
1324
+ * if (ec || n == 0)
1325
+ * {
1326
+ * // An error occurred, or we have reached the end of the file.
1327
+ * // Either way we must exit the loop so we can call the handler.
1328
+ * break;
1329
+ * }
1330
+ *
1331
+ * // Loop around to try calling sendfile again.
1332
+ * }
1333
+ * }
1334
+ *
1335
+ * // Pass result back to user's handler.
1336
+ * handler_(ec, total_bytes_transferred_);
1337
+ * }
1338
+ * };
1339
+ *
1340
+ * template <typename Handler>
1341
+ * void async_sendfile(tcp::socket& sock, int fd, Handler h)
1342
+ * {
1343
+ * sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
1344
+ * sock.async_wait(tcp::socket::wait_write, op);
1345
+ * } @endcode
1346
+ */
1347
+ bool native_non_blocking() const
1348
+ {
1349
+ return impl_.get_service().native_non_blocking(impl_.get_implementation());
1350
+ }
1351
+
1352
+ /// Sets the non-blocking mode of the native socket implementation.
1353
+ /**
1354
+ * This function is used to modify the non-blocking mode of the underlying
1355
+ * native socket. It has no effect on the behaviour of the socket object's
1356
+ * synchronous operations.
1357
+ *
1358
+ * @param mode If @c true, the underlying socket is put into non-blocking
1359
+ * mode and direct system calls may fail with asio::error::would_block
1360
+ * (or the equivalent system error).
1361
+ *
1362
+ * @throws asio::system_error Thrown on failure. If the @c mode is
1363
+ * @c false, but the current value of @c non_blocking() is @c true, this
1364
+ * function fails with asio::error::invalid_argument, as the
1365
+ * combination does not make sense.
1366
+ *
1367
+ * @par Example
1368
+ * This function is intended to allow the encapsulation of arbitrary
1369
+ * non-blocking system calls as asynchronous operations, in a way that is
1370
+ * transparent to the user of the socket object. The following example
1371
+ * illustrates how Linux's @c sendfile system call might be encapsulated:
1372
+ * @code template <typename Handler>
1373
+ * struct sendfile_op
1374
+ * {
1375
+ * tcp::socket& sock_;
1376
+ * int fd_;
1377
+ * Handler handler_;
1378
+ * off_t offset_;
1379
+ * std::size_t total_bytes_transferred_;
1380
+ *
1381
+ * // Function call operator meeting WriteHandler requirements.
1382
+ * // Used as the handler for the async_write_some operation.
1383
+ * void operator()(asio::error_code ec, std::size_t)
1384
+ * {
1385
+ * // Put the underlying socket into non-blocking mode.
1386
+ * if (!ec)
1387
+ * if (!sock_.native_non_blocking())
1388
+ * sock_.native_non_blocking(true, ec);
1389
+ *
1390
+ * if (!ec)
1391
+ * {
1392
+ * for (;;)
1393
+ * {
1394
+ * // Try the system call.
1395
+ * errno = 0;
1396
+ * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
1397
+ * ec = asio::error_code(n < 0 ? errno : 0,
1398
+ * asio::error::get_system_category());
1399
+ * total_bytes_transferred_ += ec ? 0 : n;
1400
+ *
1401
+ * // Retry operation immediately if interrupted by signal.
1402
+ * if (ec == asio::error::interrupted)
1403
+ * continue;
1404
+ *
1405
+ * // Check if we need to run the operation again.
1406
+ * if (ec == asio::error::would_block
1407
+ * || ec == asio::error::try_again)
1408
+ * {
1409
+ * // We have to wait for the socket to become ready again.
1410
+ * sock_.async_wait(tcp::socket::wait_write, *this);
1411
+ * return;
1412
+ * }
1413
+ *
1414
+ * if (ec || n == 0)
1415
+ * {
1416
+ * // An error occurred, or we have reached the end of the file.
1417
+ * // Either way we must exit the loop so we can call the handler.
1418
+ * break;
1419
+ * }
1420
+ *
1421
+ * // Loop around to try calling sendfile again.
1422
+ * }
1423
+ * }
1424
+ *
1425
+ * // Pass result back to user's handler.
1426
+ * handler_(ec, total_bytes_transferred_);
1427
+ * }
1428
+ * };
1429
+ *
1430
+ * template <typename Handler>
1431
+ * void async_sendfile(tcp::socket& sock, int fd, Handler h)
1432
+ * {
1433
+ * sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
1434
+ * sock.async_wait(tcp::socket::wait_write, op);
1435
+ * } @endcode
1436
+ */
1437
+ void native_non_blocking(bool mode)
1438
+ {
1439
+ asio::error_code ec;
1440
+ impl_.get_service().native_non_blocking(
1441
+ impl_.get_implementation(), mode, ec);
1442
+ asio::detail::throw_error(ec, "native_non_blocking");
1443
+ }
1444
+
1445
+ /// Sets the non-blocking mode of the native socket implementation.
1446
+ /**
1447
+ * This function is used to modify the non-blocking mode of the underlying
1448
+ * native socket. It has no effect on the behaviour of the socket object's
1449
+ * synchronous operations.
1450
+ *
1451
+ * @param mode If @c true, the underlying socket is put into non-blocking
1452
+ * mode and direct system calls may fail with asio::error::would_block
1453
+ * (or the equivalent system error).
1454
+ *
1455
+ * @param ec Set to indicate what error occurred, if any. If the @c mode is
1456
+ * @c false, but the current value of @c non_blocking() is @c true, this
1457
+ * function fails with asio::error::invalid_argument, as the
1458
+ * combination does not make sense.
1459
+ *
1460
+ * @par Example
1461
+ * This function is intended to allow the encapsulation of arbitrary
1462
+ * non-blocking system calls as asynchronous operations, in a way that is
1463
+ * transparent to the user of the socket object. The following example
1464
+ * illustrates how Linux's @c sendfile system call might be encapsulated:
1465
+ * @code template <typename Handler>
1466
+ * struct sendfile_op
1467
+ * {
1468
+ * tcp::socket& sock_;
1469
+ * int fd_;
1470
+ * Handler handler_;
1471
+ * off_t offset_;
1472
+ * std::size_t total_bytes_transferred_;
1473
+ *
1474
+ * // Function call operator meeting WriteHandler requirements.
1475
+ * // Used as the handler for the async_write_some operation.
1476
+ * void operator()(asio::error_code ec, std::size_t)
1477
+ * {
1478
+ * // Put the underlying socket into non-blocking mode.
1479
+ * if (!ec)
1480
+ * if (!sock_.native_non_blocking())
1481
+ * sock_.native_non_blocking(true, ec);
1482
+ *
1483
+ * if (!ec)
1484
+ * {
1485
+ * for (;;)
1486
+ * {
1487
+ * // Try the system call.
1488
+ * errno = 0;
1489
+ * int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
1490
+ * ec = asio::error_code(n < 0 ? errno : 0,
1491
+ * asio::error::get_system_category());
1492
+ * total_bytes_transferred_ += ec ? 0 : n;
1493
+ *
1494
+ * // Retry operation immediately if interrupted by signal.
1495
+ * if (ec == asio::error::interrupted)
1496
+ * continue;
1497
+ *
1498
+ * // Check if we need to run the operation again.
1499
+ * if (ec == asio::error::would_block
1500
+ * || ec == asio::error::try_again)
1501
+ * {
1502
+ * // We have to wait for the socket to become ready again.
1503
+ * sock_.async_wait(tcp::socket::wait_write, *this);
1504
+ * return;
1505
+ * }
1506
+ *
1507
+ * if (ec || n == 0)
1508
+ * {
1509
+ * // An error occurred, or we have reached the end of the file.
1510
+ * // Either way we must exit the loop so we can call the handler.
1511
+ * break;
1512
+ * }
1513
+ *
1514
+ * // Loop around to try calling sendfile again.
1515
+ * }
1516
+ * }
1517
+ *
1518
+ * // Pass result back to user's handler.
1519
+ * handler_(ec, total_bytes_transferred_);
1520
+ * }
1521
+ * };
1522
+ *
1523
+ * template <typename Handler>
1524
+ * void async_sendfile(tcp::socket& sock, int fd, Handler h)
1525
+ * {
1526
+ * sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
1527
+ * sock.async_wait(tcp::socket::wait_write, op);
1528
+ * } @endcode
1529
+ */
1530
+ ASIO_SYNC_OP_VOID native_non_blocking(
1531
+ bool mode, asio::error_code& ec)
1532
+ {
1533
+ impl_.get_service().native_non_blocking(
1534
+ impl_.get_implementation(), mode, ec);
1535
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1536
+ }
1537
+
1538
+ /// Get the local endpoint of the socket.
1539
+ /**
1540
+ * This function is used to obtain the locally bound endpoint of the socket.
1541
+ *
1542
+ * @returns An object that represents the local endpoint of the socket.
1543
+ *
1544
+ * @throws asio::system_error Thrown on failure.
1545
+ *
1546
+ * @par Example
1547
+ * @code
1548
+ * asio::ip::tcp::socket socket(my_context);
1549
+ * ...
1550
+ * asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
1551
+ * @endcode
1552
+ */
1553
+ endpoint_type local_endpoint() const
1554
+ {
1555
+ asio::error_code ec;
1556
+ endpoint_type ep = impl_.get_service().local_endpoint(
1557
+ impl_.get_implementation(), ec);
1558
+ asio::detail::throw_error(ec, "local_endpoint");
1559
+ return ep;
1560
+ }
1561
+
1562
+ /// Get the local endpoint of the socket.
1563
+ /**
1564
+ * This function is used to obtain the locally bound endpoint of the socket.
1565
+ *
1566
+ * @param ec Set to indicate what error occurred, if any.
1567
+ *
1568
+ * @returns An object that represents the local endpoint of the socket.
1569
+ * Returns a default-constructed endpoint object if an error occurred.
1570
+ *
1571
+ * @par Example
1572
+ * @code
1573
+ * asio::ip::tcp::socket socket(my_context);
1574
+ * ...
1575
+ * asio::error_code ec;
1576
+ * asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
1577
+ * if (ec)
1578
+ * {
1579
+ * // An error occurred.
1580
+ * }
1581
+ * @endcode
1582
+ */
1583
+ endpoint_type local_endpoint(asio::error_code& ec) const
1584
+ {
1585
+ return impl_.get_service().local_endpoint(impl_.get_implementation(), ec);
1586
+ }
1587
+
1588
+ /// Get the remote endpoint of the socket.
1589
+ /**
1590
+ * This function is used to obtain the remote endpoint of the socket.
1591
+ *
1592
+ * @returns An object that represents the remote endpoint of the socket.
1593
+ *
1594
+ * @throws asio::system_error Thrown on failure.
1595
+ *
1596
+ * @par Example
1597
+ * @code
1598
+ * asio::ip::tcp::socket socket(my_context);
1599
+ * ...
1600
+ * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
1601
+ * @endcode
1602
+ */
1603
+ endpoint_type remote_endpoint() const
1604
+ {
1605
+ asio::error_code ec;
1606
+ endpoint_type ep = impl_.get_service().remote_endpoint(
1607
+ impl_.get_implementation(), ec);
1608
+ asio::detail::throw_error(ec, "remote_endpoint");
1609
+ return ep;
1610
+ }
1611
+
1612
+ /// Get the remote endpoint of the socket.
1613
+ /**
1614
+ * This function is used to obtain the remote endpoint of the socket.
1615
+ *
1616
+ * @param ec Set to indicate what error occurred, if any.
1617
+ *
1618
+ * @returns An object that represents the remote endpoint of the socket.
1619
+ * Returns a default-constructed endpoint object if an error occurred.
1620
+ *
1621
+ * @par Example
1622
+ * @code
1623
+ * asio::ip::tcp::socket socket(my_context);
1624
+ * ...
1625
+ * asio::error_code ec;
1626
+ * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
1627
+ * if (ec)
1628
+ * {
1629
+ * // An error occurred.
1630
+ * }
1631
+ * @endcode
1632
+ */
1633
+ endpoint_type remote_endpoint(asio::error_code& ec) const
1634
+ {
1635
+ return impl_.get_service().remote_endpoint(impl_.get_implementation(), ec);
1636
+ }
1637
+
1638
+ /// Disable sends or receives on the socket.
1639
+ /**
1640
+ * This function is used to disable send operations, receive operations, or
1641
+ * both.
1642
+ *
1643
+ * @param what Determines what types of operation will no longer be allowed.
1644
+ *
1645
+ * @throws asio::system_error Thrown on failure.
1646
+ *
1647
+ * @par Example
1648
+ * Shutting down the send side of the socket:
1649
+ * @code
1650
+ * asio::ip::tcp::socket socket(my_context);
1651
+ * ...
1652
+ * socket.shutdown(asio::ip::tcp::socket::shutdown_send);
1653
+ * @endcode
1654
+ */
1655
+ void shutdown(shutdown_type what)
1656
+ {
1657
+ asio::error_code ec;
1658
+ impl_.get_service().shutdown(impl_.get_implementation(), what, ec);
1659
+ asio::detail::throw_error(ec, "shutdown");
1660
+ }
1661
+
1662
+ /// Disable sends or receives on the socket.
1663
+ /**
1664
+ * This function is used to disable send operations, receive operations, or
1665
+ * both.
1666
+ *
1667
+ * @param what Determines what types of operation will no longer be allowed.
1668
+ *
1669
+ * @param ec Set to indicate what error occurred, if any.
1670
+ *
1671
+ * @par Example
1672
+ * Shutting down the send side of the socket:
1673
+ * @code
1674
+ * asio::ip::tcp::socket socket(my_context);
1675
+ * ...
1676
+ * asio::error_code ec;
1677
+ * socket.shutdown(asio::ip::tcp::socket::shutdown_send, ec);
1678
+ * if (ec)
1679
+ * {
1680
+ * // An error occurred.
1681
+ * }
1682
+ * @endcode
1683
+ */
1684
+ ASIO_SYNC_OP_VOID shutdown(shutdown_type what,
1685
+ asio::error_code& ec)
1686
+ {
1687
+ impl_.get_service().shutdown(impl_.get_implementation(), what, ec);
1688
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1689
+ }
1690
+
1691
+ /// Wait for the socket to become ready to read, ready to write, or to have
1692
+ /// pending error conditions.
1693
+ /**
1694
+ * This function is used to perform a blocking wait for a socket to enter
1695
+ * a ready to read, write or error condition state.
1696
+ *
1697
+ * @param w Specifies the desired socket state.
1698
+ *
1699
+ * @par Example
1700
+ * Waiting for a socket to become readable.
1701
+ * @code
1702
+ * asio::ip::tcp::socket socket(my_context);
1703
+ * ...
1704
+ * socket.wait(asio::ip::tcp::socket::wait_read);
1705
+ * @endcode
1706
+ */
1707
+ void wait(wait_type w)
1708
+ {
1709
+ asio::error_code ec;
1710
+ impl_.get_service().wait(impl_.get_implementation(), w, ec);
1711
+ asio::detail::throw_error(ec, "wait");
1712
+ }
1713
+
1714
+ /// Wait for the socket to become ready to read, ready to write, or to have
1715
+ /// pending error conditions.
1716
+ /**
1717
+ * This function is used to perform a blocking wait for a socket to enter
1718
+ * a ready to read, write or error condition state.
1719
+ *
1720
+ * @param w Specifies the desired socket state.
1721
+ *
1722
+ * @param ec Set to indicate what error occurred, if any.
1723
+ *
1724
+ * @par Example
1725
+ * Waiting for a socket to become readable.
1726
+ * @code
1727
+ * asio::ip::tcp::socket socket(my_context);
1728
+ * ...
1729
+ * asio::error_code ec;
1730
+ * socket.wait(asio::ip::tcp::socket::wait_read, ec);
1731
+ * @endcode
1732
+ */
1733
+ ASIO_SYNC_OP_VOID wait(wait_type w, asio::error_code& ec)
1734
+ {
1735
+ impl_.get_service().wait(impl_.get_implementation(), w, ec);
1736
+ ASIO_SYNC_OP_VOID_RETURN(ec);
1737
+ }
1738
+
1739
+ /// Asynchronously wait for the socket to become ready to read, ready to
1740
+ /// write, or to have pending error conditions.
1741
+ /**
1742
+ * This function is used to perform an asynchronous wait for a socket to enter
1743
+ * a ready to read, write or error condition state.
1744
+ *
1745
+ * @param w Specifies the desired socket state.
1746
+ *
1747
+ * @param handler The handler to be called when the wait operation completes.
1748
+ * Copies will be made of the handler as required. The function signature of
1749
+ * the handler must be:
1750
+ * @code void handler(
1751
+ * const asio::error_code& error // Result of operation
1752
+ * ); @endcode
1753
+ * Regardless of whether the asynchronous operation completes immediately or
1754
+ * not, the handler will not be invoked from within this function. On
1755
+ * immediate completion, invocation of the handler will be performed in a
1756
+ * manner equivalent to using asio::post().
1757
+ *
1758
+ * @par Example
1759
+ * @code
1760
+ * void wait_handler(const asio::error_code& error)
1761
+ * {
1762
+ * if (!error)
1763
+ * {
1764
+ * // Wait succeeded.
1765
+ * }
1766
+ * }
1767
+ *
1768
+ * ...
1769
+ *
1770
+ * asio::ip::tcp::socket socket(my_context);
1771
+ * ...
1772
+ * socket.async_wait(asio::ip::tcp::socket::wait_read, wait_handler);
1773
+ * @endcode
1774
+ */
1775
+ template <
1776
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code))
1777
+ WaitHandler ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)>
1778
+ ASIO_INITFN_AUTO_RESULT_TYPE(WaitHandler,
1779
+ void (asio::error_code))
1780
+ async_wait(wait_type w,
1781
+ ASIO_MOVE_ARG(WaitHandler) handler
1782
+ ASIO_DEFAULT_COMPLETION_TOKEN(executor_type))
1783
+ {
1784
+ return async_initiate<WaitHandler, void (asio::error_code)>(
1785
+ initiate_async_wait(this), handler, w);
1786
+ }
1787
+
1788
+ protected:
1789
+ /// Protected destructor to prevent deletion through this type.
1790
+ /**
1791
+ * This function destroys the socket, cancelling any outstanding asynchronous
1792
+ * operations associated with the socket as if by calling @c cancel.
1793
+ */
1794
+ ~basic_socket()
1795
+ {
1796
+ }
1797
+
1798
+ #if defined(ASIO_WINDOWS_RUNTIME)
1799
+ detail::io_object_impl<
1800
+ detail::null_socket_service<Protocol>, Executor> impl_;
1801
+ #elif defined(ASIO_HAS_IOCP)
1802
+ detail::io_object_impl<
1803
+ detail::win_iocp_socket_service<Protocol>, Executor> impl_;
1804
+ #else
1805
+ detail::io_object_impl<
1806
+ detail::reactive_socket_service<Protocol>, Executor> impl_;
1807
+ #endif
1808
+
1809
+ private:
1810
+ // Disallow copying and assignment.
1811
+ basic_socket(const basic_socket&) ASIO_DELETED;
1812
+ basic_socket& operator=(const basic_socket&) ASIO_DELETED;
1813
+
1814
+ class initiate_async_connect
1815
+ {
1816
+ public:
1817
+ typedef Executor executor_type;
1818
+
1819
+ explicit initiate_async_connect(basic_socket* self)
1820
+ : self_(self)
1821
+ {
1822
+ }
1823
+
1824
+ executor_type get_executor() const ASIO_NOEXCEPT
1825
+ {
1826
+ return self_->get_executor();
1827
+ }
1828
+
1829
+ template <typename ConnectHandler>
1830
+ void operator()(ASIO_MOVE_ARG(ConnectHandler) handler,
1831
+ const endpoint_type& peer_endpoint,
1832
+ const asio::error_code& open_ec) const
1833
+ {
1834
+ // If you get an error on the following line it means that your handler
1835
+ // does not meet the documented type requirements for a ConnectHandler.
1836
+ ASIO_CONNECT_HANDLER_CHECK(ConnectHandler, handler) type_check;
1837
+
1838
+ if (open_ec)
1839
+ {
1840
+ asio::post(self_->impl_.get_executor(),
1841
+ asio::detail::bind_handler(
1842
+ ASIO_MOVE_CAST(ConnectHandler)(handler), open_ec));
1843
+ }
1844
+ else
1845
+ {
1846
+ detail::non_const_lvalue<ConnectHandler> handler2(handler);
1847
+ self_->impl_.get_service().async_connect(
1848
+ self_->impl_.get_implementation(), peer_endpoint,
1849
+ handler2.value, self_->impl_.get_implementation_executor());
1850
+ }
1851
+ }
1852
+
1853
+ private:
1854
+ basic_socket* self_;
1855
+ };
1856
+
1857
+ class initiate_async_wait
1858
+ {
1859
+ public:
1860
+ typedef Executor executor_type;
1861
+
1862
+ explicit initiate_async_wait(basic_socket* self)
1863
+ : self_(self)
1864
+ {
1865
+ }
1866
+
1867
+ executor_type get_executor() const ASIO_NOEXCEPT
1868
+ {
1869
+ return self_->get_executor();
1870
+ }
1871
+
1872
+ template <typename WaitHandler>
1873
+ void operator()(ASIO_MOVE_ARG(WaitHandler) handler, wait_type w) const
1874
+ {
1875
+ // If you get an error on the following line it means that your handler
1876
+ // does not meet the documented type requirements for a WaitHandler.
1877
+ ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
1878
+
1879
+ detail::non_const_lvalue<WaitHandler> handler2(handler);
1880
+ self_->impl_.get_service().async_wait(
1881
+ self_->impl_.get_implementation(), w, handler2.value,
1882
+ self_->impl_.get_implementation_executor());
1883
+ }
1884
+
1885
+ private:
1886
+ basic_socket* self_;
1887
+ };
1888
+ };
1889
+
1890
+ } // namespace asio
1891
+
1892
+ #include "asio/detail/pop_options.hpp"
1893
+
1894
+ #endif // ASIO_BASIC_SOCKET_HPP