grpc-flamingo 1.11.0 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (452) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1150 -176
  3. data/etc/roots.pem +40 -196
  4. data/include/grpc/grpc.h +49 -8
  5. data/include/grpc/grpc_security.h +123 -2
  6. data/include/grpc/grpc_security_constants.h +6 -0
  7. data/include/grpc/impl/codegen/fork.h +4 -4
  8. data/include/grpc/impl/codegen/grpc_types.h +26 -5
  9. data/include/grpc/impl/codegen/log.h +112 -0
  10. data/include/grpc/impl/codegen/port_platform.h +55 -4
  11. data/include/grpc/module.modulemap +2 -0
  12. data/include/grpc/support/log.h +2 -80
  13. data/include/grpc/support/string_util.h +2 -0
  14. data/include/grpc/support/sync.h +0 -16
  15. data/src/boringssl/err_data.c +602 -588
  16. data/src/core/ext/{census → filters/census}/grpc_context.cc +0 -0
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel.cc +1234 -1070
  19. data/src/core/ext/filters/client_channel/client_channel.h +5 -0
  20. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +113 -0
  21. data/src/core/ext/filters/client_channel/client_channel_channelz.h +71 -0
  22. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -0
  23. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  24. data/src/core/ext/filters/client_channel/http_proxy.cc +22 -5
  25. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -2
  26. data/src/core/ext/filters/client_channel/lb_policy.h +30 -10
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +120 -127
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +36 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +36 -102
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +37 -32
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +25 -22
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -2
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +19 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +54 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +19 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +54 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +4 -17
  39. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +37 -63
  40. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +306 -239
  41. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +444 -392
  42. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +538 -98
  43. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -0
  44. data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -0
  45. data/src/core/ext/filters/client_channel/method_params.h +4 -0
  46. data/src/core/ext/filters/client_channel/resolver.h +10 -0
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -19
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +320 -0
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +62 -9
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +49 -294
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +537 -0
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +112 -87
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +17 -2
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +6 -5
  55. data/src/core/ext/filters/{load_reporting/server_load_reporting_filter.h → client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc} +7 -8
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +29 -0
  57. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +32 -15
  58. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -0
  59. data/src/core/ext/filters/client_channel/subchannel.cc +58 -15
  60. data/src/core/ext/filters/client_channel/subchannel.h +11 -0
  61. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -15
  62. data/src/core/ext/filters/deadline/deadline_filter.h +5 -5
  63. data/src/core/ext/filters/http/client/http_client_filter.cc +10 -9
  64. data/src/core/ext/filters/http/client_authority_filter.cc +6 -5
  65. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +6 -6
  66. data/src/core/ext/filters/http/server/http_server_filter.cc +123 -131
  67. data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
  68. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  69. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
  70. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -2
  71. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +9 -8
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +97 -48
  73. data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -7
  74. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +3 -3
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +12 -8
  76. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -3
  77. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
  78. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +2 -2
  79. data/src/core/ext/transport/chttp2/transport/parsing.cc +14 -12
  80. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
  81. data/src/core/ext/transport/chttp2/transport/writing.cc +32 -27
  82. data/src/core/ext/transport/inproc/inproc_transport.cc +87 -49
  83. data/src/core/lib/channel/channel_args.cc +28 -0
  84. data/src/core/lib/channel/channel_args.h +4 -0
  85. data/src/core/lib/channel/channel_stack.cc +22 -29
  86. data/src/core/lib/channel/channel_stack.h +2 -2
  87. data/src/core/lib/channel/channel_stack_builder.cc +0 -3
  88. data/src/core/lib/channel/channel_stack_builder.h +0 -2
  89. data/src/core/lib/channel/channel_trace.cc +28 -63
  90. data/src/core/lib/channel/channel_trace.h +13 -17
  91. data/src/core/lib/channel/channelz.cc +153 -0
  92. data/src/core/lib/channel/channelz.h +133 -0
  93. data/src/core/lib/channel/channelz_registry.cc +145 -0
  94. data/src/core/lib/channel/channelz_registry.h +120 -0
  95. data/src/core/lib/channel/connected_channel.cc +8 -1
  96. data/src/core/lib/channel/handshaker.cc +71 -0
  97. data/src/core/lib/channel/handshaker.h +4 -0
  98. data/src/core/lib/debug/stats.h +7 -0
  99. data/src/core/lib/debug/stats_data.cc +5 -0
  100. data/src/core/lib/debug/stats_data.h +120 -0
  101. data/src/core/lib/debug/trace.cc +2 -1
  102. data/src/core/lib/debug/trace.h +12 -1
  103. data/src/core/lib/gpr/alloc.h +28 -0
  104. data/src/core/lib/gpr/arena.cc +38 -45
  105. data/src/core/lib/gpr/log.cc +8 -2
  106. data/src/core/lib/gpr/log_android.cc +4 -0
  107. data/src/core/lib/gpr/log_linux.cc +4 -0
  108. data/src/core/lib/gpr/log_posix.cc +4 -0
  109. data/src/core/lib/gpr/log_windows.cc +5 -0
  110. data/src/core/lib/gpr/string.cc +28 -0
  111. data/src/core/lib/gpr/string.h +10 -0
  112. data/src/core/lib/gprpp/abstract.h +5 -2
  113. data/src/core/lib/gprpp/fork.cc +268 -0
  114. data/src/core/lib/gprpp/fork.h +88 -0
  115. data/src/core/lib/gprpp/inlined_vector.h +87 -37
  116. data/src/core/lib/gprpp/memory.h +12 -0
  117. data/src/core/lib/gprpp/mutex_lock.h +42 -0
  118. data/src/core/lib/gprpp/orphanable.h +10 -12
  119. data/src/core/lib/gprpp/ref_counted.h +10 -12
  120. data/src/core/lib/gprpp/ref_counted_ptr.h +65 -8
  121. data/src/core/lib/gprpp/thd.h +0 -3
  122. data/src/core/lib/gprpp/thd_posix.cc +5 -54
  123. data/src/core/lib/gprpp/thd_windows.cc +0 -7
  124. data/src/core/lib/http/httpcli_security_connector.cc +1 -3
  125. data/src/core/lib/iomgr/call_combiner.cc +13 -13
  126. data/src/core/lib/iomgr/call_combiner.h +84 -1
  127. data/src/core/lib/iomgr/closure.h +6 -5
  128. data/src/core/lib/iomgr/combiner.cc +30 -13
  129. data/src/core/lib/iomgr/combiner.h +1 -1
  130. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  131. data/src/core/lib/iomgr/error.cc +12 -0
  132. data/src/core/lib/iomgr/error.h +5 -0
  133. data/src/core/lib/iomgr/ev_epoll1_linux.cc +138 -51
  134. data/src/core/lib/iomgr/ev_epollex_linux.cc +276 -93
  135. data/src/core/lib/iomgr/ev_epollsig_linux.cc +58 -50
  136. data/src/core/lib/iomgr/ev_poll_posix.cc +163 -42
  137. data/src/core/lib/iomgr/ev_posix.cc +88 -24
  138. data/src/core/lib/iomgr/ev_posix.h +48 -12
  139. data/src/core/lib/iomgr/exec_ctx.cc +15 -9
  140. data/src/core/lib/iomgr/exec_ctx.h +48 -20
  141. data/src/core/lib/iomgr/executor.cc +274 -142
  142. data/src/core/lib/iomgr/executor.h +82 -16
  143. data/src/core/lib/iomgr/fork_posix.cc +42 -19
  144. data/src/core/lib/iomgr/iocp_windows.cc +9 -4
  145. data/src/core/lib/iomgr/iomgr.cc +2 -0
  146. data/src/core/lib/iomgr/iomgr.h +5 -0
  147. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  148. data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -0
  149. data/src/core/lib/iomgr/lockfree_event.cc +5 -1
  150. data/src/core/lib/iomgr/polling_entity.cc +11 -2
  151. data/src/core/lib/iomgr/pollset_custom.cc +2 -2
  152. data/src/core/lib/iomgr/port.h +51 -1
  153. data/src/core/lib/iomgr/resolve_address.h +1 -1
  154. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
  155. data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
  156. data/src/core/lib/iomgr/resource_quota.cc +89 -12
  157. data/src/core/lib/iomgr/resource_quota.h +16 -0
  158. data/src/core/lib/iomgr/sockaddr_posix.h +1 -1
  159. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  160. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  161. data/src/core/lib/iomgr/socket_mutator.h +1 -1
  162. data/src/core/lib/iomgr/socket_utils.h +9 -0
  163. data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -1
  164. data/src/core/lib/iomgr/socket_utils_linux.cc +0 -1
  165. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -3
  166. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  167. data/src/core/lib/iomgr/socket_utils_uv.cc +4 -0
  168. data/src/core/lib/iomgr/socket_utils_windows.cc +4 -0
  169. data/src/core/lib/iomgr/socket_windows.cc +33 -0
  170. data/src/core/lib/iomgr/socket_windows.h +6 -0
  171. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -5
  172. data/src/core/lib/iomgr/tcp_client_posix.cc +10 -11
  173. data/src/core/lib/iomgr/tcp_custom.cc +11 -11
  174. data/src/core/lib/iomgr/tcp_posix.cc +49 -36
  175. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  176. data/src/core/lib/iomgr/tcp_server_posix.cc +16 -36
  177. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  178. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +17 -5
  179. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -0
  180. data/src/core/lib/iomgr/tcp_uv.cc +3 -0
  181. data/src/core/lib/iomgr/tcp_windows.cc +18 -2
  182. data/src/core/lib/iomgr/tcp_windows.h +2 -0
  183. data/src/core/lib/iomgr/timer.h +4 -3
  184. data/src/core/lib/iomgr/timer_generic.cc +133 -51
  185. data/src/core/lib/iomgr/timer_manager.cc +12 -14
  186. data/src/core/lib/iomgr/timer_uv.cc +3 -0
  187. data/src/core/lib/iomgr/udp_server.cc +106 -52
  188. data/src/core/lib/iomgr/udp_server.h +8 -4
  189. data/src/core/lib/json/json.cc +12 -1
  190. data/src/core/lib/json/json.h +5 -0
  191. data/src/core/lib/profiling/basic_timers.cc +1 -0
  192. data/src/core/lib/security/context/security_context.cc +8 -8
  193. data/src/core/lib/security/context/security_context.h +6 -2
  194. data/src/core/lib/security/credentials/alts/alts_credentials.h +0 -20
  195. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +3 -2
  196. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +7 -7
  197. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +1 -38
  198. data/src/core/lib/security/credentials/credentials.h +1 -0
  199. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +89 -115
  200. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +16 -0
  201. data/src/core/lib/security/credentials/jwt/json_token.h +2 -0
  202. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +2 -0
  203. data/src/core/lib/security/credentials/local/local_credentials.cc +77 -0
  204. data/src/core/lib/security/credentials/local/local_credentials.h +40 -0
  205. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +11 -7
  206. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  207. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +17 -3
  208. data/src/core/lib/security/security_connector/alts_security_connector.cc +2 -1
  209. data/src/core/lib/security/security_connector/load_system_roots.h +29 -0
  210. data/src/core/lib/{gpr/fork.h → security/security_connector/load_system_roots_fallback.cc} +10 -13
  211. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +165 -0
  212. data/src/core/lib/security/security_connector/load_system_roots_linux.h +44 -0
  213. data/src/core/lib/security/security_connector/local_security_connector.cc +245 -0
  214. data/src/core/lib/security/security_connector/local_security_connector.h +58 -0
  215. data/src/core/lib/security/security_connector/security_connector.cc +79 -32
  216. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  217. data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
  218. data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
  219. data/src/core/lib/security/transport/security_handshaker.cc +7 -2
  220. data/src/core/lib/security/transport/server_auth_filter.cc +4 -7
  221. data/src/core/lib/security/util/json_util.cc +4 -0
  222. data/src/core/lib/slice/slice.cc +6 -2
  223. data/src/core/lib/slice/slice_buffer.cc +27 -7
  224. data/src/core/lib/slice/slice_hash_table.h +4 -0
  225. data/src/core/lib/slice/slice_weak_hash_table.h +4 -0
  226. data/src/core/lib/surface/call.cc +119 -58
  227. data/src/core/lib/surface/call.h +7 -0
  228. data/src/core/lib/surface/channel.cc +50 -18
  229. data/src/core/lib/surface/channel.h +4 -0
  230. data/src/core/lib/surface/completion_queue.cc +153 -18
  231. data/src/core/lib/surface/completion_queue.h +20 -2
  232. data/src/core/lib/surface/completion_queue_factory.cc +13 -4
  233. data/src/core/lib/surface/init.cc +7 -8
  234. data/src/core/lib/surface/init.h +0 -1
  235. data/src/core/lib/surface/server.cc +16 -0
  236. data/src/core/lib/surface/version.cc +1 -1
  237. data/src/core/lib/transport/bdp_estimator.cc +3 -3
  238. data/src/core/lib/transport/bdp_estimator.h +2 -2
  239. data/src/core/lib/transport/byte_stream.cc +1 -1
  240. data/src/core/lib/transport/connectivity_state.cc +6 -7
  241. data/src/core/lib/transport/service_config.cc +2 -2
  242. data/src/core/lib/transport/service_config.h +3 -3
  243. data/src/core/lib/transport/transport.cc +22 -10
  244. data/src/core/lib/transport/transport.h +18 -18
  245. data/src/core/lib/transport/transport_op_string.cc +1 -8
  246. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -4
  247. data/src/core/tsi/alts/crypt/aes_gcm.cc +2 -0
  248. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +19 -7
  249. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +10 -0
  250. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +2 -2
  251. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +38 -3
  252. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -0
  253. data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -1
  254. data/src/core/tsi/alts/handshaker/altscontext.pb.h +1 -2
  255. data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -1
  256. data/src/core/tsi/alts/handshaker/handshaker.pb.h +1 -2
  257. data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -1
  258. data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +1 -1
  259. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  260. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +47 -1
  261. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -1
  262. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -11
  263. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +7 -2
  264. data/src/core/tsi/fake_transport_security.cc +1 -0
  265. data/src/core/tsi/grpc_shadow_boringssl.h +3006 -0
  266. data/src/core/tsi/local_transport_security.cc +209 -0
  267. data/src/core/tsi/local_transport_security.h +51 -0
  268. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  269. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +5 -5
  270. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -0
  271. data/src/core/tsi/ssl_transport_security.cc +245 -116
  272. data/src/core/tsi/ssl_types.h +2 -0
  273. data/src/core/tsi/transport_security.cc +14 -0
  274. data/src/core/tsi/transport_security.h +2 -0
  275. data/src/core/tsi/transport_security_interface.h +11 -1
  276. data/src/ruby/bin/math_client.rb +17 -9
  277. data/src/ruby/ext/grpc/extconf.rb +1 -26
  278. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -3
  279. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +42 -16
  280. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +65 -26
  281. data/src/ruby/lib/grpc/generic/active_call.rb +19 -23
  282. data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -1
  283. data/src/ruby/lib/grpc/version.rb +1 -1
  284. data/src/ruby/pb/generate_proto_ruby.sh +7 -1
  285. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +4 -1
  286. data/src/ruby/spec/call_credentials_spec.rb +1 -1
  287. data/src/ruby/spec/call_spec.rb +1 -1
  288. data/src/ruby/spec/channel_credentials_spec.rb +1 -1
  289. data/src/ruby/spec/channel_spec.rb +1 -1
  290. data/src/ruby/spec/client_auth_spec.rb +1 -12
  291. data/src/ruby/spec/client_server_spec.rb +1 -1
  292. data/src/ruby/spec/compression_options_spec.rb +1 -1
  293. data/src/ruby/spec/error_sanity_spec.rb +1 -1
  294. data/src/ruby/spec/generic/client_stub_spec.rb +16 -4
  295. data/src/ruby/spec/generic/rpc_desc_spec.rb +1 -1
  296. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
  297. data/src/ruby/spec/generic/service_spec.rb +1 -1
  298. data/src/ruby/spec/google_rpc_status_utils_spec.rb +1 -12
  299. data/src/ruby/spec/pb/duplicate/codegen_spec.rb +1 -0
  300. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  301. data/src/ruby/spec/server_credentials_spec.rb +1 -1
  302. data/src/ruby/spec/server_spec.rb +1 -1
  303. data/src/ruby/spec/spec_helper.rb +1 -0
  304. data/src/ruby/spec/support/services.rb +1 -1
  305. data/src/ruby/spec/time_consts_spec.rb +1 -1
  306. data/third_party/address_sorting/address_sorting.c +17 -11
  307. data/third_party/address_sorting/address_sorting_windows.c +43 -3
  308. data/third_party/address_sorting/include/address_sorting/address_sorting.h +3 -0
  309. data/third_party/boringssl/crypto/asn1/a_int.c +33 -28
  310. data/third_party/boringssl/crypto/asn1/a_mbstr.c +24 -22
  311. data/third_party/boringssl/crypto/asn1/a_utf8.c +13 -11
  312. data/third_party/boringssl/crypto/asn1/asn1_locl.h +3 -0
  313. data/third_party/boringssl/crypto/asn1/tasn_dec.c +40 -19
  314. data/third_party/boringssl/crypto/bio/fd.c +1 -0
  315. data/third_party/boringssl/crypto/bio/file.c +2 -0
  316. data/third_party/boringssl/crypto/bn_extra/convert.c +6 -5
  317. data/third_party/boringssl/crypto/bytestring/ber.c +1 -4
  318. data/third_party/boringssl/crypto/bytestring/cbb.c +116 -16
  319. data/third_party/boringssl/crypto/bytestring/cbs.c +151 -20
  320. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +203 -0
  321. data/third_party/boringssl/crypto/cipher_extra/e_rc2.c +2 -0
  322. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +1 -2
  323. data/third_party/boringssl/crypto/cpu-aarch64-fuchsia.c +55 -0
  324. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +2 -1
  325. data/third_party/boringssl/crypto/dsa/dsa.c +16 -54
  326. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +9 -10
  327. data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -3
  328. data/third_party/boringssl/crypto/fipsmodule/bcm.c +11 -542
  329. data/third_party/boringssl/crypto/fipsmodule/bn/add.c +57 -112
  330. data/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.c +4 -3
  331. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +128 -70
  332. data/third_party/boringssl/crypto/fipsmodule/bn/bytes.c +32 -71
  333. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +64 -118
  334. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +284 -122
  335. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +31 -65
  336. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +274 -218
  337. data/third_party/boringssl/crypto/fipsmodule/bn/generic.c +2 -1
  338. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +187 -27
  339. data/third_party/boringssl/crypto/fipsmodule/bn/jacobi.c +1 -1
  340. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +124 -81
  341. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +8 -30
  342. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +321 -347
  343. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +326 -66
  344. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +77 -25
  345. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +199 -222
  346. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +27 -47
  347. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +155 -96
  348. data/third_party/boringssl/crypto/fipsmodule/bn/sqrt.c +1 -1
  349. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +10 -10
  350. data/third_party/boringssl/crypto/fipsmodule/des/internal.h +2 -0
  351. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +78 -47
  352. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +99 -163
  353. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +3 -10
  354. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +44 -23
  355. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +59 -90
  356. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +38 -65
  357. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +5378 -5418
  358. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +17 -26
  359. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +15 -11
  360. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +45 -51
  361. data/third_party/boringssl/crypto/fipsmodule/ec/{util-64.c → util.c} +0 -5
  362. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +144 -264
  363. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +78 -62
  364. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +256 -0
  365. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +36 -32
  366. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +9 -7
  367. data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +16 -40
  368. data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +1 -6
  369. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +57 -39
  370. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +309 -142
  371. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +581 -0
  372. data/third_party/boringssl/crypto/fipsmodule/tls/internal.h +39 -0
  373. data/third_party/boringssl/crypto/fipsmodule/tls/kdf.c +165 -0
  374. data/third_party/boringssl/crypto/internal.h +65 -2
  375. data/third_party/boringssl/crypto/mem.c +0 -2
  376. data/third_party/boringssl/crypto/obj/obj.c +6 -73
  377. data/third_party/boringssl/crypto/thread_pthread.c +35 -5
  378. data/third_party/boringssl/crypto/x509/a_strex.c +11 -11
  379. data/third_party/boringssl/crypto/x509/vpm_int.h +1 -0
  380. data/third_party/boringssl/crypto/x509/x509_vfy.c +4 -0
  381. data/third_party/boringssl/crypto/x509/x509_vpm.c +44 -22
  382. data/third_party/boringssl/crypto/x509/x_name.c +13 -0
  383. data/third_party/boringssl/include/openssl/aead.h +10 -0
  384. data/third_party/boringssl/include/openssl/asn1.h +2 -3
  385. data/third_party/boringssl/include/openssl/base.h +5 -14
  386. data/third_party/boringssl/include/openssl/bio.h +1 -1
  387. data/third_party/boringssl/include/openssl/bn.h +62 -18
  388. data/third_party/boringssl/include/openssl/bytestring.h +53 -28
  389. data/third_party/boringssl/include/openssl/crypto.h +4 -0
  390. data/third_party/boringssl/include/openssl/ec.h +10 -4
  391. data/third_party/boringssl/include/openssl/ec_key.h +7 -6
  392. data/third_party/boringssl/include/openssl/err.h +9 -9
  393. data/third_party/boringssl/include/openssl/evp.h +1 -1
  394. data/third_party/boringssl/include/openssl/rsa.h +35 -10
  395. data/third_party/boringssl/include/openssl/ssl.h +167 -19
  396. data/third_party/boringssl/include/openssl/ssl3.h +0 -1
  397. data/third_party/boringssl/include/openssl/stack.h +1 -1
  398. data/third_party/boringssl/include/openssl/tls1.h +10 -2
  399. data/third_party/boringssl/include/openssl/x509.h +4 -0
  400. data/third_party/boringssl/include/openssl/x509v3.h +1 -0
  401. data/third_party/boringssl/ssl/d1_both.cc +16 -2
  402. data/third_party/boringssl/ssl/dtls_method.cc +1 -1
  403. data/third_party/boringssl/ssl/handoff.cc +285 -0
  404. data/third_party/boringssl/ssl/handshake.cc +26 -12
  405. data/third_party/boringssl/ssl/handshake_client.cc +101 -95
  406. data/third_party/boringssl/ssl/handshake_server.cc +14 -2
  407. data/third_party/boringssl/ssl/internal.h +132 -79
  408. data/third_party/boringssl/ssl/s3_both.cc +2 -2
  409. data/third_party/boringssl/ssl/s3_lib.cc +3 -1
  410. data/third_party/boringssl/ssl/s3_pkt.cc +0 -18
  411. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +1 -4
  412. data/third_party/boringssl/ssl/ssl_asn1.cc +47 -43
  413. data/third_party/boringssl/ssl/ssl_cipher.cc +12 -8
  414. data/third_party/boringssl/ssl/ssl_key_share.cc +3 -1
  415. data/third_party/boringssl/ssl/ssl_lib.cc +83 -14
  416. data/third_party/boringssl/ssl/ssl_privkey.cc +6 -0
  417. data/third_party/boringssl/ssl/ssl_stat.cc +6 -6
  418. data/third_party/boringssl/ssl/ssl_versions.cc +12 -85
  419. data/third_party/boringssl/ssl/ssl_x509.cc +59 -61
  420. data/third_party/boringssl/ssl/t1_enc.cc +73 -124
  421. data/third_party/boringssl/ssl/t1_lib.cc +367 -41
  422. data/third_party/boringssl/ssl/tls13_both.cc +8 -0
  423. data/third_party/boringssl/ssl/tls13_client.cc +98 -184
  424. data/third_party/boringssl/ssl/tls13_enc.cc +88 -158
  425. data/third_party/boringssl/ssl/tls13_server.cc +91 -137
  426. data/third_party/boringssl/ssl/tls_method.cc +0 -17
  427. data/third_party/boringssl/ssl/tls_record.cc +1 -10
  428. data/third_party/boringssl/third_party/fiat/curve25519.c +921 -2753
  429. data/third_party/boringssl/third_party/fiat/curve25519_tables.h +7880 -0
  430. data/third_party/boringssl/third_party/fiat/internal.h +32 -20
  431. data/third_party/boringssl/third_party/fiat/p256.c +1824 -0
  432. metadata +86 -71
  433. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +0 -253
  434. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +0 -222
  435. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +0 -71
  436. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -61
  437. data/src/core/lib/channel/channel_trace_registry.cc +0 -80
  438. data/src/core/lib/channel/channel_trace_registry.h +0 -43
  439. data/src/core/lib/gpr/fork.cc +0 -78
  440. data/src/core/tsi/transport_security_adapter.cc +0 -235
  441. data/src/core/tsi/transport_security_adapter.h +0 -41
  442. data/src/ruby/bin/apis/google/protobuf/empty.rb +0 -29
  443. data/src/ruby/bin/apis/pubsub_demo.rb +0 -241
  444. data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +0 -159
  445. data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +0 -88
  446. data/src/ruby/pb/test/client.rb +0 -764
  447. data/src/ruby/pb/test/server.rb +0 -252
  448. data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +0 -54
  449. data/src/ruby/spec/pb/package_with_underscore/data.proto +0 -23
  450. data/src/ruby/spec/pb/package_with_underscore/service.proto +0 -23
  451. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +0 -247
  452. data/third_party/boringssl/crypto/fipsmodule/ec/p256-64.c +0 -1674
