grpc 1.9.1 → 1.10.0.pre1

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

Potentially problematic release.


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

Files changed (637) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2654 -953
  3. data/etc/roots.pem +282 -683
  4. data/include/grpc/compression.h +9 -26
  5. data/include/grpc/grpc.h +10 -24
  6. data/include/grpc/grpc_security.h +7 -1
  7. data/include/grpc/impl/codegen/compression_types.h +5 -62
  8. data/include/grpc/impl/codegen/grpc_types.h +10 -6
  9. data/include/grpc/module.modulemap +1 -10
  10. data/include/grpc/support/alloc.h +3 -2
  11. data/include/grpc/support/log.h +1 -2
  12. data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
  13. data/src/boringssl/err_data.c +550 -496
  14. data/src/core/ext/census/grpc_context.cc +2 -1
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
  16. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
  17. data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
  18. data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
  20. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
  21. data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
  22. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
  23. data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
  30. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
  31. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
  32. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
  34. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
  35. data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
  36. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
  37. data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
  38. data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
  39. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver.cc +6 -52
  41. data/src/core/ext/filters/client_channel/resolver.h +98 -55
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
  48. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
  49. data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
  50. data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
  51. data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
  52. data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
  53. data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
  54. data/src/core/ext/filters/client_channel/subchannel.h +38 -45
  55. data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
  56. data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
  57. data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
  58. data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
  59. data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
  60. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
  61. data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
  62. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
  63. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
  64. data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
  65. data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
  66. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
  67. data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
  68. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  69. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
  70. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
  71. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
  72. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
  73. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
  74. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
  75. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
  76. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
  77. data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
  78. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
  79. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
  80. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
  81. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
  82. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
  83. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  84. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
  85. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
  87. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
  88. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
  89. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  90. data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
  91. data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
  92. data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
  93. data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
  94. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
  95. data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
  96. data/src/core/lib/{gpr → avl}/avl.cc +61 -57
  97. data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
  98. data/src/core/lib/backoff/backoff.cc +6 -5
  99. data/src/core/lib/channel/channel_args.cc +23 -109
  100. data/src/core/lib/channel/channel_args.h +5 -31
  101. data/src/core/lib/channel/channel_stack.cc +11 -8
  102. data/src/core/lib/channel/channel_stack_builder.cc +10 -7
  103. data/src/core/lib/channel/connected_channel.cc +18 -17
  104. data/src/core/lib/channel/handshaker.cc +8 -8
  105. data/src/core/lib/channel/handshaker_registry.cc +3 -2
  106. data/src/core/lib/compression/algorithm_metadata.h +13 -6
  107. data/src/core/lib/compression/compression.cc +72 -183
  108. data/src/core/lib/compression/compression_internal.cc +274 -0
  109. data/src/core/lib/compression/compression_internal.h +86 -0
  110. data/src/core/lib/compression/message_compress.cc +15 -15
  111. data/src/core/lib/compression/message_compress.h +4 -3
  112. data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
  113. data/src/core/lib/compression/stream_compression_identity.cc +1 -1
  114. data/src/core/lib/debug/stats.cc +10 -8
  115. data/src/core/lib/debug/stats_data.cc +2 -1
  116. data/src/core/lib/debug/trace.cc +3 -3
  117. data/src/core/lib/gpr/alloc.cc +7 -11
  118. data/src/core/lib/gpr/arena.cc +34 -12
  119. data/src/core/lib/gpr/atm.cc +2 -1
  120. data/src/core/lib/gpr/cpu_linux.cc +3 -3
  121. data/src/core/lib/gpr/cpu_posix.cc +2 -1
  122. data/src/core/lib/gpr/env.h +1 -1
  123. data/src/core/lib/gpr/env_linux.cc +1 -1
  124. data/src/core/lib/gpr/env_windows.cc +4 -4
  125. data/src/core/lib/gpr/fork.cc +16 -2
  126. data/src/core/lib/gpr/host_port.cc +5 -4
  127. data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
  128. data/src/core/lib/gpr/log.cc +5 -4
  129. data/src/core/lib/gpr/log_linux.cc +1 -1
  130. data/src/core/lib/gpr/mpscq.cc +1 -0
  131. data/src/core/lib/gpr/murmur_hash.cc +4 -4
  132. data/src/core/lib/gpr/string.cc +19 -16
  133. data/src/core/lib/gpr/string_posix.cc +3 -3
  134. data/src/core/lib/gpr/sync_posix.cc +5 -9
  135. data/src/core/lib/gpr/thd.cc +3 -3
  136. data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
  137. data/src/core/lib/gpr/thd_posix.cc +6 -4
  138. data/src/core/lib/gpr/thd_windows.cc +3 -1
  139. data/src/core/lib/gpr/time.cc +6 -4
  140. data/src/core/lib/gpr/time_posix.cc +2 -2
  141. data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
  142. data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
  143. data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
  144. data/src/core/lib/gpr/tls_pthread.cc +1 -1
  145. data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
  146. data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
  147. data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
  148. data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
  149. data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
  150. data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
  151. data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
  152. data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
  153. data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
  154. data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
  155. data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
  156. data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
  157. data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
  158. data/src/core/lib/http/format_request.cc +3 -3
  159. data/src/core/lib/http/httpcli.cc +6 -7
  160. data/src/core/lib/http/httpcli_security_connector.cc +10 -10
  161. data/src/core/lib/http/parser.cc +16 -12
  162. data/src/core/lib/iomgr/call_combiner.cc +12 -13
  163. data/src/core/lib/iomgr/closure.h +4 -6
  164. data/src/core/lib/iomgr/combiner.cc +10 -21
  165. data/src/core/lib/iomgr/error.cc +50 -55
  166. data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
  167. data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
  168. data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
  169. data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
  170. data/src/core/lib/iomgr/ev_posix.cc +47 -6
  171. data/src/core/lib/iomgr/exec_ctx.cc +10 -10
  172. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  173. data/src/core/lib/iomgr/executor.cc +16 -13
  174. data/src/core/lib/iomgr/fork_posix.cc +1 -3
  175. data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
  176. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  177. data/src/core/lib/iomgr/iomgr.cc +2 -2
  178. data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
  179. data/src/core/lib/iomgr/iomgr_uv.h +1 -1
  180. data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
  181. data/src/core/lib/iomgr/load_file.cc +3 -3
  182. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  183. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
  184. data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
  185. data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
  186. data/src/core/lib/iomgr/resource_quota.cc +36 -34
  187. data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
  188. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  189. data/src/core/lib/iomgr/socket_mutator.cc +7 -7
  190. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
  191. data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
  192. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
  193. data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
  194. data/src/core/lib/iomgr/tcp_posix.cc +47 -55
  195. data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
  196. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
  197. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
  198. data/src/core/lib/iomgr/tcp_windows.cc +1 -1
  199. data/src/core/lib/iomgr/timer_generic.cc +16 -14
  200. data/src/core/lib/iomgr/timer_heap.cc +8 -7
  201. data/src/core/lib/iomgr/timer_manager.cc +4 -3
  202. data/src/core/lib/iomgr/udp_server.cc +24 -16
  203. data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
  204. data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
  205. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
  206. data/src/core/lib/json/json.cc +1 -1
  207. data/src/core/lib/json/json_reader.cc +8 -6
  208. data/src/core/lib/json/json_string.cc +19 -18
  209. data/src/core/lib/json/json_writer.cc +10 -8
  210. data/src/core/lib/profiling/basic_timers.cc +1 -1
  211. data/src/core/lib/profiling/timers.h +3 -20
  212. data/src/core/lib/security/context/security_context.cc +16 -14
  213. data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
  214. data/src/core/lib/security/credentials/credentials.cc +9 -8
  215. data/src/core/lib/security/credentials/credentials.h +1 -1
  216. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
  217. data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
  218. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
  219. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
  220. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
  221. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
  222. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
  223. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
  224. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
  225. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
  226. data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
  227. data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
  228. data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
  229. data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
  230. data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
  231. data/src/core/lib/security/transport/security_handshaker.cc +19 -18
  232. data/src/core/lib/security/transport/security_handshaker.h +1 -1
  233. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  234. data/src/core/lib/slice/b64.cc +19 -16
  235. data/src/core/lib/slice/percent_encoding.cc +5 -5
  236. data/src/core/lib/slice/slice.cc +35 -33
  237. data/src/core/lib/slice/slice_buffer.cc +16 -14
  238. data/src/core/lib/slice/slice_hash_table.cc +3 -2
  239. data/src/core/lib/slice/slice_intern.cc +21 -25
  240. data/src/core/lib/slice/slice_string_helpers.cc +45 -9
  241. data/src/core/lib/slice/slice_string_helpers.h +6 -0
  242. data/src/core/lib/surface/byte_buffer.cc +2 -2
  243. data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
  244. data/src/core/lib/surface/call.cc +171 -260
  245. data/src/core/lib/surface/call_test_only.h +1 -13
  246. data/src/core/lib/surface/channel.cc +20 -43
  247. data/src/core/lib/surface/channel_init.cc +7 -7
  248. data/src/core/lib/surface/channel_ping.cc +2 -2
  249. data/src/core/lib/surface/completion_queue.cc +69 -75
  250. data/src/core/lib/surface/init.cc +4 -5
  251. data/src/core/lib/surface/init_secure.cc +1 -1
  252. data/src/core/lib/surface/lame_client.cc +1 -1
  253. data/src/core/lib/surface/server.cc +64 -59
  254. data/src/core/lib/surface/version.cc +2 -2
  255. data/src/core/lib/transport/bdp_estimator.cc +6 -5
  256. data/src/core/lib/transport/byte_stream.cc +23 -14
  257. data/src/core/lib/transport/byte_stream.h +1 -1
  258. data/src/core/lib/transport/connectivity_state.cc +9 -13
  259. data/src/core/lib/transport/error_utils.cc +10 -7
  260. data/src/core/lib/transport/metadata.cc +27 -26
  261. data/src/core/lib/transport/metadata.h +1 -1
  262. data/src/core/lib/transport/pid_controller.cc +2 -1
  263. data/src/core/lib/transport/service_config.cc +5 -5
  264. data/src/core/lib/transport/static_metadata.cc +225 -222
  265. data/src/core/lib/transport/static_metadata.h +77 -76
  266. data/src/core/lib/transport/timeout_encoding.cc +3 -2
  267. data/src/core/lib/transport/transport.cc +6 -5
  268. data/src/core/lib/transport/transport_op_string.cc +0 -1
  269. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  270. data/src/core/tsi/alts_transport_security.cc +61 -0
  271. data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
  272. data/src/core/tsi/fake_transport_security.cc +59 -43
  273. data/src/core/tsi/ssl_transport_security.cc +122 -107
  274. data/src/core/tsi/transport_security.cc +3 -3
  275. data/src/core/tsi/transport_security_adapter.cc +16 -10
  276. data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
  277. data/src/ruby/ext/grpc/rb_channel.c +3 -4
  278. data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
  279. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
  280. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
  281. data/src/ruby/ext/grpc/rb_server.c +52 -28
  282. data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
  283. data/src/ruby/lib/grpc/version.rb +1 -1
  284. data/src/ruby/pb/test/client.rb +1 -1
  285. data/src/ruby/pb/test/server.rb +1 -1
  286. data/src/ruby/spec/client_server_spec.rb +4 -2
  287. data/src/ruby/spec/generic/active_call_spec.rb +2 -1
  288. data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
  289. data/src/ruby/spec/server_spec.rb +26 -7
  290. data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
  291. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
  292. data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
  293. data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
  294. data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
  295. data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
  296. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
  297. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
  298. data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
  299. data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
  300. data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
  301. data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
  302. data/third_party/boringssl/crypto/base64/base64.c +65 -43
  303. data/third_party/boringssl/crypto/bio/bio.c +134 -110
  304. data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
  305. data/third_party/boringssl/crypto/bio/connect.c +17 -17
  306. data/third_party/boringssl/crypto/bio/fd.c +2 -1
  307. data/third_party/boringssl/crypto/bio/file.c +14 -14
  308. data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
  309. data/third_party/boringssl/crypto/bio/internal.h +14 -14
  310. data/third_party/boringssl/crypto/bio/pair.c +45 -45
  311. data/third_party/boringssl/crypto/bio/printf.c +6 -10
  312. data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
  313. data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
  314. data/third_party/boringssl/crypto/buf/buf.c +20 -44
  315. data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
  316. data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
  317. data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
  318. data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
  319. data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
  320. data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
  321. data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
  322. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
  323. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
  324. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
  325. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
  326. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
  327. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
  328. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
  329. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
  330. data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
  331. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
  332. data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
  333. data/third_party/boringssl/crypto/conf/conf.c +32 -20
  334. data/third_party/boringssl/crypto/conf/internal.h +3 -3
  335. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
  336. data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
  337. data/third_party/boringssl/crypto/cpu-intel.c +68 -43
  338. data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
  339. data/third_party/boringssl/crypto/crypto.c +54 -32
  340. data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
  341. data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
  342. data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
  343. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
  344. data/third_party/boringssl/crypto/dh/check.c +33 -34
  345. data/third_party/boringssl/crypto/dh/dh.c +72 -36
  346. data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
  347. data/third_party/boringssl/crypto/dh/params.c +1 -161
  348. data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
  349. data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
  350. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
  351. data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
  352. data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
  353. data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
  354. data/third_party/boringssl/crypto/engine/engine.c +6 -6
  355. data/third_party/boringssl/crypto/err/err.c +197 -106
  356. data/third_party/boringssl/crypto/err/internal.h +58 -0
  357. data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
  358. data/third_party/boringssl/crypto/evp/evp.c +6 -11
  359. data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
  360. data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
  361. data/third_party/boringssl/crypto/evp/internal.h +66 -51
  362. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
  363. data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
  364. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
  365. data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
  366. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
  367. data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
  368. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
  369. data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
  370. data/third_party/boringssl/crypto/evp/print.c +5 -36
  371. data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
  372. data/third_party/boringssl/crypto/ex_data.c +15 -45
  373. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
  374. data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
  375. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
  376. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
  377. data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
  378. data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
  379. data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
  380. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
  381. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
  382. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
  383. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
  384. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
  385. data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
  386. data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
  387. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
  388. data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
  389. data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
  390. data/third_party/boringssl/crypto/internal.h +301 -233
  391. data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
  392. data/third_party/boringssl/crypto/mem.c +76 -33
  393. data/third_party/boringssl/crypto/obj/obj.c +44 -28
  394. data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
  395. data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
  396. data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
  397. data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
  398. data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
  399. data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
  400. data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
  401. data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
  402. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
  403. data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
  404. data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
  405. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
  406. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
  407. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
  408. data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
  409. data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
  410. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
  411. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
  412. data/third_party/boringssl/crypto/pool/internal.h +2 -2
  413. data/third_party/boringssl/crypto/pool/pool.c +15 -15
  414. data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
  415. data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
  416. data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
  417. data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
  418. data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
  419. data/third_party/boringssl/crypto/refcount_c11.c +2 -2
  420. data/third_party/boringssl/crypto/refcount_lock.c +1 -1
  421. data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
  422. data/third_party/boringssl/crypto/stack/stack.c +13 -13
  423. data/third_party/boringssl/crypto/thread_none.c +1 -1
  424. data/third_party/boringssl/crypto/thread_pthread.c +1 -1
  425. data/third_party/boringssl/crypto/thread_win.c +40 -40
  426. data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
  427. data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
  428. data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
  429. data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
  430. data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
  431. data/third_party/boringssl/crypto/x509/by_file.c +2 -2
  432. data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
  433. data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
  434. data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
  435. data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
  436. data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
  437. data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
  438. data/third_party/boringssl/crypto/x509/x_name.c +13 -16
  439. data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
  440. data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
  441. data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
  442. data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
  443. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
  444. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
  445. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
  446. data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
  447. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
  448. data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
  449. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
  450. data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
  451. data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
  452. data/third_party/boringssl/include/openssl/aead.h +280 -191
  453. data/third_party/boringssl/include/openssl/aes.h +50 -50
  454. data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
  455. data/third_party/boringssl/include/openssl/asn1.h +14 -77
  456. data/third_party/boringssl/include/openssl/asn1t.h +11 -15
  457. data/third_party/boringssl/include/openssl/base.h +78 -51
  458. data/third_party/boringssl/include/openssl/base64.h +68 -68
  459. data/third_party/boringssl/include/openssl/bio.h +472 -406
  460. data/third_party/boringssl/include/openssl/blowfish.h +1 -1
  461. data/third_party/boringssl/include/openssl/bn.h +454 -435
  462. data/third_party/boringssl/include/openssl/buf.h +27 -27
  463. data/third_party/boringssl/include/openssl/bytestring.h +282 -267
  464. data/third_party/boringssl/include/openssl/cast.h +2 -2
  465. data/third_party/boringssl/include/openssl/chacha.h +5 -5
  466. data/third_party/boringssl/include/openssl/cipher.h +209 -200
  467. data/third_party/boringssl/include/openssl/cmac.h +27 -27
  468. data/third_party/boringssl/include/openssl/conf.h +49 -46
  469. data/third_party/boringssl/include/openssl/cpu.h +60 -45
  470. data/third_party/boringssl/include/openssl/crypto.h +59 -35
  471. data/third_party/boringssl/include/openssl/curve25519.h +97 -92
  472. data/third_party/boringssl/include/openssl/des.h +25 -25
  473. data/third_party/boringssl/include/openssl/dh.h +98 -97
  474. data/third_party/boringssl/include/openssl/digest.h +143 -114
  475. data/third_party/boringssl/include/openssl/dsa.h +217 -202
  476. data/third_party/boringssl/include/openssl/ec.h +132 -131
  477. data/third_party/boringssl/include/openssl/ec_key.h +132 -128
  478. data/third_party/boringssl/include/openssl/ecdh.h +9 -9
  479. data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
  480. data/third_party/boringssl/include/openssl/engine.h +38 -38
  481. data/third_party/boringssl/include/openssl/err.h +189 -219
  482. data/third_party/boringssl/include/openssl/evp.h +473 -397
  483. data/third_party/boringssl/include/openssl/ex_data.h +46 -56
  484. data/third_party/boringssl/include/openssl/hkdf.h +17 -17
  485. data/third_party/boringssl/include/openssl/hmac.h +55 -43
  486. data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  487. data/third_party/boringssl/include/openssl/lhash.h +67 -67
  488. data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
  489. data/third_party/boringssl/include/openssl/md4.h +14 -14
  490. data/third_party/boringssl/include/openssl/md5.h +14 -14
  491. data/third_party/boringssl/include/openssl/mem.h +39 -33
  492. data/third_party/boringssl/include/openssl/nid.h +43 -0
  493. data/third_party/boringssl/include/openssl/obj.h +93 -87
  494. data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
  495. data/third_party/boringssl/include/openssl/pem.h +2 -122
  496. data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
  497. data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
  498. data/third_party/boringssl/include/openssl/poly1305.h +11 -11
  499. data/third_party/boringssl/include/openssl/pool.h +29 -25
  500. data/third_party/boringssl/include/openssl/rand.h +48 -45
  501. data/third_party/boringssl/include/openssl/rc4.h +9 -9
  502. data/third_party/boringssl/include/openssl/ripemd.h +13 -13
  503. data/third_party/boringssl/include/openssl/rsa.h +371 -340
  504. data/third_party/boringssl/include/openssl/sha.h +71 -71
  505. data/third_party/boringssl/include/openssl/span.h +191 -0
  506. data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
  507. data/third_party/boringssl/include/openssl/ssl3.h +39 -122
  508. data/third_party/boringssl/include/openssl/stack.h +355 -164
  509. data/third_party/boringssl/include/openssl/thread.h +43 -43
  510. data/third_party/boringssl/include/openssl/tls1.h +60 -63
  511. data/third_party/boringssl/include/openssl/type_check.h +10 -14
  512. data/third_party/boringssl/include/openssl/x509.h +41 -116
  513. data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
  514. data/third_party/boringssl/include/openssl/x509v3.h +27 -21
  515. data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
  516. data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
  517. data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
  518. data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
  519. data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
  520. data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
  521. data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
  522. data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
  523. data/third_party/boringssl/ssl/handshake.cc +547 -0
  524. data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
  525. data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
  526. data/third_party/boringssl/ssl/internal.h +2027 -1280
  527. data/third_party/boringssl/ssl/s3_both.cc +603 -0
  528. data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
  529. data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
  530. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
  531. data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
  532. data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
  533. data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
  534. data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
  535. data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
  536. data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
  537. data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
  538. data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
  539. data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
  540. data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
  541. data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
  542. data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
  543. data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
  544. data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
  545. data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
  546. data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
  547. data/third_party/boringssl/ssl/tls13_client.cc +842 -0
  548. data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
  549. data/third_party/boringssl/ssl/tls13_server.cc +967 -0
  550. data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
  551. data/third_party/boringssl/ssl/tls_record.cc +675 -0
  552. metadata +117 -168
  553. data/include/grpc/support/cmdline.h +0 -88
  554. data/include/grpc/support/subprocess.h +0 -44
  555. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
  556. data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
  557. data/src/core/lib/gpr/cmdline.cc +0 -330
  558. data/src/core/lib/gpr/subprocess_posix.cc +0 -99
  559. data/src/core/lib/gpr/subprocess_windows.cc +0 -126
  560. data/src/core/lib/surface/alarm.cc +0 -137
  561. data/src/core/lib/surface/alarm_internal.h +0 -40
  562. data/src/core/tsi/gts_transport_security.cc +0 -40
  563. data/third_party/boringssl/crypto/aes/aes.c +0 -1142
  564. data/third_party/boringssl/crypto/aes/internal.h +0 -87
  565. data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
  566. data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
  567. data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
  568. data/third_party/boringssl/crypto/bn/add.c +0 -377
  569. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
  570. data/third_party/boringssl/crypto/bn/bn.c +0 -365
  571. data/third_party/boringssl/crypto/bn/cmp.c +0 -239
  572. data/third_party/boringssl/crypto/bn/ctx.c +0 -313
  573. data/third_party/boringssl/crypto/bn/div.c +0 -728
  574. data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
  575. data/third_party/boringssl/crypto/bn/gcd.c +0 -635
  576. data/third_party/boringssl/crypto/bn/generic.c +0 -707
  577. data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
  578. data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
  579. data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
  580. data/third_party/boringssl/crypto/bn/mul.c +0 -871
  581. data/third_party/boringssl/crypto/bn/prime.c +0 -861
  582. data/third_party/boringssl/crypto/bn/random.c +0 -343
  583. data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
  584. data/third_party/boringssl/crypto/bn/shift.c +0 -307
  585. data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
  586. data/third_party/boringssl/crypto/cipher/aead.c +0 -156
  587. data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
  588. data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
  589. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
  590. data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
  591. data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
  592. data/third_party/boringssl/crypto/des/des.c +0 -771
  593. data/third_party/boringssl/crypto/digest/digest.c +0 -251
  594. data/third_party/boringssl/crypto/digest/digests.c +0 -358
  595. data/third_party/boringssl/crypto/ec/ec.c +0 -847
  596. data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
  597. data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
  598. data/third_party/boringssl/crypto/ec/oct.c +0 -416
  599. data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
  600. data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
  601. data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
  602. data/third_party/boringssl/crypto/ec/simple.c +0 -1118
  603. data/third_party/boringssl/crypto/ec/util-64.c +0 -109
  604. data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
  605. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
  606. data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
  607. data/third_party/boringssl/crypto/md4/md4.c +0 -236
  608. data/third_party/boringssl/crypto/md5/md5.c +0 -285
  609. data/third_party/boringssl/crypto/modes/cbc.c +0 -212
  610. data/third_party/boringssl/crypto/modes/cfb.c +0 -230
  611. data/third_party/boringssl/crypto/modes/ctr.c +0 -219
  612. data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
  613. data/third_party/boringssl/crypto/modes/ofb.c +0 -95
  614. data/third_party/boringssl/crypto/modes/polyval.c +0 -94
  615. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
  616. data/third_party/boringssl/crypto/rand/rand.c +0 -244
  617. data/third_party/boringssl/crypto/rand/urandom.c +0 -335
  618. data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
  619. data/third_party/boringssl/crypto/rsa/padding.c +0 -708
  620. data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
  621. data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
  622. data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
  623. data/third_party/boringssl/crypto/sha/sha1.c +0 -355
  624. data/third_party/boringssl/crypto/sha/sha256.c +0 -329
  625. data/third_party/boringssl/crypto/sha/sha512.c +0 -609
  626. data/third_party/boringssl/crypto/x509/x509type.c +0 -126
  627. data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
  628. data/third_party/boringssl/ssl/handshake_client.c +0 -1883
  629. data/third_party/boringssl/ssl/handshake_server.c +0 -1950
  630. data/third_party/boringssl/ssl/s3_both.c +0 -895
  631. data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
  632. data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
  633. data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
  634. data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
  635. data/third_party/boringssl/ssl/tls13_client.c +0 -712
  636. data/third_party/boringssl/ssl/tls13_server.c +0 -680
  637. data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -37,15 +37,12 @@ void grpc_lb_subchannel_data_unref_subchannel(grpc_lb_subchannel_data* sd,
37
37
  " (subchannel %p): unreffing subchannel",
38
38
  sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
39
39
  sd->subchannel_list,
40
- (size_t)(sd - sd->subchannel_list->subchannels),
40
+ static_cast<size_t>(sd - sd->subchannel_list->subchannels),
41
41
  sd->subchannel_list->num_subchannels, sd->subchannel);
