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
@@ -31,5 +31,6 @@ void grpc_census_call_set_context(grpc_call* call, census_context* context) {
31
31
 
32
32
  census_context* grpc_census_call_get_context(grpc_call* call) {
33
33
  GRPC_API_TRACE("grpc_census_call_get_context(call=%p)", 1, (call));
34
- return (census_context*)grpc_call_context_get(call, GRPC_CONTEXT_TRACING);
34
+ return static_cast<census_context*>(
35
+ grpc_call_context_get(call, GRPC_CONTEXT_TRACING));
35
36
  }
@@ -80,7 +80,7 @@ static void backup_poller_shutdown_unref(backup_poller* p) {
80
80
  }
81
81
 
82
82
  static void done_poller(void* arg, grpc_error* error) {
83
- backup_poller_shutdown_unref((backup_poller*)arg);
83
+ backup_poller_shutdown_unref(static_cast<backup_poller*>(arg));
84
84
  }
85
85
 
86
86
  static void g_poller_unref() {
@@ -102,7 +102,7 @@ static void g_poller_unref() {
102
102
  }
103
103
 
104
104
  static void run_poller(void* arg, grpc_error* error) {
105
- backup_poller* p = (backup_poller*)arg;
105
+ backup_poller* p = static_cast<backup_poller*>(arg);
106
106
  if (error != GRPC_ERROR_NONE) {
107
107
  if (error != GRPC_ERROR_CANCELLED) {
108
108
  GRPC_LOG_IF_ERROR("run_poller", GRPC_ERROR_REF(error));
@@ -133,8 +133,9 @@ void grpc_client_channel_start_backup_polling(
133
133
  }
134
134
  gpr_mu_lock(&g_poller_mu);
135
135
  if (g_poller == nullptr) {
136
- g_poller = (backup_poller*)gpr_zalloc(sizeof(backup_poller));
137
- g_poller->pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
136
+ g_poller = static_cast<backup_poller*>(gpr_zalloc(sizeof(backup_poller)));
137
+ g_poller->pollset =
138
+ static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
138
139
  g_poller->shutting_down = false;
139
140
  grpc_pollset_init(g_poller->pollset, &g_poller->pollset_mu);
140
141
  gpr_ref_init(&g_poller->refs, 0);
@@ -89,7 +89,7 @@ static void delete_state_watcher(state_watcher* w) {
89
89
 
90
90
  static void finished_completion(void* pw, grpc_cq_completion* ignored) {
91
91
  bool should_delete = false;
92
- state_watcher* w = (state_watcher*)pw;
92
+ state_watcher* w = static_cast<state_watcher*>(pw);
93
93
  gpr_mu_lock(&w->mu);
94
94
  switch (w->phase) {
95
95
  case WAITING:
@@ -162,11 +162,11 @@ static void partly_done(state_watcher* w, bool due_to_completion,
162
162
  }
163
163
 
164
164
  static void watch_complete(void* pw, grpc_error* error) {
165
- partly_done((state_watcher*)pw, true, GRPC_ERROR_REF(error));
165
+ partly_done(static_cast<state_watcher*>(pw), true, GRPC_ERROR_REF(error));
166
166
  }
167
167
 
168
168
  static void timeout_complete(void* pw, grpc_error* error) {
169
- partly_done((state_watcher*)pw, false, GRPC_ERROR_REF(error));
169
+ partly_done(static_cast<state_watcher*>(pw), false, GRPC_ERROR_REF(error));
170
170
  }
171
171
 
172
172
  int grpc_channel_num_external_connectivity_watchers(grpc_channel* channel) {
@@ -182,7 +182,7 @@ typedef struct watcher_timer_init_arg {
182
182
  } watcher_timer_init_arg;
183
183
 
184
184
  static void watcher_timer_init(void* arg, grpc_error* error_ignored) {
185
- watcher_timer_init_arg* wa = (watcher_timer_init_arg*)arg;
185
+ watcher_timer_init_arg* wa = static_cast<watcher_timer_init_arg*>(arg);
186
186
 
187
187
  grpc_timer_init(&wa->w->alarm, grpc_timespec_to_millis_round_up(wa->deadline),
188
188
  &wa->w->on_timeout);
@@ -201,7 +201,7 @@ void grpc_channel_watch_connectivity_state(
201
201
  grpc_channel_element* client_channel_elem =
202
202
  grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
203
203
  grpc_core::ExecCtx exec_ctx;
204
- state_watcher* w = (state_watcher*)gpr_malloc(sizeof(*w));
204
+ state_watcher* w = static_cast<state_watcher*>(gpr_malloc(sizeof(*w)));
205
205
 
206
206
  GRPC_API_TRACE(
207
207
  "grpc_channel_watch_connectivity_state("
@@ -227,8 +227,8 @@ void grpc_channel_watch_connectivity_state(
227
227
  w->channel = channel;
228
228
  w->error = nullptr;
229
229
 
230
- watcher_timer_init_arg* wa =
231
- (watcher_timer_init_arg*)gpr_malloc(sizeof(watcher_timer_init_arg));
230
+ watcher_timer_init_arg* wa = static_cast<watcher_timer_init_arg*>(
231
+ gpr_malloc(sizeof(watcher_timer_init_arg)));
232
232
  wa->w = w;
233
233
  wa->deadline = deadline;
234
234
  GRPC_CLOSURE_INIT(&w->watcher_timer_init, watcher_timer_init, wa,
@@ -29,7 +29,6 @@
29
29
  #include <grpc/support/log.h>
30
30
  #include <grpc/support/string_util.h>
31
31
  #include <grpc/support/sync.h>
32
- #include <grpc/support/useful.h>
33
32
 
34
33
  #include "src/core/ext/filters/client_channel/backup_poller.h"
35
34
  #include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
@@ -89,10 +88,10 @@ static void method_parameters_unref(method_parameters* method_params) {
89
88
 
90
89
  // Wrappers to pass to grpc_service_config_create_method_config_table().
91
90
  static void* method_parameters_ref_wrapper(void* value) {
92
- return method_parameters_ref((method_parameters*)value);
91
+ return method_parameters_ref(static_cast<method_parameters*>(value));
93
92
  }
94
93
  static void method_parameters_unref_wrapper(void* value) {
95
- method_parameters_unref((method_parameters*)value);
94
+ method_parameters_unref(static_cast<method_parameters*>(value));
96
95
  }
97
96
 
98
97
  static bool parse_wait_for_ready(grpc_json* field,
@@ -120,7 +119,7 @@ static bool parse_timeout(grpc_json* field, grpc_millis* timeout) {
120
119
  gpr_free(buf);
121
120
  return false;
122
121
  }
123
- int num_digits = (int)strlen(decimal_point + 1);
122
+ int num_digits = static_cast<int>(strlen(decimal_point + 1));
124
123
  if (num_digits > 9) { // We don't accept greater precision than nanos.
125
124
  gpr_free(buf);
126
125
  return false;
@@ -150,7 +149,7 @@ static void* method_parameters_create_from_json(const grpc_json* json) {
150
149
  }
151
150
  }
152
151
  method_parameters* value =
153
- (method_parameters*)gpr_malloc(sizeof(method_parameters));
152
+ static_cast<method_parameters*>(gpr_malloc(sizeof(method_parameters)));
154
153
  gpr_ref_init(&value->refs, 1);
155
154
  value->timeout = timeout;
156
155
  value->wait_for_ready = wait_for_ready;
@@ -165,7 +164,7 @@ struct external_connectivity_watcher;
165
164
 
166
165
  typedef struct client_channel_channel_data {
167
166
  /** resolver for this channel */
168
- grpc_resolver* resolver;
167
+ grpc_core::OrphanablePtr<grpc_core::Resolver> resolver;
169
168
  /** have we started resolving this channel */
170
169
  bool started_resolving;
171
170
  /** is deadline checking enabled? */
@@ -176,7 +175,7 @@ typedef struct client_channel_channel_data {
176
175
  /** combiner protecting all variables below in this data structure */
177
176
  grpc_combiner* combiner;
178
177
  /** currently active load balancer */
179
- grpc_lb_policy* lb_policy;
178
+ grpc_core::OrphanablePtr<grpc_core::LoadBalancingPolicy> lb_policy;
180
179
  /** retry throttle data */
181
180
  grpc_server_retry_throttle_data* retry_throttle_data;
182
181
  /** maps method names to method_parameters structs */
@@ -213,7 +212,7 @@ typedef struct {
213
212
  channel_data* chand;
214
213
  /** used as an identifier, don't dereference it because the LB policy may be
215
214
  * non-existing when the callback is run */
216
- grpc_lb_policy* lb_policy;
215
+ grpc_core::LoadBalancingPolicy* lb_policy;
217
216
  grpc_closure closure;
218
217
  } reresolution_request_args;
219
218
 
@@ -224,11 +223,11 @@ typedef struct {
224
223
  channel_data* chand;
225
224
  grpc_closure on_changed;
226
225
  grpc_connectivity_state state;
227
- grpc_lb_policy* lb_policy;
226
+ grpc_core::LoadBalancingPolicy* lb_policy;
228
227
  } lb_policy_connectivity_watcher;
229
228
 
230
229
  static void watch_lb_policy_locked(channel_data* chand,
231
- grpc_lb_policy* lb_policy,
230
+ grpc_core::LoadBalancingPolicy* lb_policy,
232
231
  grpc_connectivity_state current_state);
233
232
 
234
233
  static void set_channel_connectivity_state_locked(channel_data* chand,
@@ -242,15 +241,13 @@ static void set_channel_connectivity_state_locked(channel_data* chand,
242
241
  if (chand->lb_policy != nullptr) {
243
242
  if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
244
243
  /* cancel picks with wait_for_ready=false */
245
- grpc_lb_policy_cancel_picks_locked(
246
- chand->lb_policy,
244
+ chand->lb_policy->CancelMatchingPicksLocked(
247
245
  /* mask= */ GRPC_INITIAL_METADATA_WAIT_FOR_READY,
248
246
  /* check= */ 0, GRPC_ERROR_REF(error));
249
247
  } else if (state == GRPC_CHANNEL_SHUTDOWN) {
250
248
  /* cancel all picks */
251
- grpc_lb_policy_cancel_picks_locked(chand->lb_policy,
252
- /* mask= */ 0, /* check= */ 0,
253
- GRPC_ERROR_REF(error));
249
+ chand->lb_policy->CancelMatchingPicksLocked(/* mask= */ 0, /* check= */ 0,
250
+ GRPC_ERROR_REF(error));
254
251
  }
255
252
  }
256
253
  if (grpc_client_channel_trace.enabled()) {
@@ -261,9 +258,10 @@ static void set_channel_connectivity_state_locked(channel_data* chand,
261
258
  }
262
259
 
263
260
  static void on_lb_policy_state_changed_locked(void* arg, grpc_error* error) {
264
- lb_policy_connectivity_watcher* w = (lb_policy_connectivity_watcher*)arg;
261
+ lb_policy_connectivity_watcher* w =
262
+ static_cast<lb_policy_connectivity_watcher*>(arg);
265
263
  /* check if the notification is for the latest policy */
266
- if (w->lb_policy == w->chand->lb_policy) {
264
+ if (w->lb_policy == w->chand->lb_policy.get()) {
267
265
  if (grpc_client_channel_trace.enabled()) {
268
266
  gpr_log(GPR_DEBUG, "chand=%p: lb_policy=%p state changed to %s", w->chand,
269
267
  w->lb_policy, grpc_connectivity_state_name(w->state));
@@ -279,18 +277,17 @@ static void on_lb_policy_state_changed_locked(void* arg, grpc_error* error) {
279
277
  }
280
278
 
281
279
  static void watch_lb_policy_locked(channel_data* chand,
282
- grpc_lb_policy* lb_policy,
280
+ grpc_core::LoadBalancingPolicy* lb_policy,
283
281
  grpc_connectivity_state current_state) {
284
282
  lb_policy_connectivity_watcher* w =
285
- (lb_policy_connectivity_watcher*)gpr_malloc(sizeof(*w));
283
+ static_cast<lb_policy_connectivity_watcher*>(gpr_malloc(sizeof(*w)));
286
284
  GRPC_CHANNEL_STACK_REF(chand->owning_stack, "watch_lb_policy");
287
285
  w->chand = chand;
288
286
  GRPC_CLOSURE_INIT(&w->on_changed, on_lb_policy_state_changed_locked, w,
289
287
  grpc_combiner_scheduler(chand->combiner));
290
288
  w->state = current_state;
291
289
  w->lb_policy = lb_policy;
292
- grpc_lb_policy_notify_on_state_change_locked(lb_policy, &w->state,
293
- &w->on_changed);
290
+ lb_policy->NotifyOnStateChangeLocked(&w->state, &w->on_changed);
294
291
  }
295
292
 
296
293
  static void start_resolving_locked(channel_data* chand) {
@@ -300,8 +297,8 @@ static void start_resolving_locked(channel_data* chand) {
300
297
  GPR_ASSERT(!chand->started_resolving);
301
298
  chand->started_resolving = true;
302
299
  GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
303
- grpc_resolver_next_locked(chand->resolver, &chand->resolver_result,
304
- &chand->on_resolver_result_changed);
300
+ chand->resolver->NextLocked(&chand->resolver_result,
301
+ &chand->on_resolver_result_changed);
305
302
  }
306
303
 
307
304
  typedef struct {
@@ -311,7 +308,7 @@ typedef struct {
311
308
 
312
309
  static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
313
310
  service_config_parsing_state* parsing_state =
314
- (service_config_parsing_state*)arg;
311
+ static_cast<service_config_parsing_state*>(arg);
315
312
  if (strcmp(field->key, "retryThrottling") == 0) {
316
313
  if (parsing_state->retry_throttle_data != nullptr) return; // Duplicate.
317
314
  if (field->type != GRPC_JSON_OBJECT) return;
@@ -335,7 +332,7 @@ static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
335
332
  uint32_t decimal_value = 0;
336
333
  const char* decimal_point = strchr(sub_field->value, '.');
337
334
  if (decimal_point != nullptr) {
338
- whole_len = (size_t)(decimal_point - sub_field->value);
335
+ whole_len = static_cast<size_t>(decimal_point - sub_field->value);
339
336
  multiplier = 1000;
340
337
  size_t decimal_len = strlen(decimal_point + 1);
341
338
  if (decimal_len > 3) decimal_len = 3;
@@ -354,7 +351,8 @@ static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
354
351
  &whole_value)) {
355
352
  return;
356
353
  }
357
- milli_token_ratio = (int)((whole_value * multiplier) + decimal_value);
354
+ milli_token_ratio =
355
+ static_cast<int>((whole_value * multiplier) + decimal_value);
358
356
  if (milli_token_ratio <= 0) return;
359
357
  }
360
358
  }
@@ -365,11 +363,12 @@ static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
365
363
  }
366
364
 
367
365
  static void request_reresolution_locked(void* arg, grpc_error* error) {
368
- reresolution_request_args* args = (reresolution_request_args*)arg;
366
+ reresolution_request_args* args =
367
+ static_cast<reresolution_request_args*>(arg);
369
368
  channel_data* chand = args->chand;
370
369
  // If this invocation is for a stale LB policy, treat it as an LB shutdown
371
370
  // signal.
372
- if (args->lb_policy != chand->lb_policy || error != GRPC_ERROR_NONE ||
371
+ if (args->lb_policy != chand->lb_policy.get() || error != GRPC_ERROR_NONE ||
373
372
  chand->resolver == nullptr) {
374
373
  GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "re-resolution");
375
374
  gpr_free(args);
@@ -378,42 +377,39 @@ static void request_reresolution_locked(void* arg, grpc_error* error) {
378
377
  if (grpc_client_channel_trace.enabled()) {
379
378
  gpr_log(GPR_DEBUG, "chand=%p: started name re-resolving", chand);
380
379
  }
381
- grpc_resolver_channel_saw_error_locked(chand->resolver);
380
+ chand->resolver->RequestReresolutionLocked();
382
381
  // Give back the closure to the LB policy.
383
- grpc_lb_policy_set_reresolve_closure_locked(chand->lb_policy, &args->closure);
382
+ chand->lb_policy->SetReresolutionClosureLocked(&args->closure);
384
383
  }
385
384
 
386
385
  static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
387
- channel_data* chand = (channel_data*)arg;
386
+ channel_data* chand = static_cast<channel_data*>(arg);
388
387
  if (grpc_client_channel_trace.enabled()) {
389
388
  gpr_log(GPR_DEBUG, "chand=%p: got resolver result: error=%s", chand,
390
389
  grpc_error_string(error));
391
390
  }
392
391
  // Extract the following fields from the resolver result, if non-NULL.
393
392
  bool lb_policy_updated = false;
393
+ bool lb_policy_created = false;
394
394
  char* lb_policy_name_dup = nullptr;
395
395
  bool lb_policy_name_changed = false;
396
- grpc_lb_policy* new_lb_policy = nullptr;
396
+ grpc_core::OrphanablePtr<grpc_core::LoadBalancingPolicy> new_lb_policy;
397
397
  char* service_config_json = nullptr;
398
398
  grpc_server_retry_throttle_data* retry_throttle_data = nullptr;
399
399
  grpc_slice_hash_table* method_params_table = nullptr;
400
400
  if (chand->resolver_result != nullptr) {
401
401
  if (chand->resolver != nullptr) {
402
402
  // Find LB policy name.
403
- const char* lb_policy_name = nullptr;
404
403
  const grpc_arg* channel_arg = grpc_channel_args_find(
405
404
  chand->resolver_result, GRPC_ARG_LB_POLICY_NAME);
406
- if (channel_arg != nullptr) {
407
- GPR_ASSERT(channel_arg->type == GRPC_ARG_STRING);
408
- lb_policy_name = channel_arg->value.string;
409
- }
405
+ const char* lb_policy_name = grpc_channel_arg_get_string(channel_arg);
410
406
  // Special case: If at least one balancer address is present, we use
411
407
  // the grpclb policy, regardless of what the resolver actually specified.
412
408
  channel_arg =
413
409
  grpc_channel_args_find(chand->resolver_result, GRPC_ARG_LB_ADDRESSES);
414
410
  if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_POINTER) {
415
411
  grpc_lb_addresses* addresses =
416
- (grpc_lb_addresses*)channel_arg->value.pointer.p;
412
+ static_cast<grpc_lb_addresses*>(channel_arg->value.pointer.p);
417
413
  bool found_balancer_address = false;
418
414
  for (size_t i = 0; i < addresses->num_addresses; ++i) {
419
415
  if (addresses->addresses[i].is_balancer) {
@@ -435,10 +431,7 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
435
431
  // Use pick_first if nothing was specified and we didn't select grpclb
436
432
  // above.
437
433
  if (lb_policy_name == nullptr) lb_policy_name = "pick_first";
438
- grpc_lb_policy_args lb_policy_args;
439
- lb_policy_args.args = chand->resolver_result;
440
- lb_policy_args.client_channel_factory = chand->client_channel_factory;
441
- lb_policy_args.combiner = chand->combiner;
434
+
442
435
  // Check to see if we're already using the right LB policy.
443
436
  // Note: It's safe to use chand->info_lb_policy_name here without
444
437
  // taking a lock on chand->info_mu, because this function is the
@@ -450,39 +443,46 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
450
443
  if (chand->lb_policy != nullptr && !lb_policy_name_changed) {
451
444
  // Continue using the same LB policy. Update with new addresses.
452
445
  lb_policy_updated = true;
453
- grpc_lb_policy_update_locked(chand->lb_policy, &lb_policy_args);
446
+ chand->lb_policy->UpdateLocked(*chand->resolver_result);
454
447
  } else {
455
448
  // Instantiate new LB policy.
456
- new_lb_policy = grpc_lb_policy_create(lb_policy_name, &lb_policy_args);
449
+ grpc_core::LoadBalancingPolicy::Args lb_policy_args;
450
+ lb_policy_args.combiner = chand->combiner;
451
+ lb_policy_args.client_channel_factory = chand->client_channel_factory;
452
+ lb_policy_args.args = chand->resolver_result;
453
+ new_lb_policy =
454
+ grpc_core::LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
455
+ lb_policy_name, lb_policy_args);
457
456
  if (new_lb_policy == nullptr) {
458
457
  gpr_log(GPR_ERROR, "could not create LB policy \"%s\"",
459
458
  lb_policy_name);
460
459
  } else {
460
+ lb_policy_created = true;
461
461
  reresolution_request_args* args =
462
- (reresolution_request_args*)gpr_zalloc(sizeof(*args));
462
+ static_cast<reresolution_request_args*>(
463
+ gpr_zalloc(sizeof(*args)));
463
464
  args->chand = chand;
464
- args->lb_policy = new_lb_policy;
465
+ args->lb_policy = new_lb_policy.get();
465
466
  GRPC_CLOSURE_INIT(&args->closure, request_reresolution_locked, args,
466
467
  grpc_combiner_scheduler(chand->combiner));
467
468
  GRPC_CHANNEL_STACK_REF(chand->owning_stack, "re-resolution");
468
- grpc_lb_policy_set_reresolve_closure_locked(new_lb_policy,
469
- &args->closure);
469
+ new_lb_policy->SetReresolutionClosureLocked(&args->closure);
470
470
  }
471
471
  }
472
472
  // Find service config.
473
473
  channel_arg = grpc_channel_args_find(chand->resolver_result,
474
474
  GRPC_ARG_SERVICE_CONFIG);
475
- if (channel_arg != nullptr) {
476
- GPR_ASSERT(channel_arg->type == GRPC_ARG_STRING);
477
- service_config_json = gpr_strdup(channel_arg->value.string);
475
+ service_config_json =
476
+ gpr_strdup(grpc_channel_arg_get_string(channel_arg));
477
+ if (service_config_json != nullptr) {
478
478
  grpc_service_config* service_config =
479
479
  grpc_service_config_create(service_config_json);
480
480
  if (service_config != nullptr) {
481
481
  channel_arg = grpc_channel_args_find(chand->resolver_result,
482
482
  GRPC_ARG_SERVER_URI);
483
- GPR_ASSERT(channel_arg != nullptr);
484
- GPR_ASSERT(channel_arg->type == GRPC_ARG_STRING);
485
- grpc_uri* uri = grpc_uri_parse(channel_arg->value.string, true);
483
+ const char* server_uri = grpc_channel_arg_get_string(channel_arg);
484
+ GPR_ASSERT(server_uri != nullptr);
485
+ grpc_uri* uri = grpc_uri_parse(server_uri, true);
486
486
  GPR_ASSERT(uri->path[0] != '\0');
487
487
  service_config_parsing_state parsing_state;
488
488
  memset(&parsing_state, 0, sizeof(parsing_state));
@@ -549,14 +549,14 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
549
549
  if (chand->lb_policy != nullptr) {
550
550
  if (grpc_client_channel_trace.enabled()) {
551
551
  gpr_log(GPR_DEBUG, "chand=%p: unreffing lb_policy=%p", chand,
552
- chand->lb_policy);
552
+ chand->lb_policy.get());
553
553
  }
554
- grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties,
554
+ grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties(),
555
555
  chand->interested_parties);
556
- grpc_lb_policy_shutdown_locked(chand->lb_policy, new_lb_policy);
557
- GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel");
556
+ chand->lb_policy->HandOffPendingPicksLocked(new_lb_policy.get());
557
+ chand->lb_policy.reset();
558
558
  }
559
- chand->lb_policy = new_lb_policy;
559
+ chand->lb_policy = std::move(new_lb_policy);
560
560
  }
561
561
  // Now that we've swapped out the relevant fields of chand, check for
562
562
  // error or shutdown.
@@ -568,55 +568,52 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
568
568
  if (grpc_client_channel_trace.enabled()) {
569
569
  gpr_log(GPR_DEBUG, "chand=%p: shutting down resolver", chand);
570
570
  }
571
- grpc_resolver_shutdown_locked(chand->resolver);
572
- GRPC_RESOLVER_UNREF(chand->resolver, "channel");
573
- chand->resolver = nullptr;
571
+ chand->resolver.reset();
574
572
  }
575
573
  set_channel_connectivity_state_locked(
576
574
  chand, GRPC_CHANNEL_SHUTDOWN,
577
575
  GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
578
576
  "Got resolver result after disconnection", &error, 1),
579
577
  "resolver_gone");
580
- GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "resolver");
581
578
  grpc_closure_list_fail_all(&chand->waiting_for_resolver_result_closures,
582
579
  GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
583
580
  "Channel disconnected", &error, 1));
584
581
  GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures);
582
+ GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "resolver");
585
583
  } else { // Not shutting down.
586
584
  grpc_connectivity_state state = GRPC_CHANNEL_TRANSIENT_FAILURE;
587
585
  grpc_error* state_error =
588
586
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("No load balancing policy");
589
- if (new_lb_policy != nullptr) {
587
+ if (lb_policy_created) {
590
588
  if (grpc_client_channel_trace.enabled()) {
591
589
  gpr_log(GPR_DEBUG, "chand=%p: initializing new LB policy", chand);
592
590
  }
593
591
  GRPC_ERROR_UNREF(state_error);
594
- state =
595
- grpc_lb_policy_check_connectivity_locked(new_lb_policy, &state_error);
596
- grpc_pollset_set_add_pollset_set(new_lb_policy->interested_parties,
592
+ state = chand->lb_policy->CheckConnectivityLocked(&state_error);
593
+ grpc_pollset_set_add_pollset_set(chand->lb_policy->interested_parties(),
597
594
  chand->interested_parties);
598
595
  GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures);
599
596
  if (chand->exit_idle_when_lb_policy_arrives) {
600
- grpc_lb_policy_exit_idle_locked(new_lb_policy);
597
+ chand->lb_policy->ExitIdleLocked();
601
598
  chand->exit_idle_when_lb_policy_arrives = false;
602
599
  }
603
- watch_lb_policy_locked(chand, new_lb_policy, state);
600
+ watch_lb_policy_locked(chand, chand->lb_policy.get(), state);
604
601
  }
605
602
  if (!lb_policy_updated) {
606
603
  set_channel_connectivity_state_locked(
607
604
  chand, state, GRPC_ERROR_REF(state_error), "new_lb+resolver");
608
605
  }
609
- grpc_resolver_next_locked(chand->resolver, &chand->resolver_result,
610
- &chand->on_resolver_result_changed);
606
+ chand->resolver->NextLocked(&chand->resolver_result,
607
+ &chand->on_resolver_result_changed);
611
608
  GRPC_ERROR_UNREF(state_error);
612
609
  }
613
610
  }
614
611
 
615
612
  static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
616
- grpc_transport_op* op = (grpc_transport_op*)arg;
613
+ grpc_transport_op* op = static_cast<grpc_transport_op*>(arg);
617
614
  grpc_channel_element* elem =
618
- (grpc_channel_element*)op->handler_private.extra_arg;
619
- channel_data* chand = (channel_data*)elem->channel_data;
615
+ static_cast<grpc_channel_element*>(op->handler_private.extra_arg);
616
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
620
617
 
621
618
  if (op->on_connectivity_state_change != nullptr) {
622
619
  grpc_connectivity_state_notify_on_state_change(
@@ -635,8 +632,8 @@ static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
635
632
  op->send_ping.on_ack,
636
633
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Ping with no load balancing"));
637
634
  } else {
638
- grpc_lb_policy_ping_one_locked(
639
- chand->lb_policy, op->send_ping.on_initiate, op->send_ping.on_ack);
635
+ chand->lb_policy->PingOneLocked(op->send_ping.on_initiate,
636
+ op->send_ping.on_ack);
640
637
  op->bind_pollset = nullptr;
641
638
  }
642
639
  op->send_ping.on_initiate = nullptr;
@@ -648,20 +645,16 @@ static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
648
645
  set_channel_connectivity_state_locked(
649
646
  chand, GRPC_CHANNEL_SHUTDOWN,
650
647
  GRPC_ERROR_REF(op->disconnect_with_error), "disconnect");
651
- grpc_resolver_shutdown_locked(chand->resolver);
652
- GRPC_RESOLVER_UNREF(chand->resolver, "channel");
653
- chand->resolver = nullptr;
648
+ chand->resolver.reset();
654
649
  if (!chand->started_resolving) {
655
650
  grpc_closure_list_fail_all(&chand->waiting_for_resolver_result_closures,
656
651
  GRPC_ERROR_REF(op->disconnect_with_error));
657
652
  GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures);
658
653
  }
659
654
  if (chand->lb_policy != nullptr) {
660
- grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties,
655
+ grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties(),
661
656
  chand->interested_parties);
662
- grpc_lb_policy_shutdown_locked(chand->lb_policy, nullptr);
663
- GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel");
664
- chand->lb_policy = nullptr;
657
+ chand->lb_policy.reset();
665
658
  }
666
659
  }
667
660
  GRPC_ERROR_UNREF(op->disconnect_with_error);
@@ -673,7 +666,7 @@ static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
673
666
 
674
667
  static void cc_start_transport_op(grpc_channel_element* elem,
675
668
  grpc_transport_op* op) {
676
- channel_data* chand = (channel_data*)elem->channel_data;
669
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
677
670
 
678
671
  GPR_ASSERT(op->set_accept_stream == false);
679
672
  if (op->bind_pollset != nullptr) {
@@ -690,7 +683,7 @@ static void cc_start_transport_op(grpc_channel_element* elem,
690
683
 
691
684
  static void cc_get_channel_info(grpc_channel_element* elem,
692
685
  const grpc_channel_info* info) {
693
- channel_data* chand = (channel_data*)elem->channel_data;
686
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
694
687
  gpr_mu_lock(&chand->info_mu);
695
688
  if (info->lb_policy_name != nullptr) {
696
689
  *info->lb_policy_name = chand->info_lb_policy_name == nullptr
@@ -709,7 +702,7 @@ static void cc_get_channel_info(grpc_channel_element* elem,
709
702
  /* Constructor for channel_data */
710
703
  static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
711
704
  grpc_channel_element_args* args) {
712
- channel_data* chand = (channel_data*)elem->channel_data;
705
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
713
706
  GPR_ASSERT(args->is_last);
714
707
  GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
715
708
  // Initialize data members.
@@ -741,9 +734,9 @@ static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
741
734
  "client channel factory arg must be a pointer");
742
735
  }
743
736
  grpc_client_channel_factory_ref(
744
- (grpc_client_channel_factory*)arg->value.pointer.p);
737
+ static_cast<grpc_client_channel_factory*>(arg->value.pointer.p));
745
738
  chand->client_channel_factory =
746
- (grpc_client_channel_factory*)arg->value.pointer.p;
739
+ static_cast<grpc_client_channel_factory*>(arg->value.pointer.p);
747
740
  // Get server name to resolve, using proxy mapper if needed.
748
741
  arg = grpc_channel_args_find(args->channel_args, GRPC_ARG_SERVER_URI);
749
742
  if (arg == nullptr) {
@@ -759,7 +752,7 @@ static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
759
752
  grpc_proxy_mappers_map_name(arg->value.string, args->channel_args,
760
753
  &proxy_name, &new_args);
761
754
  // Instantiate resolver.
762
- chand->resolver = grpc_resolver_create(
755
+ chand->resolver = grpc_core::ResolverRegistry::CreateResolver(
763
756
  proxy_name != nullptr ? proxy_name : arg->value.string,
764
757
  new_args != nullptr ? new_args : args->channel_args,
765
758
  chand->interested_parties, chand->combiner);
@@ -774,17 +767,16 @@ static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
774
767
  }
775
768
 
776
769
  static void shutdown_resolver_locked(void* arg, grpc_error* error) {
777
- grpc_resolver* resolver = (grpc_resolver*)arg;
778
- grpc_resolver_shutdown_locked(resolver);
779
- GRPC_RESOLVER_UNREF(resolver, "channel");
770
+ grpc_core::Resolver* resolver = static_cast<grpc_core::Resolver*>(arg);
771
+ resolver->Orphan();
780
772
  }
781
773
 
782
774
  /* Destructor for channel_data */
783
775
  static void cc_destroy_channel_elem(grpc_channel_element* elem) {
784
- channel_data* chand = (channel_data*)elem->channel_data;
776
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
785
777
  if (chand->resolver != nullptr) {
786
778
  GRPC_CLOSURE_SCHED(
787
- GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver,
779
+ GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver.release(),
788
780
  grpc_combiner_scheduler(chand->combiner)),
789
781
  GRPC_ERROR_NONE);
790
782
  }
@@ -792,10 +784,9 @@ static void cc_destroy_channel_elem(grpc_channel_element* elem) {
792
784
  grpc_client_channel_factory_unref(chand->client_channel_factory);
793
785
  }
794
786
  if (chand->lb_policy != nullptr) {
795
- grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties,
787
+ grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties(),
796
788
  chand->interested_parties);
797
- grpc_lb_policy_shutdown_locked(chand->lb_policy, nullptr);
798
- GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel");
789
+ chand->lb_policy.reset();
799
790
  }
800
791
  gpr_free(chand->info_lb_policy_name);
801
792
  gpr_free(chand->info_service_config_json);
@@ -855,7 +846,7 @@ typedef struct client_channel_call_data {
855
846
  grpc_subchannel_call* subchannel_call;
856
847
  grpc_error* error;
857
848
 
858
- grpc_lb_policy_pick_state pick;
849
+ grpc_core::LoadBalancingPolicy::PickState pick;
859
850
  grpc_closure lb_pick_closure;
860
851
  grpc_closure lb_pick_cancel_closure;
861
852
 
@@ -873,7 +864,7 @@ typedef struct client_channel_call_data {
873
864
 
874
865
  grpc_subchannel_call* grpc_client_channel_get_subchannel_call(
875
866
  grpc_call_element* elem) {
876
- call_data* calld = (call_data*)elem->call_data;
867
+ call_data* calld = static_cast<call_data*>(elem->call_data);
877
868
  return calld->subchannel_call;
878
869
  }
879
870
 
@@ -892,7 +883,7 @@ static void waiting_for_pick_batches_add(
892
883
 
893
884
  // This is called via the call combiner, so access to calld is synchronized.
894
885
  static void fail_pending_batch_in_call_combiner(void* arg, grpc_error* error) {
895
- call_data* calld = (call_data*)arg;
886
+ call_data* calld = static_cast<call_data*>(arg);
896
887
  if (calld->waiting_for_pick_batches_count > 0) {
897
888
  --calld->waiting_for_pick_batches_count;
898
889
  grpc_transport_stream_op_batch_finish_with_failure(
@@ -904,7 +895,7 @@ static void fail_pending_batch_in_call_combiner(void* arg, grpc_error* error) {
904
895
  // This is called via the call combiner, so access to calld is synchronized.
905
896
  static void waiting_for_pick_batches_fail(grpc_call_element* elem,
906
897
  grpc_error* error) {
907
- call_data* calld = (call_data*)elem->call_data;
898
+ call_data* calld = static_cast<call_data*>(elem->call_data);
908
899
  if (grpc_client_channel_trace.enabled()) {
909
900
  gpr_log(GPR_DEBUG,
910
901
  "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
@@ -932,7 +923,7 @@ static void waiting_for_pick_batches_fail(grpc_call_element* elem,
932
923
 
933
924
  // This is called via the call combiner, so access to calld is synchronized.
934
925
  static void run_pending_batch_in_call_combiner(void* arg, grpc_error* ignored) {
935
- call_data* calld = (call_data*)arg;
926
+ call_data* calld = static_cast<call_data*>(arg);
936
927
  if (calld->waiting_for_pick_batches_count > 0) {
937
928
  --calld->waiting_for_pick_batches_count;
938
929
  grpc_subchannel_call_process_op(
@@ -943,8 +934,8 @@ static void run_pending_batch_in_call_combiner(void* arg, grpc_error* ignored) {
943
934
 
944
935
  // This is called via the call combiner, so access to calld is synchronized.
945
936
  static void waiting_for_pick_batches_resume(grpc_call_element* elem) {
946
- channel_data* chand = (channel_data*)elem->channel_data;
947
- call_data* calld = (call_data*)elem->call_data;
937
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
938
+ call_data* calld = static_cast<call_data*>(elem->call_data);
948
939
  if (grpc_client_channel_trace.enabled()) {
949
940
  gpr_log(GPR_DEBUG,
950
941
  "chand=%p calld=%p: sending %" PRIuPTR
@@ -968,8 +959,8 @@ static void waiting_for_pick_batches_resume(grpc_call_element* elem) {
968
959
  // Applies service config to the call. Must be invoked once we know
969
960
  // that the resolver has returned results to the channel.
970
961
  static void apply_service_config_to_call_locked(grpc_call_element* elem) {
971
- channel_data* chand = (channel_data*)elem->channel_data;
972
- call_data* calld = (call_data*)elem->call_data;
962
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
963
+ call_data* calld = static_cast<call_data*>(elem->call_data);
973
964
  if (grpc_client_channel_trace.enabled()) {
974
965
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: applying service config to call",
975
966
  chand, calld);
@@ -979,8 +970,8 @@ static void apply_service_config_to_call_locked(grpc_call_element* elem) {
979
970
  grpc_server_retry_throttle_data_ref(chand->retry_throttle_data);
980
971
  }
981
972
  if (chand->method_params_table != nullptr) {
982
- calld->method_params = (method_parameters*)grpc_method_config_table_get(
983
- chand->method_params_table, calld->path);
973
+ calld->method_params = static_cast<method_parameters*>(
974
+ grpc_method_config_table_get(chand->method_params_table, calld->path));
984
975
  if (calld->method_params != nullptr) {
985
976
  method_parameters_ref(calld->method_params);
986
977
  // If the deadline from the service config is shorter than the one
@@ -1001,9 +992,9 @@ static void apply_service_config_to_call_locked(grpc_call_element* elem) {
1001
992
 
1002
993
  static void create_subchannel_call_locked(grpc_call_element* elem,
1003
994
  grpc_error* error) {
1004
- channel_data* chand = (channel_data*)elem->channel_data;
1005
- call_data* calld = (call_data*)elem->call_data;
1006
- const grpc_connected_subchannel_call_args call_args = {
995
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
996
+ call_data* calld = static_cast<call_data*>(elem->call_data);
997
+ const grpc_core::ConnectedSubchannel::CallArgs call_args = {
1007
998
  calld->pollent, // pollent
1008
999
  calld->path, // path
1009
1000
  calld->call_start_time, // start_time
@@ -1012,8 +1003,8 @@ static void create_subchannel_call_locked(grpc_call_element* elem,
1012
1003
  calld->pick.subchannel_call_context, // context
1013
1004
  calld->call_combiner // call_combiner
1014
1005
  };
1015
- grpc_error* new_error = grpc_connected_subchannel_create_call(
1016
- calld->pick.connected_subchannel, &call_args, &calld->subchannel_call);
1006
+ grpc_error* new_error = calld->pick.connected_subchannel->CreateCall(
1007
+ call_args, &calld->subchannel_call);
1017
1008
  if (grpc_client_channel_trace.enabled()) {
1018
1009
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: create subchannel_call=%p: error=%s",
1019
1010
  chand, calld, calld->subchannel_call, grpc_error_string(new_error));
@@ -1029,8 +1020,8 @@ static void create_subchannel_call_locked(grpc_call_element* elem,
1029
1020
 
1030
1021
  // Invoked when a pick is completed, on both success or failure.
1031
1022
  static void pick_done_locked(grpc_call_element* elem, grpc_error* error) {
1032
- call_data* calld = (call_data*)elem->call_data;
1033
- channel_data* chand = (channel_data*)elem->channel_data;
1023
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1024
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1034
1025
  if (calld->pick.connected_subchannel == nullptr) {
1035
1026
  // Failed to create subchannel.
1036
1027
  GRPC_ERROR_UNREF(calld->error);
@@ -1057,8 +1048,8 @@ static void pick_done_locked(grpc_call_element* elem, grpc_error* error) {
1057
1048
  // pick was done asynchronously. Removes the call's polling entity from
1058
1049
  // chand->interested_parties before invoking pick_done_locked().
1059
1050
  static void async_pick_done_locked(grpc_call_element* elem, grpc_error* error) {
1060
- channel_data* chand = (channel_data*)elem->channel_data;
1061
- call_data* calld = (call_data*)elem->call_data;
1051
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1052
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1062
1053
  grpc_polling_entity_del_from_pollset_set(calld->pollent,
1063
1054
  chand->interested_parties);
1064
1055
  pick_done_locked(elem, error);
@@ -1067,29 +1058,28 @@ static void async_pick_done_locked(grpc_call_element* elem, grpc_error* error) {
1067
1058
  // Note: This runs under the client_channel combiner, but will NOT be
1068
1059
  // holding the call combiner.
1069
1060
  static void pick_callback_cancel_locked(void* arg, grpc_error* error) {
1070
- grpc_call_element* elem = (grpc_call_element*)arg;
1071
- channel_data* chand = (channel_data*)elem->channel_data;
1072
- call_data* calld = (call_data*)elem->call_data;
1061
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1062
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1063
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1073
1064
  // Note: chand->lb_policy may have changed since we started our pick,
1074
1065
  // in which case we will be cancelling the pick on a policy other than
1075
1066
  // the one we started it on. However, this will just be a no-op.
1076
1067
  if (error != GRPC_ERROR_NONE && chand->lb_policy != nullptr) {
1077
1068
  if (grpc_client_channel_trace.enabled()) {
1078
1069
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: cancelling pick from LB policy %p",
1079
- chand, calld, chand->lb_policy);
1070
+ chand, calld, chand->lb_policy.get());
1080
1071
  }
1081
- grpc_lb_policy_cancel_pick_locked(chand->lb_policy, &calld->pick,
1082
- GRPC_ERROR_REF(error));
1072
+ chand->lb_policy->CancelPickLocked(&calld->pick, GRPC_ERROR_REF(error));
1083
1073
  }
1084
1074
  GRPC_CALL_STACK_UNREF(calld->owning_call, "pick_callback_cancel");
1085
1075
  }
1086
1076
 
1087
- // Callback invoked by grpc_lb_policy_pick_locked() for async picks.
1077
+ // Callback invoked by LoadBalancingPolicy::PickLocked() for async picks.
1088
1078
  // Unrefs the LB policy and invokes async_pick_done_locked().
1089
1079
  static void pick_callback_done_locked(void* arg, grpc_error* error) {
1090
- grpc_call_element* elem = (grpc_call_element*)arg;
1091
- channel_data* chand = (channel_data*)elem->channel_data;
1092
- call_data* calld = (call_data*)elem->call_data;
1080
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1081
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1082
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1093
1083
  if (grpc_client_channel_trace.enabled()) {
1094
1084
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: pick completed asynchronously",
1095
1085
  chand, calld);
@@ -1098,15 +1088,14 @@ static void pick_callback_done_locked(void* arg, grpc_error* error) {
1098
1088
  GRPC_CALL_STACK_UNREF(calld->owning_call, "pick_callback");
1099
1089
  }
1100
1090
 
1101
- // Takes a ref to chand->lb_policy and calls grpc_lb_policy_pick_locked().
1102
- // If the pick was completed synchronously, unrefs the LB policy and
1103
- // returns true.
1091
+ // Starts a pick on chand->lb_policy.
1092
+ // Returns true if pick is completed synchronously.
1104
1093
  static bool pick_callback_start_locked(grpc_call_element* elem) {
1105
- channel_data* chand = (channel_data*)elem->channel_data;
1106
- call_data* calld = (call_data*)elem->call_data;
1094
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1095
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1107
1096
  if (grpc_client_channel_trace.enabled()) {
1108
1097
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: starting pick on lb_policy=%p",
1109
- chand, calld, chand->lb_policy);
1098
+ chand, calld, chand->lb_policy.get());
1110
1099
  }
1111
1100
  apply_service_config_to_call_locked(elem);
1112
1101
  // If the application explicitly set wait_for_ready, use that.
@@ -1136,10 +1125,9 @@ static bool pick_callback_start_locked(grpc_call_element* elem) {
1136
1125
  grpc_combiner_scheduler(chand->combiner));
1137
1126
  calld->pick.on_complete = &calld->lb_pick_closure;
1138
1127
  GRPC_CALL_STACK_REF(calld->owning_call, "pick_callback");
1139
- const bool pick_done =
1140
- grpc_lb_policy_pick_locked(chand->lb_policy, &calld->pick);
1128
+ const bool pick_done = chand->lb_policy->PickLocked(&calld->pick);
1141
1129
  if (pick_done) {
1142
- /* synchronous grpc_lb_policy_pick call. Unref the LB policy. */
1130
+ // Pick completed synchronously.
1143
1131
  if (grpc_client_channel_trace.enabled()) {
1144
1132
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: pick completed synchronously",
1145
1133
  chand, calld);
@@ -1167,7 +1155,8 @@ typedef struct {
1167
1155
  // holding the call combiner.
1168
1156
  static void pick_after_resolver_result_cancel_locked(void* arg,
1169
1157
  grpc_error* error) {
1170
- pick_after_resolver_result_args* args = (pick_after_resolver_result_args*)arg;
1158
+ pick_after_resolver_result_args* args =
1159
+ static_cast<pick_after_resolver_result_args*>(arg);
1171
1160
  if (args->finished) {
1172
1161
  gpr_free(args);
1173
1162
  return;
@@ -1181,8 +1170,8 @@ static void pick_after_resolver_result_cancel_locked(void* arg,
1181
1170
  // async_pick_done_locked() to propagate the error back to the caller.
1182
1171
  args->finished = true;
1183
1172
  grpc_call_element* elem = args->elem;
1184
- channel_data* chand = (channel_data*)elem->channel_data;
1185
- call_data* calld = (call_data*)elem->call_data;
1173
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1174
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1186
1175
  if (grpc_client_channel_trace.enabled()) {
1187
1176
  gpr_log(GPR_DEBUG,
1188
1177
  "chand=%p calld=%p: cancelling pick waiting for resolver result",
@@ -1201,7 +1190,8 @@ static void pick_after_resolver_result_start_locked(grpc_call_element* elem);
1201
1190
 
1202
1191
  static void pick_after_resolver_result_done_locked(void* arg,
1203
1192
  grpc_error* error) {
1204
- pick_after_resolver_result_args* args = (pick_after_resolver_result_args*)arg;
1193
+ pick_after_resolver_result_args* args =
1194
+ static_cast<pick_after_resolver_result_args*>(arg);
1205
1195
  if (args->finished) {
1206
1196
  /* cancelled, do nothing */
1207
1197
  if (grpc_client_channel_trace.enabled()) {
@@ -1212,8 +1202,8 @@ static void pick_after_resolver_result_done_locked(void* arg,
1212
1202
  }
1213
1203
  args->finished = true;
1214
1204
  grpc_call_element* elem = args->elem;
1215
- channel_data* chand = (channel_data*)elem->channel_data;
1216
- call_data* calld = (call_data*)elem->call_data;
1205
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1206
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1217
1207
  if (error != GRPC_ERROR_NONE) {
1218
1208
  if (grpc_client_channel_trace.enabled()) {
1219
1209
  gpr_log(GPR_DEBUG, "chand=%p calld=%p: resolver failed to return data",
@@ -1261,15 +1251,15 @@ static void pick_after_resolver_result_done_locked(void* arg,
1261
1251
  }
1262
1252
 
1263
1253
  static void pick_after_resolver_result_start_locked(grpc_call_element* elem) {
1264
- channel_data* chand = (channel_data*)elem->channel_data;
1265
- call_data* calld = (call_data*)elem->call_data;
1254
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1255
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1266
1256
  if (grpc_client_channel_trace.enabled()) {
1267
1257
  gpr_log(GPR_DEBUG,
1268
1258
  "chand=%p calld=%p: deferring pick pending resolver result", chand,
1269
1259
  calld);
1270
1260
  }
1271
1261
  pick_after_resolver_result_args* args =
1272
- (pick_after_resolver_result_args*)gpr_zalloc(sizeof(*args));
1262
+ static_cast<pick_after_resolver_result_args*>(gpr_zalloc(sizeof(*args)));
1273
1263
  args->elem = elem;
1274
1264
  GRPC_CLOSURE_INIT(&args->closure, pick_after_resolver_result_done_locked,
1275
1265
  args, grpc_combiner_scheduler(chand->combiner));
@@ -1283,9 +1273,9 @@ static void pick_after_resolver_result_start_locked(grpc_call_element* elem) {
1283
1273
  }
1284
1274
 
1285
1275
  static void start_pick_locked(void* arg, grpc_error* ignored) {
1286
- grpc_call_element* elem = (grpc_call_element*)arg;
1287
- call_data* calld = (call_data*)elem->call_data;
1288
- channel_data* chand = (channel_data*)elem->channel_data;
1276
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1277
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1278
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1289
1279
  GPR_ASSERT(calld->pick.connected_subchannel == nullptr);
1290
1280
  if (chand->lb_policy != nullptr) {
1291
1281
  // We already have an LB policy, so ask it for a pick.
@@ -1316,8 +1306,8 @@ static void start_pick_locked(void* arg, grpc_error* ignored) {
1316
1306
  }
1317
1307
 
1318
1308
  static void on_complete(void* arg, grpc_error* error) {
1319
- grpc_call_element* elem = (grpc_call_element*)arg;
1320
- call_data* calld = (call_data*)elem->call_data;
1309
+ grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1310
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1321
1311
  if (calld->retry_throttle_data != nullptr) {
1322
1312
  if (error == GRPC_ERROR_NONE) {
1323
1313
  grpc_server_retry_throttle_data_record_success(
@@ -1336,12 +1326,12 @@ static void on_complete(void* arg, grpc_error* error) {
1336
1326
 
1337
1327
  static void cc_start_transport_stream_op_batch(
1338
1328
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
1339
- call_data* calld = (call_data*)elem->call_data;
1340
- channel_data* chand = (channel_data*)elem->channel_data;
1329
+ GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
1330
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1331
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1341
1332
  if (chand->deadline_checking_enabled) {
1342
1333
  grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
1343
1334
  }
1344
- GPR_TIMER_BEGIN("cc_start_transport_stream_op_batch", 0);
1345
1335
  // If we've previously been cancelled, immediately fail any new batches.
1346
1336
  if (calld->error != GRPC_ERROR_NONE) {
1347
1337
  if (grpc_client_channel_trace.enabled()) {
@@ -1350,7 +1340,7 @@ static void cc_start_transport_stream_op_batch(
1350
1340
  }
1351
1341
  grpc_transport_stream_op_batch_finish_with_failure(
1352
1342
  batch, GRPC_ERROR_REF(calld->error), calld->call_combiner);
1353
- goto done;
1343
+ return;
1354
1344
  }
1355
1345
  if (batch->cancel_stream) {
1356
1346
  // Stash a copy of cancel_error in our call data, so that we can use
@@ -1372,7 +1362,7 @@ static void cc_start_transport_stream_op_batch(
1372
1362
  waiting_for_pick_batches_add(calld, batch);
1373
1363
  waiting_for_pick_batches_fail(elem, GRPC_ERROR_REF(calld->error));
1374
1364
  }
1375
- goto done;
1365
+ return;
1376
1366
  }
1377
1367
  // Intercept on_complete for recv_trailing_metadata so that we can
1378
1368
  // check retry throttle status.
@@ -1394,7 +1384,7 @@ static void cc_start_transport_stream_op_batch(
1394
1384
  calld, calld->subchannel_call);
1395
1385
  }
1396
1386
  grpc_subchannel_call_process_op(calld->subchannel_call, batch);
1397
- goto done;
1387
+ return;
1398
1388
  }
1399
1389
  // We do not yet have a subchannel call.
1400
1390
  // Add the batch to the waiting-for-pick list.
@@ -1420,15 +1410,13 @@ static void cc_start_transport_stream_op_batch(
1420
1410
  GRPC_CALL_COMBINER_STOP(calld->call_combiner,
1421
1411
  "batch does not include send_initial_metadata");
1422
1412
  }
1423
- done:
1424
- GPR_TIMER_END("cc_start_transport_stream_op_batch", 0);
1425
1413
  }
1426
1414
 
1427
1415
  /* Constructor for call_data */
1428
1416
  static grpc_error* cc_init_call_elem(grpc_call_element* elem,
1429
1417
  const grpc_call_element_args* args) {
1430
- call_data* calld = (call_data*)elem->call_data;
1431
- channel_data* chand = (channel_data*)elem->channel_data;
1418
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1419
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1432
1420
  // Initialize data members.
1433
1421
  calld->path = grpc_slice_ref_internal(args->path);
1434
1422
  calld->call_start_time = args->start_time;
@@ -1447,8 +1435,8 @@ static grpc_error* cc_init_call_elem(grpc_call_element* elem,
1447
1435
  static void cc_destroy_call_elem(grpc_call_element* elem,
1448
1436
  const grpc_call_final_info* final_info,
1449
1437
  grpc_closure* then_schedule_closure) {
1450
- call_data* calld = (call_data*)elem->call_data;
1451
- channel_data* chand = (channel_data*)elem->channel_data;
1438
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1439
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1452
1440
  if (chand->deadline_checking_enabled) {
1453
1441
  grpc_deadline_state_destroy(elem);
1454
1442
  }
@@ -1466,7 +1454,7 @@ static void cc_destroy_call_elem(grpc_call_element* elem,
1466
1454
  }
1467
1455
  GPR_ASSERT(calld->waiting_for_pick_batches_count == 0);
1468
1456
  if (calld->pick.connected_subchannel != nullptr) {
1469
- GRPC_CONNECTED_SUBCHANNEL_UNREF(calld->pick.connected_subchannel, "picked");
1457
+ calld->pick.connected_subchannel.reset();
1470
1458
  }
1471
1459
  for (size_t i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
1472
1460
  if (calld->pick.subchannel_call_context[i].value != nullptr) {
@@ -1479,7 +1467,7 @@ static void cc_destroy_call_elem(grpc_call_element* elem,
1479
1467
 
1480
1468
  static void cc_set_pollset_or_pollset_set(grpc_call_element* elem,
1481
1469
  grpc_polling_entity* pollent) {
1482
- call_data* calld = (call_data*)elem->call_data;
1470
+ call_data* calld = static_cast<call_data*>(elem->call_data);
1483
1471
  calld->pollent = pollent;
1484
1472
  }
1485
1473
 
@@ -1502,9 +1490,9 @@ const grpc_channel_filter grpc_client_channel_filter = {
1502
1490
  };
1503
1491
 
1504
1492
  static void try_to_connect_locked(void* arg, grpc_error* error_ignored) {
1505
- channel_data* chand = (channel_data*)arg;
1493
+ channel_data* chand = static_cast<channel_data*>(arg);
1506
1494
  if (chand->lb_policy != nullptr) {
1507
- grpc_lb_policy_exit_idle_locked(chand->lb_policy);
1495
+ chand->lb_policy->ExitIdleLocked();
1508
1496
  } else {
1509
1497
  chand->exit_idle_when_lb_policy_arrives = true;
1510
1498
  if (!chand->started_resolving && chand->resolver != nullptr) {
@@ -1516,7 +1504,7 @@ static void try_to_connect_locked(void* arg, grpc_error* error_ignored) {
1516
1504
 
1517
1505
  grpc_connectivity_state grpc_client_channel_check_connectivity_state(
1518
1506
  grpc_channel_element* elem, int try_to_connect) {
1519
- channel_data* chand = (channel_data*)elem->channel_data;
1507
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1520
1508
  grpc_connectivity_state out =
1521
1509
  grpc_connectivity_state_check(&chand->state_tracker);
1522
1510
  if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
@@ -1587,7 +1575,7 @@ static void external_connectivity_watcher_list_remove(
1587
1575
 
1588
1576
  int grpc_client_channel_num_external_connectivity_watchers(
1589
1577
  grpc_channel_element* elem) {
1590
- channel_data* chand = (channel_data*)elem->channel_data;
1578
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1591
1579
  int count = 0;
1592
1580
 
1593
1581
  gpr_mu_lock(&chand->external_connectivity_watcher_list_mu);
@@ -1603,7 +1591,8 @@ int grpc_client_channel_num_external_connectivity_watchers(
1603
1591
  }
1604
1592
 
1605
1593
  static void on_external_watch_complete_locked(void* arg, grpc_error* error) {
1606
- external_connectivity_watcher* w = (external_connectivity_watcher*)arg;
1594
+ external_connectivity_watcher* w =
1595
+ static_cast<external_connectivity_watcher*>(arg);
1607
1596
  grpc_closure* follow_up = w->on_complete;
1608
1597
  grpc_polling_entity_del_from_pollset_set(&w->pollent,
1609
1598
  w->chand->interested_parties);
@@ -1616,7 +1605,8 @@ static void on_external_watch_complete_locked(void* arg, grpc_error* error) {
1616
1605
 
1617
1606
  static void watch_connectivity_state_locked(void* arg,
1618
1607
  grpc_error* error_ignored) {
1619
- external_connectivity_watcher* w = (external_connectivity_watcher*)arg;
1608
+ external_connectivity_watcher* w =
1609
+ static_cast<external_connectivity_watcher*>(arg);
1620
1610
  external_connectivity_watcher* found = nullptr;
1621
1611
  if (w->state != nullptr) {
1622
1612
  external_connectivity_watcher_list_append(w->chand, w);
@@ -1645,9 +1635,9 @@ void grpc_client_channel_watch_connectivity_state(
1645
1635
  grpc_channel_element* elem, grpc_polling_entity pollent,
1646
1636
  grpc_connectivity_state* state, grpc_closure* closure,
1647
1637
  grpc_closure* watcher_timer_init) {
1648
- channel_data* chand = (channel_data*)elem->channel_data;
1638
+ channel_data* chand = static_cast<channel_data*>(elem->channel_data);
1649
1639
  external_connectivity_watcher* w =
1650
- (external_connectivity_watcher*)gpr_zalloc(sizeof(*w));
1640
+ static_cast<external_connectivity_watcher*>(gpr_zalloc(sizeof(*w)));
1651
1641
  w->chand = chand;
1652
1642
  w->pollent = pollent;
1653
1643
  w->on_complete = closure;