@@ -411,3 +411,31 @@ grpc_arg grpc_channel_arg_pointer_create(
411
411
  arg.value.pointer.vtable = vtable;
412
412
  return arg;
413
413
  }
414
+
415
+ char* grpc_channel_args_string(const grpc_channel_args* args) {
416
+ if (args == nullptr) return nullptr;
417
+ gpr_strvec v;
418
+ gpr_strvec_init(&v);
419
+ for (size_t i = 0; i < args->num_args; ++i) {
420
+ const grpc_arg& arg = args->args[i];
421
+ char* s;
422
+ switch (arg.type) {
423
+ case GRPC_ARG_INTEGER:
424
+ gpr_asprintf(&s, "%s=%d", arg.key, arg.value.integer);
425
+ break;
426
+ case GRPC_ARG_STRING:
427
+ gpr_asprintf(&s, "%s=%s", arg.key, arg.value.string);
428
+ break;
429
+ case GRPC_ARG_POINTER:
430
+ gpr_asprintf(&s, "%s=%p", arg.key, arg.value.pointer.p);
431
+ break;
432
+ default:
433
+ gpr_asprintf(&s, "arg with unknown type");
434
+ }
435
+ gpr_strvec_add(&v, s);
436
+ }
437
+ char* result =
438
+ gpr_strjoin_sep(const_cast<const char**>(v.strs), v.count, ", ", nullptr);
439
+ gpr_strvec_destroy(&v);
440
+ return result;
441
+ }
@@ -124,4 +124,8 @@ grpc_arg grpc_channel_arg_integer_create(char* name, int value);
124
124
  grpc_arg grpc_channel_arg_pointer_create(char* name, void* value,
125
125
  const grpc_arg_pointer_vtable* vtable);