42
42
  }
43
43
  GRPC_SUBCHANNEL_UNREF(sd->subchannel, reason);
44
44
  sd->subchannel = nullptr;
45
- if (sd->connected_subchannel != nullptr) {
46
- GRPC_CONNECTED_SUBCHANNEL_UNREF(sd->connected_subchannel, reason);
47
- sd->connected_subchannel = nullptr;
48
- }
45
+ sd->connected_subchannel.reset();
49
46
  if (sd->user_data != nullptr) {
50
47
  GPR_ASSERT(sd->user_data_vtable != nullptr);
51
48
  sd->user_data_vtable->destroy(sd->user_data);
@@ -57,17 +54,20 @@ void grpc_lb_subchannel_data_unref_subchannel(grpc_lb_subchannel_data* sd,
57
54
  void grpc_lb_subchannel_data_start_connectivity_watch(
58
55
  grpc_lb_subchannel_data* sd) {
59
56
  if (sd->subchannel_list->tracer->enabled()) {
60
- gpr_log(GPR_DEBUG,
61
- "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
62
- " (subchannel %p): requesting connectivity change notification",
63
- sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
64
- sd->subchannel_list,
65
- (size_t)(sd - sd->subchannel_list->subchannels),
66
- sd->subchannel_list->num_subchannels, sd->subchannel);
57
+ gpr_log(
58
+ GPR_DEBUG,
59
+ "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
60
+ " (subchannel %p): requesting connectivity change "
61
+ "notification (from %s)",
62
+ sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
63
+ sd->subchannel_list,
64
+ static_cast<size_t>(sd - sd->subchannel_list->subchannels),
65
+ sd->subchannel_list->num_subchannels, sd->subchannel,
66
+ grpc_connectivity_state_name(sd->pending_connectivity_state_unsafe));
67
67
  }
68
68
  sd->connectivity_notification_pending = true;
69
69
  grpc_subchannel_notify_on_state_change(
70
- sd->subchannel, sd->subchannel_list->policy->interested_parties,
70
+ sd->subchannel, sd->subchannel_list->policy->interested_parties(),
71
71
  &sd->pending_connectivity_state_unsafe,
72
72
  &sd->connectivity_changed_closure);
73
73
  }
@@ -80,7 +80,7 @@ void grpc_lb_subchannel_data_stop_connectivity_watch(
80
80
  " (subchannel %p): stopping connectivity watch",
81
81
  sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
82
82
  sd->subchannel_list,
83
- (size_t)(sd - sd->subchannel_list->subchannels),
83
+ static_cast<size_t>(sd - sd->subchannel_list->subchannels),
84
84
  sd->subchannel_list->num_subchannels, sd->subchannel);
85
85
  }
86
86
  GPR_ASSERT(sd->connectivity_notification_pending);
@@ -88,11 +88,13 @@ void grpc_lb_subchannel_data_stop_connectivity_watch(
88
88
  }
89
89
 
90
90
  grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
91
- grpc_lb_policy* p, grpc_core::TraceFlag* tracer,
92
- const grpc_lb_addresses* addresses, const grpc_lb_policy_args* args,
93
- grpc_iomgr_cb_func connectivity_changed_cb) {
91
+ grpc_core::LoadBalancingPolicy* p, grpc_core::TraceFlag* tracer,
92
+ const grpc_lb_addresses* addresses, grpc_combiner* combiner,
93
+ grpc_client_channel_factory* client_channel_factory,
94
+ const grpc_channel_args& args, grpc_iomgr_cb_func connectivity_changed_cb) {
94
95
  grpc_lb_subchannel_list* subchannel_list =
95
- (grpc_lb_subchannel_list*)gpr_zalloc(sizeof(*subchannel_list));
96
+ static_cast<grpc_lb_subchannel_list*>(
97
+ gpr_zalloc(sizeof(*subchannel_list)));
96
98
  if (tracer->enabled()) {
97
99
  gpr_log(GPR_DEBUG,
98
100
  "[%s %p] Creating subchannel list %p for %" PRIuPTR " subchannels",
@@ -101,8 +103,8 @@ grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
101
103
  subchannel_list->policy = p;
102
104
  subchannel_list->tracer = tracer;
103
105
  gpr_ref_init(&subchannel_list->refcount, 1);
104
- subchannel_list->subchannels = (grpc_lb_subchannel_data*)gpr_zalloc(
105
- sizeof(grpc_lb_subchannel_data) * addresses->num_addresses);
106
+ subchannel_list->subchannels = static_cast<grpc_lb_subchannel_data*>(
107
+ gpr_zalloc(sizeof(grpc_lb_subchannel_data) * addresses->num_addresses));
106
108
  // We need to remove the LB addresses in order to be able to compare the
107
109
  // subchannel keys of subchannels from a different batch of addresses.
108
110
  static const char* keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS,
@@ -117,12 +119,11 @@ grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
117
119
  grpc_arg addr_arg =
118
120
  grpc_create_subchannel_address_arg(&addresses->addresses[i].address);
119
121
  grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
120
- args->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &addr_arg,
121
- 1);
122
+ &args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &addr_arg, 1);
122
123
  gpr_free(addr_arg.value.string);
123
124
  sc_args.args = new_args;
124
125
  grpc_subchannel* subchannel = grpc_client_channel_factory_create_subchannel(
125
- args->client_channel_factory, &sc_args);
126
+ client_channel_factory, &sc_args);
126
127
  grpc_channel_args_destroy(new_args);