126
126
 
127
+ // Returns a string representing channel args in human-readable form.
128
+ // Callers takes ownership of result.
129
+ char* grpc_channel_args_string(const grpc_channel_args* args);
130
+
127
131
  #endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_ARGS_H */
@@ -21,6 +21,7 @@
21
21
  #include <grpc/support/alloc.h>
22
22
  #include <grpc/support/log.h>
23
23
  #include "src/core/lib/channel/channel_stack.h"
24
+ #include "src/core/lib/gpr/alloc.h"
24
25
 
25
26
  #include <stdlib.h>
26
27
  #include <string.h>
@@ -43,16 +44,12 @@ grpc_core::TraceFlag grpc_trace_channel(false, "channel");
43
44
  per-filter memory, aligned to GPR_MAX_ALIGNMENT
44
45
  } */
45
46
 
46
- /* Given a size, round up to the next multiple of sizeof(void*) */
47
- #define ROUND_UP_TO_ALIGNMENT_SIZE(x) \
48
- (((x) + GPR_MAX_ALIGNMENT - 1u) & ~(GPR_MAX_ALIGNMENT - 1u))
49
-
50
47
  size_t grpc_channel_stack_size(const grpc_channel_filter** filters,
51
48
  size_t filter_count) {
52
49
  /* always need the header, and size for the channel elements */
53
- size_t size =
54
- ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_channel_stack)) +
55
- ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_channel_element));
50
+ size_t size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_channel_stack)) +
51
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count *
52
+ sizeof(grpc_channel_element));
56
53
  size_t i;
57
54
 
58
55
  GPR_ASSERT((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0 &&
@@ -60,19 +57,19 @@ size_t grpc_channel_stack_size(const grpc_channel_filter** filters,
60
57
 
61
58
  /* add the size for each filter */
62
59
  for (i = 0; i < filter_count; i++) {
63
- size += ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_channel_data);
60
+ size += GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_channel_data);
64
61
  }
65
62
 
66
63
  return size;
67
64
  }
68
65
 
69
- #define CHANNEL_ELEMS_FROM_STACK(stk) \
70
- ((grpc_channel_element*)((char*)(stk) + ROUND_UP_TO_ALIGNMENT_SIZE( \
66
+ #define CHANNEL_ELEMS_FROM_STACK(stk) \
67
+ ((grpc_channel_element*)((char*)(stk) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE( \
71
68
  sizeof(grpc_channel_stack))))
72
69
 
73
- #define CALL_ELEMS_FROM_STACK(stk) \
74
- ((grpc_call_element*)((char*)(stk) + \
75
- ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack))))
70
+ #define CALL_ELEMS_FROM_STACK(stk) \
71
+ ((grpc_call_element*)((char*)(stk) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE( \
72
+ sizeof(grpc_call_stack))))
76
73
 
77
74
  grpc_channel_element* grpc_channel_stack_element(
78
75
  grpc_channel_stack* channel_stack, size_t index) {
@@ -95,8 +92,8 @@ grpc_error* grpc_channel_stack_init(
95
92
  const grpc_channel_args* channel_args, grpc_transport* optional_transport,
96
93
  const char* name, grpc_channel_stack* stack) {
97
94
  size_t call_size =
98
- ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
99
- ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element));
95
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
96
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element));
100
97
  grpc_channel_element* elems;