127
128
  if (subchannel == nullptr) {
128
129
  // Subchannel could not be created.
@@ -153,7 +154,7 @@ grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
153
154
  sd->subchannel = subchannel;
154
155
  GRPC_CLOSURE_INIT(&sd->connectivity_changed_closure,
155
156
  connectivity_changed_cb, sd,
156
- grpc_combiner_scheduler(args->combiner));
157
+ grpc_combiner_scheduler(combiner));
157
158
  // We assume that the current state is IDLE. If not, we'll get a
158
159
  // callback telling us that.
159
160
  sd->prev_connectivity_state = GRPC_CHANNEL_IDLE;
@@ -191,8 +192,8 @@ void grpc_lb_subchannel_list_ref(grpc_lb_subchannel_list* subchannel_list,
191
192
  const gpr_atm count = gpr_atm_acq_load(&subchannel_list->refcount.count);
192
193
  gpr_log(GPR_DEBUG, "[%s %p] subchannel_list %p REF %lu->%lu (%s)",
193
194
  subchannel_list->tracer->name(), subchannel_list->policy,
194
- subchannel_list, (unsigned long)(count - 1), (unsigned long)count,
195
- reason);
195
+ subchannel_list, static_cast<unsigned long>(count - 1),
196
+ static_cast<unsigned long>(count), reason);
196
197
  }