101
98
  grpc_channel_element_args args;
102
99
  char* user_data;
@@ -106,9 +103,9 @@ grpc_error* grpc_channel_stack_init(
106
103
  GRPC_STREAM_REF_INIT(&stack->refcount, initial_refs, destroy, destroy_arg,
107
104
  name);
108
105
  elems = CHANNEL_ELEMS_FROM_STACK(stack);
109
- user_data =
110
- (reinterpret_cast<char*>(elems)) +
111
- ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_channel_element));
106
+ user_data = (reinterpret_cast<char*>(elems)) +
107
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count *
108
+ sizeof(grpc_channel_element));
112
109
 
113
110
  /* init per-filter data */
114
111
  grpc_error* first_error = GRPC_ERROR_NONE;
@@ -128,8 +125,9 @@ grpc_error* grpc_channel_stack_init(
128
125
  GRPC_ERROR_UNREF(error);
129
126
  }
130
127
  }
131
- user_data += ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_channel_data);
132
- call_size += ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_call_data);
128
+ user_data +=
129
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_channel_data);
130
+ call_size += GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_call_data);
133
131
  }
134
132
 
135
133
  GPR_ASSERT(user_data > (char*)stack);
@@ -166,7 +164,7 @@ grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack,
166
164
  destroy_arg, "CALL_STACK");
167
165
  call_elems = CALL_ELEMS_FROM_STACK(elem_args->call_stack);
168
166
  user_data = (reinterpret_cast<char*>(call_elems)) +
169
- ROUND_UP_TO_ALIGNMENT_SIZE(count * sizeof(grpc_call_element));
167
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(count * sizeof(grpc_call_element));
170
168
 
171
169
  /* init per-filter data */
172
170
  grpc_error* first_error = GRPC_ERROR_NONE;
@@ -184,7 +182,7 @@ grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack,
184
182
  }
185
183
  }
186
184
  user_data +=
187
- ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data);
185
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data);
188
186
  }
189
187
  return first_error;
190
188
  }
@@ -193,18 +191,13 @@ void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack* call_stack,
193
191
  grpc_polling_entity* pollent) {
194
192
  size_t count = call_stack->count;
195
193
  grpc_call_element* call_elems;
196
- char* user_data;
197
194
  size_t i;
198
195
 
199
196
  call_elems = CALL_ELEMS_FROM_STACK(call_stack);
200
- user_data = (reinterpret_cast<char*>(call_elems)) +
201
- ROUND_UP_TO_ALIGNMENT_SIZE(count * sizeof(grpc_call_element));
202
197
 
203
198
  /* init per-filter data */
204
199
  for (i = 0; i < count; i++) {
205
200
  call_elems[i].filter->set_pollset_or_pollset_set(&call_elems[i], pollent);
206
- user_data +=
207
- ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data);
208
201
  }
209
202
  }
210
203
 
@@ -248,11 +241,11 @@ grpc_channel_stack* grpc_channel_stack_from_top_element(
248
241
  grpc_channel_element* elem) {
249
242
  return reinterpret_cast<grpc_channel_stack*>(
250
243
  reinterpret_cast<char*>(elem) -
251
- ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_channel_stack)));
244
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_channel_stack)));
252
245
  }
253
246
 
254
247
  grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
255
248
  return reinterpret_cast<grpc_call_stack*>(
256
249
  reinterpret_cast<char*>(elem) -
257
- ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)));
250
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)));
258
251
  }