197
198
  }
198
199
 
@@ -203,26 +204,14 @@ void grpc_lb_subchannel_list_unref(grpc_lb_subchannel_list* subchannel_list,
203
204
  const gpr_atm count = gpr_atm_acq_load(&subchannel_list->refcount.count);
204
205
  gpr_log(GPR_DEBUG, "[%s %p] subchannel_list %p UNREF %lu->%lu (%s)",
205
206
  subchannel_list->tracer->name(), subchannel_list->policy,
206
- subchannel_list, (unsigned long)(count + 1), (unsigned long)count,
207
- reason);
207
+ subchannel_list, static_cast<unsigned long>(count + 1),
208
+ static_cast<unsigned long>(count), reason);
208
209
  }
209
210
  if (done) {
210
211
  subchannel_list_destroy(subchannel_list);
211
212
  }
212
213
  }
213
214
 
214
- void grpc_lb_subchannel_list_ref_for_connectivity_watch(
215
- grpc_lb_subchannel_list* subchannel_list, const char* reason) {
216
- GRPC_LB_POLICY_REF(subchannel_list->policy, reason);
217
- grpc_lb_subchannel_list_ref(subchannel_list, reason);
218
- }
219
-
220
- void grpc_lb_subchannel_list_unref_for_connectivity_watch(
221
- grpc_lb_subchannel_list* subchannel_list, const char* reason) {
222
- GRPC_LB_POLICY_UNREF(subchannel_list->policy, reason);
223
- grpc_lb_subchannel_list_unref(subchannel_list, reason);
224
- }
225
-
226
215
  static void subchannel_data_cancel_connectivity_watch(
227
216
  grpc_lb_subchannel_data* sd, const char* reason) {
228
217
  if (sd->subchannel_list->tracer->enabled()) {
@@ -231,7 +220,7 @@ static void subchannel_data_cancel_connectivity_watch(
231
220
  " (subchannel %p): canceling connectivity watch (%s)",
232
221
  sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
233
222
  sd->subchannel_list,
234
- (size_t)(sd - sd->subchannel_list->subchannels),
223
+ static_cast<size_t>(sd - sd->subchannel_list->subchannels),
235
224
  sd->subchannel_list->num_subchannels, sd->subchannel, reason);
236
225
  }
237
226
  grpc_subchannel_notify_on_state_change(sd->subchannel, nullptr, nullptr,
@@ -22,6 +22,7 @@
22
22
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
23
23
  #include "src/core/ext/filters/client_channel/subchannel.h"
24
24
  #include "src/core/lib/debug/trace.h"
25
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
25
26
  #include "src/core/lib/transport/connectivity_state.h"
26
27
 
27
28
  // TODO(roth): This code is intended to be shared between pick_first and
@@ -43,7 +44,7 @@ typedef struct {
43
44
  grpc_lb_subchannel_list* subchannel_list;
44
45
  /** subchannel itself */
45
46
  grpc_subchannel* subchannel;
46
- grpc_connected_subchannel* connected_subchannel;
47
+ grpc_core::RefCountedPtr<grpc_core::ConnectedSubchannel> connected_subchannel;
47
48
  /** Is a connectivity notification pending? */
48
49
  bool connectivity_notification_pending;
49
50
  /** notification that connectivity has changed on subchannel */
@@ -81,7 +82,7 @@ void grpc_lb_subchannel_data_stop_connectivity_watch(
81
82
 
82
83
  struct grpc_lb_subchannel_list {
83
84
  /** backpointer to owning policy */
84
- grpc_lb_policy* policy;
85
+ grpc_core::LoadBalancingPolicy* policy;
85
86
 
86
87
  grpc_core::TraceFlag* tracer;
87
88
 
@@ -100,8 +101,6 @@ struct grpc_lb_subchannel_list {
100
101
  size_t num_ready;
101
102
  /** how many subchannels are in state TRANSIENT_FAILURE */
102
103
  size_t num_transient_failures;
103
- /** how many subchannels are in state SHUTDOWN */
104
- size_t num_shutdown;
105
104
  /** how many subchannels are in state IDLE */
106
105
  size_t num_idle;
107
106
 
@@ -116,9 +115,10 @@ struct grpc_lb_subchannel_list {
116
115
  };
117
116
 
118
117
  grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
119
- grpc_lb_policy* p, grpc_core::TraceFlag* tracer,
120
- const grpc_lb_addresses* addresses, const grpc_lb_policy_args* args,
121
- grpc_iomgr_cb_func connectivity_changed_cb);
118
+ grpc_core::LoadBalancingPolicy* p, grpc_core::TraceFlag* tracer,
119
+ const grpc_lb_addresses* addresses, grpc_combiner* combiner,
120
+ grpc_client_channel_factory* client_channel_factory,
121
+ const grpc_channel_args& args, grpc_iomgr_cb_func connectivity_changed_cb);
122
122
 
123
123
  void grpc_lb_subchannel_list_ref(grpc_lb_subchannel_list* subchannel_list,
124
124
  const char* reason);
@@ -126,13 +126,6 @@ void grpc_lb_subchannel_list_ref(grpc_lb_subchannel_list* subchannel_list,
126
126
  void grpc_lb_subchannel_list_unref(grpc_lb_subchannel_list* subchannel_list,
127
127
  const char* reason);
128
128
 
129
- /// Takes and releases refs needed for a connectivity notification.
130
- /// This includes a ref to subchannel_list and a weak ref to the LB policy.
131
- void grpc_lb_subchannel_list_ref_for_connectivity_watch(
132
- grpc_lb_subchannel_list* subchannel_list, const char* reason);
133
- void grpc_lb_subchannel_list_unref_for_connectivity_watch(
134
- grpc_lb_subchannel_list* subchannel_list, const char* reason);
135
-
136
129
  /// Mark subchannel_list as discarded. Unsubscribes all its subchannels. The
137
130
  /// connectivity state notification callback will ultimately unref it.
138
131
  void grpc_lb_subchannel_list_shutdown_and_unref(
@@ -29,11 +29,12 @@
29
29
  grpc_lb_addresses* grpc_lb_addresses_create(
30
30
  size_t num_addresses, const grpc_lb_user_data_vtable* user_data_vtable) {
31
31
  grpc_lb_addresses* addresses =
32
- (grpc_lb_addresses*)gpr_zalloc(sizeof(grpc_lb_addresses));
32
+ static_cast<grpc_lb_addresses*>(gpr_zalloc(sizeof(grpc_lb_addresses)));
33
33
  addresses->num_addresses = num_addresses;
34
34
  addresses->user_data_vtable = user_data_vtable;
35
35
  const size_t addresses_size = sizeof(grpc_lb_address) * num_addresses;
36
- addresses->addresses = (grpc_lb_address*)gpr_zalloc(addresses_size);
36
+ addresses->addresses =
37
+ static_cast<grpc_lb_address*>(gpr_zalloc(addresses_size));
37
38
  return addresses;
38
39
  }
39
40
 
@@ -124,14 +125,14 @@ void grpc_lb_addresses_destroy(grpc_lb_addresses* addresses) {
124
125
  }
125
126
 
126
127
  static void* lb_addresses_copy(void* addresses) {
127
- return grpc_lb_addresses_copy((grpc_lb_addresses*)addresses);
128
+ return grpc_lb_addresses_copy(static_cast<grpc_lb_addresses*>(addresses));
128
129
  }
129
130
  static void lb_addresses_destroy(void* addresses) {
130
- grpc_lb_addresses_destroy((grpc_lb_addresses*)addresses);
131
+ grpc_lb_addresses_destroy(static_cast<grpc_lb_addresses*>(addresses));
131
132
  }
132
133
  static int lb_addresses_cmp(void* addresses1, void* addresses2) {
133
- return grpc_lb_addresses_cmp((grpc_lb_addresses*)addresses1,
134
- (grpc_lb_addresses*)addresses2);
134
+ return grpc_lb_addresses_cmp(static_cast<grpc_lb_addresses*>(addresses1),
135
+ static_cast<grpc_lb_addresses*>(addresses2));
135
136
  }
136
137
  static const grpc_arg_pointer_vtable lb_addresses_arg_vtable = {
137
138
  lb_addresses_copy, lb_addresses_destroy, lb_addresses_cmp};
@@ -148,19 +149,5 @@ grpc_lb_addresses* grpc_lb_addresses_find_channel_arg(
148
149
  grpc_channel_args_find(channel_args, GRPC_ARG_LB_ADDRESSES);
149
150
  if (lb_addresses_arg == nullptr || lb_addresses_arg->type != GRPC_ARG_POINTER)
150
151
  return nullptr;
151
- return (grpc_lb_addresses*)lb_addresses_arg->value.pointer.p;
152
- }
153
-
154
- void grpc_lb_policy_factory_ref(grpc_lb_policy_factory* factory) {
155
- factory->vtable->ref(factory);
156
- }
157
-
158
- void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory) {
159
- factory->vtable->unref(factory);
160
- }
161
-
162
- grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy(
163
- grpc_lb_policy_factory* factory, grpc_lb_policy_args* args) {
164
- if (factory == nullptr) return nullptr;
165
- return factory->vtable->create_lb_policy(factory, args);
152
+ return static_cast<grpc_lb_addresses*>(lb_addresses_arg->value.pointer.p);
166
153
  }
@@ -26,21 +26,20 @@
26
26
  #include "src/core/ext/filters/client_channel/lb_policy.h"
27
27
  #include "src/core/ext/filters/client_channel/uri_parser.h"
28
28
 
29
+ //
30
+ // representation of an LB address
31
+ //
32
+
29
33
  // Channel arg key for grpc_lb_addresses.
30
34
  #define GRPC_ARG_LB_ADDRESSES "grpc.lb_addresses"
31
35
 
32
- typedef struct grpc_lb_policy_factory grpc_lb_policy_factory;
33
- typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable;
34
-
35
- struct grpc_lb_policy_factory {
36
- const grpc_lb_policy_factory_vtable* vtable;
37
- };
38
-
39
36
  /** A resolved address alongside any LB related information associated with it.
40
37
  * \a user_data, if not NULL, contains opaque data meant to be consumed by the
41
38
  * gRPC LB policy. Note that no all LB policies support \a user_data as input.
42
39
  * Those who don't will simply ignore it and will correspondingly return NULL in
43
40
  * their namesake pick() output argument. */
41
+ // TODO(roth): Once we figure out a better way of handling user_data in
42
+ // LB policies, convert these structs to C++ classes.
44
43
  typedef struct grpc_lb_address {
45
44
  grpc_resolved_address address;
46
45
  bool is_balancer;
@@ -101,30 +100,27 @@ grpc_arg grpc_lb_addresses_create_channel_arg(
101
100
  grpc_lb_addresses* grpc_lb_addresses_find_channel_arg(
102
101
  const grpc_channel_args* channel_args);
103
102
 
104
- /** Arguments passed to LB policies. */
105
- struct grpc_lb_policy_args {
106
- grpc_client_channel_factory* client_channel_factory;
107
- grpc_channel_args* args;
108
- grpc_combiner* combiner;
109
- };
103
+ //
104
+ // LB policy factory
105
+ //
110
106
 
111
- struct grpc_lb_policy_factory_vtable {
112
- void (*ref)(grpc_lb_policy_factory* factory);
113
- void (*unref)(grpc_lb_policy_factory* factory);
107
+ namespace grpc_core {
114
108
 
115
- /** Implementation of grpc_lb_policy_factory_create_lb_policy */
116
- grpc_lb_policy* (*create_lb_policy)(grpc_lb_policy_factory* factory,
117
- grpc_lb_policy_args* args);
109
+ class LoadBalancingPolicyFactory {
110
+ public:
111
+ /// Returns a new LB policy instance.
112
+ virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
113
+ const LoadBalancingPolicy::Args& args) const GRPC_ABSTRACT;
118
114
 
119
- /** Name for the LB policy this factory implements */
120
- const char* name;
121
- };
115
+ /// Returns the LB policy name that this factory provides.
116
+ /// Caller does NOT take ownership of result.
117
+ virtual const char* name() const GRPC_ABSTRACT;
122
118
 
123
- void grpc_lb_policy_factory_ref(grpc_lb_policy_factory* factory);
124
- void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory);
119
+ virtual ~LoadBalancingPolicyFactory() {}
120
+
121
+ GRPC_ABSTRACT_BASE_CLASS
122
+ };
125
123
 
126
- /** Create a lb_policy instance. */
127
- grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy(
128
- grpc_lb_policy_factory* factory, grpc_lb_policy_args* args);
124
+ } // namespace grpc_core
129
125
 
130
126
  #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
@@ -21,50 +21,75 @@
21
21
  #include <string.h>
22
22
 
23
23
  #include "src/core/lib/gpr/string.h"
24
+ #include "src/core/lib/gprpp/inlined_vector.h"
24
25
 
25
- #define MAX_POLICIES 10
26
+ namespace grpc_core {
26
27
 
27
- static grpc_lb_policy_factory* g_all_of_the_lb_policies[MAX_POLICIES];
28
- static int g_number_of_lb_policies = 0;
28
+ namespace {
29
29
 
30
- void grpc_lb_policy_registry_init(void) { g_number_of_lb_policies = 0; }
30
+ class RegistryState {
31
+ public:
32
+ RegistryState() {}
31
33
 
32
- void grpc_lb_policy_registry_shutdown(void) {
33
- int i;
34
- for (i = 0; i < g_number_of_lb_policies; i++) {
35
- grpc_lb_policy_factory_unref(g_all_of_the_lb_policies[i]);
34
+ void RegisterLoadBalancingPolicyFactory(
35
+ UniquePtr<LoadBalancingPolicyFactory> factory) {
36
+ for (size_t i = 0; i < factories_.size(); ++i) {
37
+ GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
38
+ }
39
+ factories_.push_back(std::move(factory));
36
40
  }
37
- }
38
41
 
39
- void grpc_register_lb_policy(grpc_lb_policy_factory* factory) {
40
- int i;
41
- for (i = 0; i < g_number_of_lb_policies; i++) {
42
- GPR_ASSERT(0 != gpr_stricmp(factory->vtable->name,
43
- g_all_of_the_lb_policies[i]->vtable->name));
42
+ LoadBalancingPolicyFactory* GetLoadBalancingPolicyFactory(
43
+ const char* name) const {
44
+ for (size_t i = 0; i < factories_.size(); ++i) {
45
+ if (strcmp(name, factories_[i]->name()) == 0) {
46
+ return factories_[i].get();
47
+ }
48
+ }
49
+ return nullptr;
44
50
  }
45
- GPR_ASSERT(g_number_of_lb_policies != MAX_POLICIES);
46
- grpc_lb_policy_factory_ref(factory);
47
- g_all_of_the_lb_policies[g_number_of_lb_policies++] = factory;
48
- }
49
51
 
50
- static grpc_lb_policy_factory* lookup_factory(const char* name) {
51
- int i;
52
+ private:
53
+ InlinedVector<UniquePtr<LoadBalancingPolicyFactory>, 10> factories_;
54
+ };
52
55
 
53
- if (name == nullptr) return nullptr;
56
+ RegistryState* g_state = nullptr;
54
57
 
55
- for (i = 0; i < g_number_of_lb_policies; i++) {
56
- if (0 == gpr_stricmp(name, g_all_of_the_lb_policies[i]->vtable->name)) {
57
- return g_all_of_the_lb_policies[i];
58
- }
59
- }
58
+ } // namespace
59
+
60
+ //
61
+ // LoadBalancingPolicyRegistry::Builder
62
+ //
60
63
 
61
- return nullptr;
64
+ void LoadBalancingPolicyRegistry::Builder::InitRegistry() {
65
+ if (g_state == nullptr) g_state = New<RegistryState>();
62
66
  }
63
67
 
64
- grpc_lb_policy* grpc_lb_policy_create(const char* name,
65
- grpc_lb_policy_args* args) {
66
- grpc_lb_policy_factory* factory = lookup_factory(name);
67
- grpc_lb_policy* lb_policy =
68
- grpc_lb_policy_factory_create_lb_policy(factory, args);
69
- return lb_policy;
68
+ void LoadBalancingPolicyRegistry::Builder::ShutdownRegistry() {
69
+ Delete(g_state);
70
+ g_state = nullptr;
70
71
  }
72
+
73
+ void LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
74
+ UniquePtr<LoadBalancingPolicyFactory> factory) {
75
+ InitRegistry();
76
+ g_state->RegisterLoadBalancingPolicyFactory(std::move(factory));
77
+ }
78
+
79
+ //
80
+ // LoadBalancingPolicyRegistry
81
+ //
82
+
83
+ OrphanablePtr<LoadBalancingPolicy>
84
+ LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
85
+ const char* name, const LoadBalancingPolicy::Args& args) {
86
+ GPR_ASSERT(g_state != nullptr);
87
+ // Find factory.
88
+ LoadBalancingPolicyFactory* factory =
89
+ g_state->GetLoadBalancingPolicyFactory(name);
90
+ if (factory == nullptr) return nullptr; // Specified name not found.
91
+ // Create policy via factory.
92
+ return factory->CreateLoadBalancingPolicy(args);
93
+ }
94
+
95
+ } // namespace grpc_core