@@ -82,7 +82,7 @@ typedef struct {
82
82
  typedef struct {
83
83
  grpc_call_stats stats;
84
84
  grpc_status_code final_status;
85
- const char** error_string;
85
+ const char* error_string;
86
86
  } grpc_call_final_info;
87
87
 
88
88
  /* Channel filters specify:
@@ -138,7 +138,7 @@ typedef struct {
138
138
  is_first, is_last designate this elements position in the stack, and are
139
139
  useful for asserting correct configuration by upper layer code.
140
140
  The filter does not need to do any chaining.
141
- Implementations may assume that elem->call_data is all zeros. */
141
+ Implementations may assume that elem->channel_data is all zeros. */
142
142
  grpc_error* (*init_channel_elem)(grpc_channel_element* elem,
143
143
  grpc_channel_element_args* args);
144
144
  /* Destroy per channel data.
@@ -25,9 +25,6 @@
25
25
  #include <grpc/support/alloc.h>
26
26
  #include <grpc/support/string_util.h>
27
27
 
28
- grpc_core::TraceFlag grpc_trace_channel_stack_builder(false,
29
- "channel_stack_builder");
30
-
31
28
  typedef struct filter_node {
32
29
  struct filter_node* next;
33
30
  struct filter_node* prev;
@@ -155,6 +155,4 @@ grpc_error* grpc_channel_stack_builder_finish(
155
155
  /// Destroy the builder without creating a channel stack
156
156
  void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder* builder);
157
157
 
158
- extern grpc_core::TraceFlag grpc_trace_channel_stack_builder;
159
-
160
158
  #endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H */
@@ -28,7 +28,6 @@
28
28
  #include <stdlib.h>
29
29
  #include <string.h>
30
30
 
31
- #include "src/core/lib/channel/channel_trace_registry.h"
32
31
  #include "src/core/lib/channel/status_util.h"
33
32
  #include "src/core/lib/gpr/string.h"
34
33
  #include "src/core/lib/gpr/useful.h"
@@ -40,16 +39,17 @@
40
39
  #include "src/core/lib/transport/error_utils.h"
41
40
 
42
41
  namespace grpc_core {
42
+ namespace channelz {
43
43
 
44
44
  ChannelTrace::TraceEvent::TraceEvent(
45
45
  Severity severity, grpc_slice data,
46
- RefCountedPtr<ChannelTrace> referenced_tracer, ReferencedType type)
46
+ RefCountedPtr<ChannelNode> referenced_channel, ReferencedType type)
47
47
  : severity_(severity),
48
48
  data_(data),
49
49
  timestamp_(grpc_millis_to_timespec(grpc_core::ExecCtx::Get()->Now(),
50
50
  GPR_CLOCK_REALTIME)),
51
51
  next_(nullptr),
52
- referenced_tracer_(std::move(referenced_tracer)),
52
+ referenced_channel_(std::move(referenced_channel)),
53
53
  referenced_type_(type) {}
54
54
 
55
55
  ChannelTrace::TraceEvent::TraceEvent(Severity severity, grpc_slice data)
@@ -62,15 +62,13 @@ ChannelTrace::TraceEvent::TraceEvent(Severity severity, grpc_slice data)
62
62
  ChannelTrace::TraceEvent::~TraceEvent() { grpc_slice_unref_internal(data_); }
63
63
 
64
64
  ChannelTrace::ChannelTrace(size_t max_events)
65
- : channel_uuid_(-1),
66
- num_events_logged_(0),
65
+ : num_events_logged_(0),
67
66
  list_size_(0),
68
67
  max_list_size_(max_events),
69
68
  head_trace_(nullptr),
70
69
  tail_trace_(nullptr) {
71
70
  if (max_list_size_ == 0) return; // tracing is disabled if max_events == 0
72
71
  gpr_mu_init(&tracer_mu_);
73
- channel_uuid_ = grpc_channel_trace_registry_register_channel_trace(this);
74
72
  time_created_ = grpc_millis_to_timespec(grpc_core::ExecCtx::Get()->Now(),
75
73
  GPR_CLOCK_REALTIME);
76
74
  }
@@ -83,12 +81,9 @@ ChannelTrace::~ChannelTrace() {
83
81
  it = it->next();
84
82
  Delete<TraceEvent>(to_free);
85
83
  }
86
- grpc_channel_trace_registry_unregister_channel_trace(channel_uuid_);
87
84
  gpr_mu_destroy(&tracer_mu_);
88
85
  }
89
86
 
90
- intptr_t ChannelTrace::GetUuid() const { return channel_uuid_; }
91
-
92
87
  void ChannelTrace::AddTraceEventHelper(TraceEvent* new_trace_event) {
93
88
  ++num_events_logged_;
94
89
  // first event case
@@ -117,56 +112,25 @@ void ChannelTrace::AddTraceEvent(Severity severity, grpc_slice data) {
117
112
 
118
113
  void ChannelTrace::AddTraceEventReferencingChannel(
119
114
  Severity severity, grpc_slice data,
120
- RefCountedPtr<ChannelTrace> referenced_tracer) {
115
+ RefCountedPtr<ChannelNode> referenced_channel) {
121
116
  if (max_list_size_ == 0) return; // tracing is disabled if max_events == 0
122
117
  // create and fill up the new event
123
- AddTraceEventHelper(
124
- New<TraceEvent>(severity, data, std::move(referenced_tracer), Channel));
118
+ AddTraceEventHelper(New<TraceEvent>(
119
+ severity, data, std::move(referenced_channel), ReferencedType::Channel));
125
120
  }
126
121
 
127
122
  void ChannelTrace::AddTraceEventReferencingSubchannel(
128
123
  Severity severity, grpc_slice data,
129
- RefCountedPtr<ChannelTrace> referenced_tracer) {
124
+ RefCountedPtr<ChannelNode> referenced_subchannel) {
130
125
  if (max_list_size_ == 0) return; // tracing is disabled if max_events == 0
131
126
  // create and fill up the new event
132
- AddTraceEventHelper(New<TraceEvent>(
133
- severity, data, std::move(referenced_tracer), Subchannel));
127
+ AddTraceEventHelper(New<TraceEvent>(severity, data,
128
+ std::move(referenced_subchannel),
129
+ ReferencedType::Subchannel));
134
130
  }
135
131
 
136
132
  namespace {
137
133
 
138
- // returns an allocated string that represents tm according to RFC-3339, and,
139
- // more specifically, follows:
140
- // https://developers.google.com/protocol-buffers/docs/proto3#json
141
- //
142
- // "Uses RFC 3339, where generated output will always be Z-normalized and uses
143
- // 0, 3, 6 or 9 fractional digits."
144
- char* fmt_time(gpr_timespec tm) {
145
- char time_buffer[35];
146
- char ns_buffer[11]; // '.' + 9 digits of precision
147
- struct tm* tm_info = localtime((const time_t*)&tm.tv_sec);
148
- strftime(time_buffer, sizeof(time_buffer), "%Y-%m-%dT%H:%M:%S", tm_info);
149
- snprintf(ns_buffer, 11, ".%09d", tm.tv_nsec);
150
- // This loop trims off trailing zeros by inserting a null character that the
151
- // right point. We iterate in chunks of three because we want 0, 3, 6, or 9
152
- // fractional digits.
153
- for (int i = 7; i >= 1; i -= 3) {
154
- if (ns_buffer[i] == '0' && ns_buffer[i + 1] == '0' &&
155
- ns_buffer[i + 2] == '0') {
156
- ns_buffer[i] = '\0';
157
- // Edge case in which all fractional digits were 0.
158
- if (i == 1) {
159
- ns_buffer[0] = '\0';
160
- }
161
- } else {
162
- break;
163
- }
164
- }
165
- char* full_time_str;
166
- gpr_asprintf(&full_time_str, "%s%sZ", time_buffer, ns_buffer);
167
- return full_time_str;
168
- }
169
-
170
134
  const char* severity_string(ChannelTrace::Severity severity) {
171
135
  switch (severity) {
172
136
  case ChannelTrace::Severity::Info:
@@ -190,25 +154,27 @@ void ChannelTrace::TraceEvent::RenderTraceEvent(grpc_json* json) const {
190
154
  json_iterator = grpc_json_create_child(json_iterator, json, "severity",
191
155
  severity_string(severity_),
192
156
  GRPC_JSON_STRING, false);
193
- json_iterator =
194
- grpc_json_create_child(json_iterator, json, "timestamp",
195
- fmt_time(timestamp_), GRPC_JSON_STRING, true);
196
- if (referenced_tracer_ != nullptr) {
157
+ json_iterator = grpc_json_create_child(json_iterator, json, "timestamp",
158
+ gpr_format_timespec(timestamp_),
159
+ GRPC_JSON_STRING, true);
160
+ if (referenced_channel_ != nullptr) {
197
161
  char* uuid_str;
198
- gpr_asprintf(&uuid_str, "%" PRIdPTR, referenced_tracer_->channel_uuid_);
162
+ gpr_asprintf(&uuid_str, "%" PRIdPTR, referenced_channel_->channel_uuid());
199
163
  grpc_json* child_ref = grpc_json_create_child(
200
164
  json_iterator, json,
201
- (referenced_type_ == Channel) ? "channelRef" : "subchannelRef", nullptr,
202
- GRPC_JSON_OBJECT, false);
165
+ (referenced_type_ == ReferencedType::Channel) ? "channelRef"
166
+ : "subchannelRef",
167
+ nullptr, GRPC_JSON_OBJECT, false);
203
168
  json_iterator = grpc_json_create_child(
204
169
  nullptr, child_ref,
205
- (referenced_type_ == Channel) ? "channelId" : "subchannelId", uuid_str,
206
- GRPC_JSON_STRING, true);
170
+ (referenced_type_ == ReferencedType::Channel) ? "channelId"
171
+ : "subchannelId",
172
+ uuid_str, GRPC_JSON_STRING, true);
207
173
  json_iterator = child_ref;
208
174
  }
209
175
  }
210
176
 
211
- char* ChannelTrace::RenderTrace() const {
177
+ grpc_json* ChannelTrace::RenderJson() const {
212
178
  if (!max_list_size_)
213
179
  return nullptr; // tracing is disabled if max_events == 0
214
180
  grpc_json* json = grpc_json_create(GRPC_JSON_OBJECT);
@@ -218,9 +184,9 @@ char* ChannelTrace::RenderTrace() const {
218
184
  json_iterator =
219
185
  grpc_json_create_child(json_iterator, json, "numEventsLogged",
220
186
  num_events_logged_str, GRPC_JSON_STRING, true);
221
- json_iterator =
222
- grpc_json_create_child(json_iterator, json, "creationTime",
223
- fmt_time(time_created_), GRPC_JSON_STRING, true);
187
+ json_iterator = grpc_json_create_child(
188
+ json_iterator, json, "creationTimestamp",
189
+ gpr_format_timespec(time_created_), GRPC_JSON_STRING, true);
224
190
  grpc_json* events = grpc_json_create_child(json_iterator, json, "events",
225
191
  nullptr, GRPC_JSON_ARRAY, false);
226
192
  json_iterator = nullptr;
@@ -231,9 +197,8 @@ char* ChannelTrace::RenderTrace() const {
231
197
  it->RenderTraceEvent(json_iterator);
232
198
  it = it->next();
233
199
  }
234
- char* json_str = grpc_json_dump_to_string(json, 0);
235
- grpc_json_destroy(json);
236
- return json_str;
200
+ return json;
237
201
  }
238
202
 
203
+ } // namespace channelz
239
204
  } // namespace grpc_core
@@ -28,18 +28,18 @@
28
28
  #include "src/core/lib/json/json.h"
29
29
 
30
30
  namespace grpc_core {
31
+ namespace channelz {
32
+
33
+ class ChannelNode;
31
34
 
32
35
  // Object used to hold live data for a channel. This data is exposed via the
33
36
  // channelz service:
34
37
  // https://github.com/grpc/proposal/blob/master/A14-channelz.md
35
- class ChannelTrace : public RefCounted<ChannelTrace> {
38
+ class ChannelTrace {
36
39
  public:
37
40
  ChannelTrace(size_t max_events);
38
41
  ~ChannelTrace();
39
42
 
40
- // returns the tracer's uuid
41
- intptr_t GetUuid() const;
42
-
43
43
  enum Severity {
44
44
  Unset = 0, // never to be used
45
45
  Info, // we start at 1 to avoid using proto default values
@@ -59,34 +59,30 @@ class ChannelTrace : public RefCounted<ChannelTrace> {
59
59
  // created a new subchannel, then it would record that with a TraceEvent
60
60
  // referencing the new subchannel.
61
61
  //
62
- // TODO(ncteisen): Once channelz is implemented, the events should reference
63
- // the overall channelz object, not just the ChannelTrace object.
64
62
  // TODO(ncteisen): as this call is used more and more throughout the gRPC
65
63
  // stack, determine if it makes more sense to accept a char* instead of a
66
64
  // slice.
67
65
  void AddTraceEventReferencingChannel(
68
66
  Severity severity, grpc_slice data,
69
- RefCountedPtr<ChannelTrace> referenced_tracer);
67
+ RefCountedPtr<ChannelNode> referenced_channel);
70
68
  void AddTraceEventReferencingSubchannel(
71
69
  Severity severity, grpc_slice data,
72
- RefCountedPtr<ChannelTrace> referenced_tracer);
70
+ RefCountedPtr<ChannelNode> referenced_subchannel);
73
71
 
74
- // Returns the tracing data rendered as a grpc json string.
75
- // The string is owned by the caller and must be freed.
76
- char* RenderTrace() const;
72
+ // Creates and returns the raw grpc_json object, so a parent channelz
73
+ // object may incorporate the json before rendering.
74
+ grpc_json* RenderJson() const;
77
75
 
78
76
  private:
79
77
  // Types of objects that can be references by trace events.
80
- enum ReferencedType { Channel, Subchannel };
78
+ enum class ReferencedType { Channel, Subchannel };
81
79
  // Private class to encapsulate all the data and bookkeeping needed for a
82
80
  // a trace event.
83
81
  class TraceEvent {
84
82
  public:
85
83
  // Constructor for a TraceEvent that references a different channel.
86
- // TODO(ncteisen): once channelz is implemented, this should reference the
87
- // overall channelz object, not just the ChannelTrace object
88
84
  TraceEvent(Severity severity, grpc_slice data,
89
- RefCountedPtr<ChannelTrace> referenced_tracer,
85
+ RefCountedPtr<ChannelNode> referenced_channel,
90
86
  ReferencedType type);
91
87
 
92
88
  // Constructor for a TraceEvent that does not reverence a different
@@ -109,7 +105,7 @@ class ChannelTrace : public RefCounted<ChannelTrace> {
109
105
  gpr_timespec timestamp_;
110
106
  TraceEvent* next_;
111
107
  // the tracer object for the (sub)channel that this trace event refers to.
112
- RefCountedPtr<ChannelTrace> referenced_tracer_;
108
+ RefCountedPtr<ChannelNode> referenced_channel_;
113
109
  // the type that the referenced tracer points to. Unused if this trace
114
110
  // does not point to any channel or subchannel
115
111
  ReferencedType referenced_type_;
@@ -119,7 +115,6 @@ class ChannelTrace : public RefCounted<ChannelTrace> {
119
115
  void AddTraceEventHelper(TraceEvent* new_trace_event);
120
116
 
121
117
  gpr_mu tracer_mu_;
122
- intptr_t channel_uuid_;
123
118
  uint64_t num_events_logged_;
124
119
  size_t list_size_;
125
120
  size_t max_list_size_;
@@ -128,6 +123,7 @@ class ChannelTrace : public RefCounted<ChannelTrace> {
128
123
  gpr_timespec time_created_;
129
124
  };
130
125
 
126
+ } // namespace channelz
131
127
  } // namespace grpc_core
132
128
 
133
129
  #endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H */