grpc 1.50.0.pre1 → 1.52.0.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +206 -49
- data/include/grpc/byte_buffer.h +76 -1
- data/include/grpc/byte_buffer_reader.h +19 -1
- data/include/grpc/compression.h +2 -2
- data/include/grpc/event_engine/event_engine.h +27 -6
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +67 -0
- data/include/grpc/event_engine/memory_allocator.h +1 -1
- data/include/grpc/event_engine/slice.h +24 -4
- data/include/grpc/event_engine/slice_buffer.h +31 -2
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -13
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
- data/include/grpc/impl/codegen/atm_windows.h +3 -106
- data/include/grpc/impl/codegen/byte_buffer.h +4 -78
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
- data/include/grpc/impl/codegen/compression_types.h +3 -82
- data/include/grpc/impl/codegen/connectivity_state.h +3 -20
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +2 -34
- data/include/grpc/impl/codegen/grpc_types.h +3 -791
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -758
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +3 -106
- data/include/grpc/impl/codegen/status.h +4 -131
- data/include/grpc/impl/codegen/sync.h +3 -42
- data/include/grpc/impl/codegen/sync_abseil.h +3 -12
- data/include/grpc/impl/codegen/sync_custom.h +3 -14
- data/include/grpc/impl/codegen/sync_generic.h +3 -25
- data/include/grpc/impl/codegen/sync_posix.h +3 -28
- data/include/grpc/impl/codegen/sync_windows.h +3 -16
- data/include/grpc/impl/compression_types.h +109 -0
- data/include/grpc/impl/connectivity_state.h +47 -0
- data/include/grpc/impl/grpc_types.h +824 -0
- data/include/grpc/impl/propagation_bits.h +54 -0
- data/include/grpc/impl/slice_type.h +112 -0
- data/include/grpc/load_reporting.h +1 -1
- data/include/grpc/module.modulemap +5 -1
- data/include/grpc/slice.h +1 -1
- data/include/grpc/status.h +131 -1
- data/include/grpc/support/atm.h +70 -1
- data/include/grpc/support/atm_gcc_atomic.h +59 -1
- data/include/grpc/support/atm_gcc_sync.h +58 -1
- data/include/grpc/support/atm_windows.h +105 -1
- data/include/grpc/support/log.h +87 -1
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/port_platform.h +767 -1
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +35 -2
- data/include/grpc/support/sync_abseil.h +11 -1
- data/include/grpc/support/sync_custom.h +13 -1
- data/include/grpc/support/sync_generic.h +24 -1
- data/include/grpc/support/sync_posix.h +27 -1
- data/include/grpc/support/sync_windows.h +15 -1
- data/include/grpc/support/time.h +25 -2
- data/src/core/ext/filters/census/grpc_context.cc +17 -18
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +24 -24
- data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
- data/src/core/ext/filters/client_channel/client_channel.cc +157 -168
- data/src/core/ext/filters/client_channel/client_channel.h +10 -10
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/config_selector.h +16 -20
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +39 -40
- data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +59 -130
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +131 -154
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +8 -9
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +212 -223
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +11 -22
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -101
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -106
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +12 -12
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -56
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -64
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +22 -28
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +62 -94
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +70 -146
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -82
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +117 -118
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +51 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -27
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -34
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +122 -119
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +81 -103
- data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -235
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
- data/src/core/ext/filters/client_channel/retry_throttle.h +26 -25
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +3 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +158 -178
- data/src/core/ext/filters/client_channel/subchannel.h +17 -40
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +34 -17
- data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +36 -37
- data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
- data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
- data/src/core/ext/filters/http/client_authority_filter.h +18 -18
- data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +44 -43
- data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
- data/src/core/ext/filters/message_size/message_size_filter.cc +92 -123
- data/src/core/ext/filters/message_size/message_size_filter.h +23 -16
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +7 -9
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
- data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +69 -63
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +81 -97
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +273 -283
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
- data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +112 -44
- data/src/core/ext/transport/chttp2/transport/flow_control.h +60 -34
- data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -32
- data/src/core/ext/transport/chttp2/transport/frame_data.h +23 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +36 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +25 -24
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +28 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -21
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +133 -181
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +40 -59
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +93 -143
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +26 -26
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
- data/src/core/ext/transport/chttp2/transport/internal.h +193 -170
- data/src/core/ext/transport/chttp2/transport/parsing.cc +147 -80
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +35 -32
- data/src/core/ext/transport/chttp2/transport/writing.cc +60 -56
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +122 -140
- data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +20 -95
- data/src/core/ext/xds/xds_api.h +5 -8
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_args.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
- data/src/core/ext/xds/xds_client.cc +134 -94
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_client_grpc.cc +31 -24
- data/src/core/ext/xds/xds_client_grpc.h +1 -1
- data/src/core/ext/xds/xds_client_stats.cc +17 -17
- data/src/core/ext/xds/xds_client_stats.h +18 -18
- data/src/core/ext/xds/xds_cluster.cc +359 -203
- data/src/core/ext/xds/xds_cluster.h +52 -35
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +54 -71
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +45 -21
- data/src/core/ext/xds/xds_common_types.cc +209 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +221 -130
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +82 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +57 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +14 -22
- data/src/core/ext/xds/xds_http_filters.cc +65 -73
- data/src/core/ext/xds/xds_http_filters.h +68 -20
- data/src/core/ext/xds/xds_http_rbac_filter.cc +153 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +13 -16
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +120 -171
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +447 -419
- data/src/core/ext/xds/xds_listener.h +45 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +10 -13
- data/src/core/ext/xds/xds_route_config.cc +514 -528
- data/src/core/ext/xds/xds_route_config.h +39 -28
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
- data/src/core/ext/xds/xds_transport_grpc.cc +6 -7
- data/src/core/ext/xds/xds_transport_grpc.h +1 -1
- data/src/core/lib/address_utils/parse_address.cc +30 -29
- data/src/core/lib/address_utils/parse_address.h +32 -32
- data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
- data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
- data/src/core/lib/avl/avl.h +4 -4
- data/src/core/lib/backoff/backoff.cc +17 -17
- data/src/core/lib/backoff/backoff.h +18 -18
- data/src/core/lib/channel/call_tracer.h +10 -1
- data/src/core/lib/channel/channel_args.cc +19 -20
- data/src/core/lib/channel/channel_args.h +59 -43
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
- data/src/core/lib/channel/channel_stack.cc +62 -58
- data/src/core/lib/channel/channel_stack.h +144 -131
- data/src/core/lib/channel/channel_stack_builder.cc +21 -24
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +43 -25
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +21 -22
- data/src/core/lib/channel/channel_trace.h +19 -19
- data/src/core/lib/channel/channelz.cc +18 -19
- data/src/core/lib/channel/channelz.h +26 -26
- data/src/core/lib/channel/channelz_registry.cc +17 -17
- data/src/core/lib/channel/channelz_registry.h +18 -18
- data/src/core/lib/channel/connected_channel.cc +732 -63
- data/src/core/lib/channel/connected_channel.h +18 -22
- data/src/core/lib/channel/context.h +18 -18
- data/src/core/lib/channel/promise_based_filter.cc +1137 -150
- data/src/core/lib/channel/promise_based_filter.h +374 -88
- data/src/core/lib/channel/status_util.cc +35 -17
- data/src/core/lib/channel/status_util.h +26 -19
- data/src/core/lib/compression/compression.cc +19 -19
- data/src/core/lib/compression/compression_internal.cc +41 -48
- data/src/core/lib/compression/compression_internal.h +22 -22
- data/src/core/lib/compression/message_compress.cc +26 -26
- data/src/core/lib/compression/message_compress.h +25 -25
- data/src/core/lib/config/core_configuration.h +1 -1
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +39 -136
- data/src/core/lib/debug/stats.h +46 -52
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/debug/trace.cc +18 -18
- data/src/core/lib/debug/trace.h +19 -19
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/executor/executor.h +1 -1
- data/src/core/lib/event_engine/forkable.h +1 -1
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +11 -14
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +456 -28
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
- data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
- data/src/core/lib/event_engine/posix_engine/timer.h +87 -86
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +41 -69
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.h → posix_engine/wakeup_fd_pipe.h} +16 -15
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/socket_notifier.h +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
- data/src/core/lib/event_engine/thread_pool.cc +125 -43
- data/src/core/lib/event_engine/thread_pool.h +49 -26
- data/src/core/lib/event_engine/time_util.h +1 -1
- data/src/core/lib/event_engine/windows/iocp.cc +13 -12
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +9 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +26 -20
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -13
- data/src/core/lib/experiments/experiments.h +8 -6
- data/src/core/lib/gpr/alloc.cc +19 -17
- data/src/core/lib/gpr/alloc.h +18 -18
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/cpu_iphone.cc +24 -24
- data/src/core/lib/gpr/cpu_linux.cc +28 -23
- data/src/core/lib/gpr/cpu_posix.cc +23 -22
- data/src/core/lib/gpr/cpu_windows.cc +20 -18
- data/src/core/lib/gpr/log.cc +27 -19
- data/src/core/lib/gpr/log_android.cc +22 -20
- data/src/core/lib/gpr/log_linux.cc +24 -24
- data/src/core/lib/gpr/log_posix.cc +20 -19
- data/src/core/lib/gpr/log_windows.cc +25 -24
- data/src/core/lib/gpr/spinlock.h +18 -18
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +58 -58
- data/src/core/lib/gpr/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +22 -22
- data/src/core/lib/gpr/string_windows.cc +24 -24
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +22 -20
- data/src/core/lib/gpr/sync_posix.cc +23 -21
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +23 -21
- data/src/core/lib/gpr/time_posix.cc +35 -30
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +18 -19
- data/src/core/lib/gpr/time_windows.cc +25 -22
- data/src/core/lib/gpr/tmpfile.h +22 -22
- data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
- data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
- data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
- data/src/core/lib/gpr/useful.h +40 -27
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +18 -18
- data/src/core/lib/gprpp/bitset.h +24 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
- data/src/core/lib/gprpp/crash.h +34 -0
- data/src/core/lib/gprpp/debug_location.h +18 -18
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
- data/src/core/lib/gprpp/env.h +20 -20
- data/src/core/lib/gprpp/env_linux.cc +21 -21
- data/src/core/lib/gprpp/env_posix.cc +18 -18
- data/src/core/lib/gprpp/env_windows.cc +18 -18
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +18 -18
- data/src/core/lib/gprpp/fork.cc +21 -22
- data/src/core/lib/gprpp/fork.h +22 -22
- data/src/core/lib/gprpp/global_config.h +18 -18
- data/src/core/lib/gprpp/global_config_custom.h +18 -18
- data/src/core/lib/gprpp/global_config_env.cc +17 -17
- data/src/core/lib/gprpp/global_config_env.h +23 -23
- data/src/core/lib/gprpp/global_config_generic.h +18 -18
- data/src/core/lib/gprpp/host_port.cc +26 -26
- data/src/core/lib/gprpp/host_port.h +29 -28
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/manual_constructor.h +18 -17
- data/src/core/lib/gprpp/memory.h +18 -18
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +18 -18
- data/src/core/lib/gprpp/no_destruct.h +1 -0
- data/src/core/lib/gprpp/orphanable.h +18 -18
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/ref_counted.h +18 -18
- data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +4 -2
- data/src/core/lib/gprpp/status_helper.cc +4 -3
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +20 -20
- data/src/core/lib/gprpp/table.h +1 -0
- data/src/core/lib/gprpp/thd.h +19 -19
- data/src/core/lib/gprpp/thd_posix.cc +30 -31
- data/src/core/lib/gprpp/thd_windows.cc +26 -26
- data/src/core/lib/gprpp/time.cc +16 -11
- data/src/core/lib/gprpp/time.h +13 -3
- data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
- data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +18 -18
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/handshaker/proxy_mapper.h +18 -18
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
- data/src/core/lib/http/format_request.cc +18 -18
- data/src/core/lib/http/format_request.h +18 -18
- data/src/core/lib/http/httpcli.cc +57 -61
- data/src/core/lib/http/httpcli.h +26 -26
- data/src/core/lib/http/httpcli_security_connector.cc +22 -25
- data/src/core/lib/http/parser.cc +76 -87
- data/src/core/lib/http/parser.h +32 -32
- data/src/core/lib/iomgr/block_annotate.h +21 -21
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +120 -98
- data/src/core/lib/iomgr/call_combiner.cc +29 -27
- data/src/core/lib/iomgr/call_combiner.h +21 -22
- data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
- data/src/core/lib/iomgr/cfstream_handle.h +22 -22
- data/src/core/lib/iomgr/closure.h +90 -45
- data/src/core/lib/iomgr/combiner.cc +20 -19
- data/src/core/lib/iomgr/combiner.h +18 -18
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
- data/src/core/lib/iomgr/endpoint.cc +17 -17
- data/src/core/lib/iomgr/endpoint.h +46 -46
- data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
- data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
- data/src/core/lib/iomgr/endpoint_pair.h +18 -18
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +20 -19
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
- data/src/core/lib/iomgr/error.cc +49 -61
- data/src/core/lib/iomgr/error.h +42 -173
- data/src/core/lib/iomgr/error_cfstream.cc +18 -18
- data/src/core/lib/iomgr/error_cfstream.h +19 -19
- data/src/core/lib/iomgr/ev_apple.cc +21 -21
- data/src/core/lib/iomgr/ev_apple.h +17 -17
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +208 -195
- data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
- data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
- data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
- data/src/core/lib/iomgr/ev_posix.cc +36 -28
- data/src/core/lib/iomgr/ev_posix.h +85 -81
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/exec_ctx.cc +34 -34
- data/src/core/lib/iomgr/exec_ctx.h +141 -141
- data/src/core/lib/iomgr/executor.cc +21 -21
- data/src/core/lib/iomgr/executor.h +24 -24
- data/src/core/lib/iomgr/fork_posix.cc +24 -22
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +18 -18
- data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
- data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/internal_errqueue.h +80 -80
- data/src/core/lib/iomgr/iocp_windows.cc +22 -21
- data/src/core/lib/iomgr/iocp_windows.h +18 -18
- data/src/core/lib/iomgr/iomgr.cc +19 -18
- data/src/core/lib/iomgr/iomgr.h +32 -32
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +25 -25
- data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +20 -19
- data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
- data/src/core/lib/iomgr/load_file.cc +24 -27
- data/src/core/lib/iomgr/load_file.h +20 -20
- data/src/core/lib/iomgr/lockfree_event.cc +114 -114
- data/src/core/lib/iomgr/lockfree_event.h +19 -19
- data/src/core/lib/iomgr/nameser.h +84 -84
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +27 -27
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +51 -51
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +22 -22
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
- data/src/core/lib/iomgr/pollset_windows.cc +30 -29
- data/src/core/lib/iomgr/pollset_windows.h +22 -22
- data/src/core/lib/iomgr/port.h +29 -29
- data/src/core/lib/iomgr/python_util.h +20 -20
- data/src/core/lib/iomgr/resolve_address.cc +26 -20
- data/src/core/lib/iomgr/resolve_address.h +21 -22
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/resolved_address.h +1 -1
- data/src/core/lib/iomgr/sockaddr.h +21 -21
- data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
- data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +37 -37
- data/src/core/lib/iomgr/socket_utils.h +24 -24
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +68 -66
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +78 -78
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +37 -36
- data/src/core/lib/iomgr/socket_windows.h +56 -56
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/{slice/slice_buffer_api.cc → iomgr/systemd_utils.h} +12 -14
- data/src/core/lib/iomgr/tcp_client.cc +17 -17
- data/src/core/lib/iomgr/tcp_client.h +26 -26
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -28
- data/src/core/lib/iomgr/tcp_client_posix.cc +70 -73
- data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
- data/src/core/lib/iomgr/tcp_client_windows.cc +36 -39
- data/src/core/lib/iomgr/tcp_posix.cc +223 -237
- data/src/core/lib/iomgr/tcp_posix.h +27 -27
- data/src/core/lib/iomgr/tcp_server.cc +30 -22
- data/src/core/lib/iomgr/tcp_server.h +68 -62
- data/src/core/lib/iomgr/tcp_server_posix.cc +124 -94
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +97 -104
- data/src/core/lib/iomgr/tcp_windows.cc +109 -93
- data/src/core/lib/iomgr/tcp_windows.h +29 -29
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +65 -65
- data/src/core/lib/iomgr/timer_generic.cc +115 -122
- data/src/core/lib/iomgr/timer_generic.h +19 -19
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +19 -19
- data/src/core/lib/iomgr/timer_manager.cc +30 -29
- data/src/core/lib/iomgr/timer_manager.h +25 -25
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +17 -2
- data/src/core/lib/json/json_object_loader.h +37 -1
- data/src/core/lib/json/json_reader.cc +28 -28
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/json/json_writer.cc +56 -56
- data/src/core/lib/load_balancing/lb_policy.cc +18 -18
- data/src/core/lib/load_balancing/lb_policy.h +7 -4
- data/src/core/lib/load_balancing/subchannel_interface.h +1 -8
- data/src/core/lib/matchers/matchers.cc +6 -5
- data/src/core/lib/matchers/matchers.h +1 -1
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +58 -27
- data/src/core/lib/promise/arena_promise.h +82 -52
- data/src/core/lib/promise/context.h +14 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +59 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +20 -12
- data/src/core/lib/promise/for_each.h +155 -0
- data/src/core/lib/promise/latch.h +13 -19
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map.h +1 -0
- data/src/core/lib/promise/map_pipe.h +88 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +19 -0
- data/src/core/lib/promise/seq.h +4 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +342 -0
- data/src/core/lib/promise/try_seq.h +11 -13
- data/src/core/lib/resolver/resolver.cc +17 -17
- data/src/core/lib/resolver/server_address.cc +18 -17
- data/src/core/lib/resolver/server_address.h +19 -21
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/arena.cc +36 -17
- data/src/core/lib/resource_quota/arena.h +107 -18
- data/src/core/lib/resource_quota/memory_quota.cc +140 -43
- data/src/core/lib/resource_quota/memory_quota.h +85 -23
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/context/security_context.cc +22 -23
- data/src/core/lib/security/context/security_context.h +40 -30
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
- data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
- data/src/core/lib/security/credentials/call_creds_util.h +1 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
- data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
- data/src/core/lib/security/credentials/credentials.cc +19 -18
- data/src/core/lib/security/credentials/credentials.h +34 -33
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
- data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +75 -73
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +18 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
- data/src/core/lib/security/credentials/jwt/json_token.cc +24 -25
- data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -18
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +75 -75
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
- data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
- data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +52 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +22 -22
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +30 -43
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
- data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +32 -38
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +32 -41
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -8
- data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +19 -22
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
- data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
- data/src/core/lib/security/security_connector/security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/security_connector.h +32 -33
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +34 -39
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
- data/src/core/lib/security/security_connector/ssl_utils.cc +37 -39
- data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -48
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
- data/src/core/lib/security/transport/auth_filters.h +18 -18
- data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -56
- data/src/core/lib/security/transport/secure_endpoint.h +22 -22
- data/src/core/lib/security/transport/security_handshaker.cc +70 -70
- data/src/core/lib/security/transport/security_handshaker.h +19 -19
- data/src/core/lib/security/transport/server_auth_filter.cc +43 -44
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +18 -18
- data/src/core/lib/security/util/json_util.cc +21 -22
- data/src/core/lib/security/util/json_util.h +18 -18
- data/src/core/lib/service_config/service_config.h +2 -2
- data/src/core/lib/service_config/service_config_call_data.h +7 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +29 -29
- data/src/core/lib/slice/percent_encoding.cc +17 -17
- data/src/core/lib/slice/percent_encoding.h +24 -24
- data/src/core/lib/slice/slice.cc +44 -38
- data/src/core/lib/slice/slice.h +57 -11
- data/src/core/lib/slice/slice_buffer.cc +63 -59
- data/src/core/lib/slice/slice_buffer.h +27 -2
- data/src/core/lib/slice/slice_internal.h +31 -39
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/slice/slice_string_helpers.cc +17 -17
- data/src/core/lib/slice/slice_string_helpers.h +19 -19
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +22 -22
- data/src/core/lib/surface/byte_buffer.cc +22 -23
- data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
- data/src/core/lib/surface/call.cc +1521 -335
- data/src/core/lib/surface/call.h +86 -39
- data/src/core/lib/surface/call_details.cc +20 -21
- data/src/core/lib/surface/call_log_batch.cc +18 -18
- data/src/core/lib/surface/call_test_only.h +30 -30
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
- data/src/core/lib/surface/channel.cc +62 -67
- data/src/core/lib/surface/channel.h +40 -32
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +18 -18
- data/src/core/lib/surface/channel_ping.cc +19 -19
- data/src/core/lib/surface/channel_stack_type.cc +21 -17
- data/src/core/lib/surface/channel_stack_type.h +20 -18
- data/src/core/lib/surface/completion_queue.cc +173 -191
- data/src/core/lib/surface/completion_queue.h +32 -32
- data/src/core/lib/surface/completion_queue_factory.cc +28 -28
- data/src/core/lib/surface/completion_queue_factory.h +20 -20
- data/src/core/lib/surface/event_string.cc +17 -17
- data/src/core/lib/surface/event_string.h +20 -20
- data/src/core/lib/surface/init.cc +29 -58
- data/src/core/lib/surface/init.h +18 -18
- data/src/core/lib/surface/init_internally.cc +1 -0
- data/src/core/lib/surface/init_internally.h +9 -0
- data/src/core/lib/surface/lame_client.cc +28 -26
- data/src/core/lib/surface/lame_client.h +19 -19
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +61 -83
- data/src/core/lib/surface/server.h +5 -7
- data/src/core/lib/surface/validate_metadata.cc +28 -29
- data/src/core/lib/surface/validate_metadata.h +18 -18
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +17 -17
- data/src/core/lib/transport/bdp_estimator.h +18 -19
- data/src/core/lib/transport/connectivity_state.cc +19 -19
- data/src/core/lib/transport/connectivity_state.h +19 -19
- data/src/core/lib/transport/error_utils.cc +51 -45
- data/src/core/lib/transport/error_utils.h +21 -21
- data/src/core/lib/transport/handshaker.cc +49 -46
- data/src/core/lib/transport/handshaker.h +43 -38
- data/src/core/lib/transport/handshaker_factory.h +44 -18
- data/src/core/lib/transport/handshaker_registry.cc +25 -19
- data/src/core/lib/transport/handshaker_registry.h +21 -22
- data/src/core/lib/transport/http2_errors.h +20 -20
- data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
- data/src/core/lib/transport/http_connect_handshaker.h +18 -18
- data/src/core/lib/transport/metadata_batch.cc +4 -1
- data/src/core/lib/transport/metadata_batch.h +46 -20
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/parsed_metadata.h +1 -0
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +24 -24
- data/src/core/lib/transport/status_conversion.cc +22 -22
- data/src/core/lib/transport/status_conversion.h +20 -20
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +22 -22
- data/src/core/lib/transport/timeout_encoding.h +18 -18
- data/src/core/lib/transport/transport.cc +88 -41
- data/src/core/lib/transport/transport.h +193 -195
- data/src/core/lib/transport/transport_impl.h +42 -42
- data/src/core/lib/transport/transport_op_string.cc +26 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +25 -27
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -14
- data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
- data/src/core/tsi/alts/crypt/gsec.cc +26 -26
- data/src/core/tsi/alts/crypt/gsec.h +334 -334
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
- data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -77
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +37 -36
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
- data/src/core/tsi/fake_transport_security.cc +80 -79
- data/src/core/tsi/fake_transport_security.h +30 -30
- data/src/core/tsi/local_transport_security.cc +34 -33
- data/src/core/tsi/local_transport_security.h +31 -31
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +8 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
- data/src/core/tsi/ssl_transport_security.cc +139 -323
- data/src/core/tsi/ssl_transport_security.h +201 -200
- data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
- data/src/core/tsi/ssl_transport_security_utils.h +147 -0
- data/src/core/tsi/ssl_types.h +25 -25
- data/src/core/tsi/transport_security.cc +26 -26
- data/src/core/tsi/transport_security.h +45 -45
- data/src/core/tsi/transport_security_grpc.cc +20 -20
- data/src/core/tsi/transport_security_grpc.h +39 -39
- data/src/core/tsi/transport_security_interface.h +330 -330
- data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
- data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +0 -1
- data/src/ruby/ext/grpc/ext-export.gcc +1 -2
- data/src/ruby/ext/grpc/extconf.rb +47 -2
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/re2/re2/bitstate.cc +3 -3
- data/third_party/re2/re2/dfa.cc +13 -13
- data/third_party/re2/re2/nfa.cc +4 -4
- data/third_party/re2/re2/onepass.cc +2 -2
- data/third_party/re2/re2/prefilter_tree.cc +27 -59
- data/third_party/re2/re2/prefilter_tree.h +3 -2
- data/third_party/re2/re2/prog.cc +11 -2
- data/third_party/re2/re2/prog.h +17 -5
- data/third_party/re2/re2/re2.cc +6 -11
- data/third_party/re2/re2/re2.h +1 -1
- data/third_party/re2/re2/regexp.cc +1 -2
- data/third_party/re2/re2/stringpiece.h +10 -7
- data/third_party/re2/re2/unicode_casefold.cc +25 -11
- data/third_party/re2/re2/unicode_groups.cc +319 -151
- data/third_party/re2/re2/walker-inl.h +3 -2
- data/third_party/re2/util/mutex.h +4 -4
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +146 -40
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
|
|
22
22
|
#include <stddef.h>
|
|
23
23
|
|
|
24
|
-
#include <deque>
|
|
25
24
|
#include <functional>
|
|
26
25
|
#include <map>
|
|
26
|
+
#include <memory>
|
|
27
27
|
#include <string>
|
|
28
28
|
|
|
29
29
|
#include "absl/base/thread_annotations.h"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
#include "absl/types/optional.h"
|
|
32
32
|
|
|
33
33
|
#include <grpc/event_engine/event_engine.h>
|
|
34
|
-
#include <grpc/impl/
|
|
34
|
+
#include <grpc/impl/connectivity_state.h>
|
|
35
35
|
|
|
36
36
|
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
|
37
37
|
#include "src/core/ext/filters/client_channel/connector.h"
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
#include "src/core/lib/gprpp/sync.h"
|
|
50
50
|
#include "src/core/lib/gprpp/time.h"
|
|
51
51
|
#include "src/core/lib/gprpp/unique_type_name.h"
|
|
52
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
|
52
53
|
#include "src/core/lib/iomgr/call_combiner.h"
|
|
53
54
|
#include "src/core/lib/iomgr/closure.h"
|
|
54
55
|
#include "src/core/lib/iomgr/error.h"
|
|
@@ -166,46 +167,18 @@ class SubchannelCall {
|
|
|
166
167
|
// (SubchannelWrapper) that "converts" between the two.
|
|
167
168
|
class Subchannel : public DualRefCounted<Subchannel> {
|
|
168
169
|
public:
|
|
170
|
+
// TODO(roth): Once we remove pollset_set, consider whether this can
|
|
171
|
+
// just use the normal AsyncConnectivityStateWatcherInterface API.
|
|
169
172
|
class ConnectivityStateWatcherInterface
|
|
170
173
|
: public RefCounted<ConnectivityStateWatcherInterface> {
|
|
171
174
|
public:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
~ConnectivityStateWatcherInterface() override = default;
|
|
178
|
-
|
|
179
|
-
// Will be invoked whenever the subchannel's connectivity state
|
|
180
|
-
// changes. There will be only one invocation of this method on a
|
|
181
|
-
// given watcher instance at any given time.
|
|
182
|
-
// Implementations should call PopConnectivityStateChange to get the next
|
|
183
|
-
// connectivity state change.
|
|
184
|
-
virtual void OnConnectivityStateChange() = 0;
|
|
175
|
+
// Invoked whenever the subchannel's connectivity state changes.
|
|
176
|
+
// There will be only one invocation of this method on a given watcher
|
|
177
|
+
// instance at any given time.
|
|
178
|
+
virtual void OnConnectivityStateChange(grpc_connectivity_state state,
|
|
179
|
+
const absl::Status& status) = 0;
|
|
185
180
|
|
|
186
181
|
virtual grpc_pollset_set* interested_parties() = 0;
|
|
187
|
-
|
|
188
|
-
// Enqueues connectivity state change notifications.
|
|
189
|
-
// When the state changes to READY, connected_subchannel will
|
|
190
|
-
// contain a ref to the connected subchannel. When it changes from
|
|
191
|
-
// READY to some other state, the implementation must release its
|
|
192
|
-
// ref to the connected subchannel.
|
|
193
|
-
// TODO(yashkt): This is currently needed to send the state updates in the
|
|
194
|
-
// right order when asynchronously notifying. This will no longer be
|
|
195
|
-
// necessary when we have access to EventManager.
|
|
196
|
-
void PushConnectivityStateChange(ConnectivityStateChange state_change);
|
|
197
|
-
|
|
198
|
-
// Dequeues connectivity state change notifications.
|
|
199
|
-
ConnectivityStateChange PopConnectivityStateChange();
|
|
200
|
-
|
|
201
|
-
private:
|
|
202
|
-
Mutex mu_; // protects the queue
|
|
203
|
-
// Keeps track of the updates that the watcher instance must be notified of.
|
|
204
|
-
// TODO(yashkt): This is currently needed to send the state updates in the
|
|
205
|
-
// right order when asynchronously notifying. This will no longer be
|
|
206
|
-
// necessary when we have access to EventManager.
|
|
207
|
-
std::deque<ConnectivityStateChange> connectivity_state_queue_
|
|
208
|
-
ABSL_GUARDED_BY(&mu_);
|
|
209
182
|
};
|
|
210
183
|
|
|
211
184
|
// A base class for producers of subchannel-specific data.
|
|
@@ -239,8 +212,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
|
239
212
|
|
|
240
213
|
grpc_pollset_set* pollset_set() const { return pollset_set_; }
|
|
241
214
|
|
|
242
|
-
const ChannelArgs& channel_args() const { return args_; }
|
|
243
|
-
|
|
244
215
|
channelz::SubchannelNode* channelz_node();
|
|
245
216
|
|
|
246
217
|
// Starts watching the subchannel's connectivity state.
|
|
@@ -299,6 +270,9 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
|
299
270
|
// the subchannel's state.
|
|
300
271
|
class ConnectivityStateWatcherList {
|
|
301
272
|
public:
|
|
273
|
+
explicit ConnectivityStateWatcherList(Subchannel* subchannel)
|
|
274
|
+
: subchannel_(subchannel) {}
|
|
275
|
+
|
|
302
276
|
~ConnectivityStateWatcherList() { Clear(); }
|
|
303
277
|
|
|
304
278
|
void AddWatcherLocked(
|
|
@@ -314,6 +288,7 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
|
314
288
|
bool empty() const { return watchers_.empty(); }
|
|
315
289
|
|
|
316
290
|
private:
|
|
291
|
+
Subchannel* subchannel_;
|
|
317
292
|
// TODO(roth): Once we can use C++-14 heterogeneous lookups, this can
|
|
318
293
|
// be a set instead of a map.
|
|
319
294
|
std::map<ConnectivityStateWatcherInterface*,
|
|
@@ -356,7 +331,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
|
356
331
|
};
|
|
357
332
|
|
|
358
333
|
class ConnectedSubchannelStateWatcher;
|
|
359
|
-
class AsyncWatcherNotifierLocked;
|
|
360
334
|
|
|
361
335
|
// Sets the subchannel's connectivity state to \a state.
|
|
362
336
|
void SetConnectivityStateLocked(grpc_connectivity_state state,
|
|
@@ -412,6 +386,8 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
|
412
386
|
ConnectivityStateWatcherList watcher_list_ ABSL_GUARDED_BY(mu_);
|
|
413
387
|
// The map of watchers with health check service names.
|
|
414
388
|
HealthWatcherMap health_watcher_map_ ABSL_GUARDED_BY(mu_);
|
|
389
|
+
// Used for sending connectivity state notifications.
|
|
390
|
+
WorkSerializer work_serializer_;
|
|
415
391
|
|
|
416
392
|
// Active connection, or null.
|
|
417
393
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_ ABSL_GUARDED_BY(mu_);
|
|
@@ -428,6 +404,7 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
|
428
404
|
// Data producer map.
|
|
429
405
|
std::map<UniqueTypeName, DataProducerInterface*> data_producer_map_
|
|
430
406
|
ABSL_GUARDED_BY(mu_);
|
|
407
|
+
std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine_;
|
|
431
408
|
};
|
|
432
409
|
|
|
433
410
|
} // namespace grpc_core
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
//
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2018 gRPC authors.
|
|
4
|
+
//
|
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
// you may not use this file except in compliance with the License.
|
|
7
|
+
// You may obtain a copy of the License at
|
|
8
|
+
//
|
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
//
|
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
// See the License for the specific language governing permissions and
|
|
15
|
+
// limitations under the License.
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
18
|
|
|
19
19
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_POOL_INTERFACE_H
|
|
20
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_POOL_INTERFACE_H
|
|
@@ -97,4 +97,4 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
|
|
|
97
97
|
|
|
98
98
|
} // namespace grpc_core
|
|
99
99
|
|
|
100
|
-
#endif
|
|
100
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_POOL_INTERFACE_H
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
#include "src/core/lib/channel/channel_args.h"
|
|
31
31
|
#include "src/core/lib/gpr/time_precise.h"
|
|
32
32
|
#include "src/core/lib/gprpp/debug_location.h"
|
|
33
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
|
33
34
|
#include "src/core/lib/gprpp/sync.h"
|
|
34
35
|
#include "src/core/lib/gprpp/time.h"
|
|
35
36
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
|
@@ -146,7 +147,7 @@ void SubchannelStreamClient::OnRetryTimer(void* arg, grpc_error_handle error) {
|
|
|
146
147
|
{
|
|
147
148
|
MutexLock lock(&self->mu_);
|
|
148
149
|
self->retry_timer_callback_pending_ = false;
|
|
149
|
-
if (self->event_handler_ != nullptr &&
|
|
150
|
+
if (self->event_handler_ != nullptr && error.ok() &&
|
|
150
151
|
self->call_state_ == nullptr) {
|
|
151
152
|
if (GPR_UNLIKELY(self->tracer_ != nullptr)) {
|
|
152
153
|
gpr_log(GPR_INFO,
|
|
@@ -196,7 +197,7 @@ SubchannelStreamClient::CallState::~CallState() {
|
|
|
196
197
|
}
|
|
197
198
|
|
|
198
199
|
void SubchannelStreamClient::CallState::Orphan() {
|
|
199
|
-
call_combiner_.Cancel(
|
|
200
|
+
call_combiner_.Cancel(absl::CancelledError());
|
|
200
201
|
Cancel();
|
|
201
202
|
}
|
|
202
203
|
|
|
@@ -211,21 +212,19 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
|
|
|
211
212
|
context_,
|
|
212
213
|
&call_combiner_,
|
|
213
214
|
};
|
|
214
|
-
grpc_error_handle error
|
|
215
|
+
grpc_error_handle error;
|
|
215
216
|
call_ = SubchannelCall::Create(std::move(args), &error).release();
|
|
216
217
|
// Register after-destruction callback.
|
|
217
218
|
GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction,
|
|
218
219
|
this, grpc_schedule_on_exec_ctx);
|
|
219
220
|
call_->SetAfterCallStackDestroy(&after_call_stack_destruction_);
|
|
220
221
|
// Check if creation failed.
|
|
221
|
-
if (!
|
|
222
|
-
subchannel_stream_client_->event_handler_ == nullptr) {
|
|
222
|
+
if (!error.ok() || subchannel_stream_client_->event_handler_ == nullptr) {
|
|
223
223
|
gpr_log(GPR_ERROR,
|
|
224
224
|
"SubchannelStreamClient %p CallState %p: error creating "
|
|
225
225
|
"stream on subchannel (%s); will retry",
|
|
226
226
|
subchannel_stream_client_.get(), this,
|
|
227
|
-
|
|
228
|
-
GRPC_ERROR_UNREF(error);
|
|
227
|
+
StatusToString(error).c_str());
|
|
229
228
|
CallEndedLocked(/*retry=*/true);
|
|
230
229
|
return;
|
|
231
230
|
}
|
|
@@ -240,7 +239,7 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
|
|
|
240
239
|
send_initial_metadata_.Set(
|
|
241
240
|
HttpPathMetadata(),
|
|
242
241
|
subchannel_stream_client_->event_handler_->GetPathLocked());
|
|
243
|
-
GPR_ASSERT(
|
|
242
|
+
GPR_ASSERT(error.ok());
|
|
244
243
|
payload_.send_initial_metadata.send_initial_metadata =
|
|
245
244
|
&send_initial_metadata_;
|
|
246
245
|
payload_.send_initial_metadata.peer_string = nullptr;
|
|
@@ -306,7 +305,7 @@ void SubchannelStreamClient::CallState::StartBatch(
|
|
|
306
305
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
|
|
307
306
|
batch, grpc_schedule_on_exec_ctx);
|
|
308
307
|
GRPC_CALL_COMBINER_START(&call_combiner_, &batch->handler_private.closure,
|
|
309
|
-
|
|
308
|
+
absl::OkStatus(), "start_subchannel_batch");
|
|
310
309
|
}
|
|
311
310
|
|
|
312
311
|
void SubchannelStreamClient::CallState::AfterCallStackDestruction(
|
|
@@ -328,7 +327,7 @@ void SubchannelStreamClient::CallState::StartCancel(
|
|
|
328
327
|
auto* batch = grpc_make_transport_stream_op(
|
|
329
328
|
GRPC_CLOSURE_CREATE(OnCancelComplete, self, grpc_schedule_on_exec_ctx));
|
|
330
329
|
batch->cancel_stream = true;
|
|
331
|
-
batch->payload->cancel_stream.cancel_error =
|
|
330
|
+
batch->payload->cancel_stream.cancel_error = absl::CancelledError();
|
|
332
331
|
self->call_->StartTransportStreamOpBatch(batch);
|
|
333
332
|
}
|
|
334
333
|
|
|
@@ -341,7 +340,7 @@ void SubchannelStreamClient::CallState::Cancel() {
|
|
|
341
340
|
GRPC_CALL_COMBINER_START(
|
|
342
341
|
&call_combiner_,
|
|
343
342
|
GRPC_CLOSURE_CREATE(StartCancel, this, grpc_schedule_on_exec_ctx),
|
|
344
|
-
|
|
343
|
+
absl::OkStatus(), "health_cancel");
|
|
345
344
|
}
|
|
346
345
|
}
|
|
347
346
|
|
|
@@ -418,7 +417,7 @@ void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
|
|
|
418
417
|
grpc_status_code status =
|
|
419
418
|
self->recv_trailing_metadata_.get(GrpcStatusMetadata())
|
|
420
419
|
.value_or(GRPC_STATUS_UNKNOWN);
|
|
421
|
-
if (!
|
|
420
|
+
if (!error.ok()) {
|
|
422
421
|
grpc_error_get_status(error, Timestamp::InfFuture(), &status,
|
|
423
422
|
nullptr /* slice */, nullptr /* http_error */,
|
|
424
423
|
nullptr /* error_string */);
|
|
@@ -18,12 +18,15 @@
|
|
|
18
18
|
|
|
19
19
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
|
20
20
|
|
|
21
|
+
#include <functional>
|
|
22
|
+
#include <memory>
|
|
21
23
|
#include <new>
|
|
24
|
+
#include <utility>
|
|
22
25
|
|
|
23
26
|
#include "absl/status/status.h"
|
|
24
27
|
#include "absl/types/optional.h"
|
|
25
28
|
|
|
26
|
-
#include <grpc/
|
|
29
|
+
#include <grpc/grpc.h>
|
|
27
30
|
#include <grpc/status.h>
|
|
28
31
|
#include <grpc/support/log.h>
|
|
29
32
|
|
|
@@ -31,9 +34,13 @@
|
|
|
31
34
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
|
32
35
|
#include "src/core/lib/config/core_configuration.h"
|
|
33
36
|
#include "src/core/lib/gprpp/debug_location.h"
|
|
37
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
|
34
38
|
#include "src/core/lib/iomgr/error.h"
|
|
35
39
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
|
36
40
|
#include "src/core/lib/iomgr/timer.h"
|
|
41
|
+
#include "src/core/lib/promise/arena_promise.h"
|
|
42
|
+
#include "src/core/lib/promise/context.h"
|
|
43
|
+
#include "src/core/lib/surface/call.h"
|
|
37
44
|
#include "src/core/lib/surface/channel_init.h"
|
|
38
45
|
#include "src/core/lib/surface/channel_stack_type.h"
|
|
39
46
|
#include "src/core/lib/transport/metadata_batch.h"
|
|
@@ -73,7 +80,7 @@ class TimerState {
|
|
|
73
80
|
grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op(
|
|
74
81
|
GRPC_CLOSURE_INIT(&self->closure_, YieldCallCombiner, self, nullptr));
|
|
75
82
|
batch->cancel_stream = true;
|
|
76
|
-
batch->payload->cancel_stream.cancel_error =
|
|
83
|
+
batch->payload->cancel_stream.cancel_error = error;
|
|
77
84
|
self->elem_->filter->start_transport_stream_op_batch(self->elem_, batch);
|
|
78
85
|
}
|
|
79
86
|
|
|
@@ -82,11 +89,11 @@ class TimerState {
|
|
|
82
89
|
TimerState* self = static_cast<TimerState*>(arg);
|
|
83
90
|
grpc_deadline_state* deadline_state =
|
|
84
91
|
static_cast<grpc_deadline_state*>(self->elem_->call_data);
|
|
85
|
-
if (error !=
|
|
86
|
-
error = grpc_error_set_int(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
deadline_state->call_combiner->Cancel(
|
|
92
|
+
if (error != absl::CancelledError()) {
|
|
93
|
+
error = grpc_error_set_int(GRPC_ERROR_CREATE("Deadline Exceeded"),
|
|
94
|
+
StatusIntProperty::kRpcStatus,
|
|
95
|
+
GRPC_STATUS_DEADLINE_EXCEEDED);
|
|
96
|
+
deadline_state->call_combiner->Cancel(error);
|
|
90
97
|
GRPC_CLOSURE_INIT(&self->closure_, SendCancelOpInCallCombiner, self,
|
|
91
98
|
nullptr);
|
|
92
99
|
GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &self->closure_,
|
|
@@ -145,7 +152,7 @@ static void recv_trailing_metadata_ready(void* arg, grpc_error_handle error) {
|
|
|
145
152
|
// Invoke the original callback.
|
|
146
153
|
grpc_core::Closure::Run(DEBUG_LOCATION,
|
|
147
154
|
deadline_state->original_recv_trailing_metadata_ready,
|
|
148
|
-
|
|
155
|
+
error);
|
|
149
156
|
}
|
|
150
157
|
|
|
151
158
|
// Inject our own recv_trailing_metadata_ready callback into op.
|
|
@@ -183,8 +190,7 @@ static void start_timer_after_init(void* arg, grpc_error_handle error) {
|
|
|
183
190
|
// need to bounce ourselves into it.
|
|
184
191
|
state->in_call_combiner = true;
|
|
185
192
|
GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &state->closure,
|
|
186
|
-
|
|
187
|
-
"scheduling deadline timer");
|
|
193
|
+
error, "scheduling deadline timer");
|
|
188
194
|
return;
|
|
189
195
|
}
|
|
190
196
|
delete state;
|
|
@@ -212,7 +218,7 @@ grpc_deadline_state::grpc_deadline_state(grpc_call_element* elem,
|
|
|
212
218
|
new start_timer_after_init_state(elem, deadline);
|
|
213
219
|
GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state,
|
|
214
220
|
grpc_schedule_on_exec_ctx);
|
|
215
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &state->closure,
|
|
221
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &state->closure, absl::OkStatus());
|
|
216
222
|
}
|
|
217
223
|
}
|
|
218
224
|
|
|
@@ -249,7 +255,7 @@ void grpc_deadline_state_client_start_transport_stream_op_batch(
|
|
|
249
255
|
static grpc_error_handle deadline_init_channel_elem(
|
|
250
256
|
grpc_channel_element* /*elem*/, grpc_channel_element_args* args) {
|
|
251
257
|
GPR_ASSERT(!args->is_last);
|
|
252
|
-
return
|
|
258
|
+
return absl::OkStatus();
|
|
253
259
|
}
|
|
254
260
|
|
|
255
261
|
// Destructor for channel_data. Used for both client and server filters.
|
|
@@ -276,7 +282,7 @@ typedef struct server_call_data {
|
|
|
276
282
|
static grpc_error_handle deadline_init_call_elem(
|
|
277
283
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
|
278
284
|
new (elem->call_data) grpc_deadline_state(elem, *args, args->deadline);
|
|
279
|
-
return
|
|
285
|
+
return absl::OkStatus();
|
|
280
286
|
}
|
|
281
287
|
|
|
282
288
|
// Destructor for call_data. Used for both client and server filters.
|
|
@@ -305,8 +311,7 @@ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
|
|
|
305
311
|
.value_or(grpc_core::Timestamp::InfFuture()));
|
|
306
312
|
// Invoke the next callback.
|
|
307
313
|
grpc_core::Closure::Run(DEBUG_LOCATION,
|
|
308
|
-
calld->next_recv_initial_metadata_ready,
|
|
309
|
-
GRPC_ERROR_REF(error));
|
|
314
|
+
calld->next_recv_initial_metadata_ready, error);
|
|
310
315
|
}
|
|
311
316
|
|
|
312
317
|
// Method for starting a call op for server filter.
|
|
@@ -345,7 +350,10 @@ static void deadline_server_start_transport_stream_op_batch(
|
|
|
345
350
|
|
|
346
351
|
const grpc_channel_filter grpc_client_deadline_filter = {
|
|
347
352
|
deadline_client_start_transport_stream_op_batch,
|
|
348
|
-
|
|
353
|
+
[](grpc_channel_element*, grpc_core::CallArgs call_args,
|
|
354
|
+
grpc_core::NextPromiseFactory next_promise_factory) {
|
|
355
|
+
return next_promise_factory(std::move(call_args));
|
|
356
|
+
},
|
|
349
357
|
grpc_channel_next_op,
|
|
350
358
|
sizeof(base_call_data),
|
|
351
359
|
deadline_init_call_elem,
|
|
@@ -361,7 +369,16 @@ const grpc_channel_filter grpc_client_deadline_filter = {
|
|
|
361
369
|
|
|
362
370
|
const grpc_channel_filter grpc_server_deadline_filter = {
|
|
363
371
|
deadline_server_start_transport_stream_op_batch,
|
|
364
|
-
|
|
372
|
+
[](grpc_channel_element*, grpc_core::CallArgs call_args,
|
|
373
|
+
grpc_core::NextPromiseFactory next_promise_factory) {
|
|
374
|
+
auto deadline = call_args.client_initial_metadata->get(
|
|
375
|
+
grpc_core::GrpcTimeoutMetadata());
|
|
376
|
+
if (deadline.has_value()) {
|
|
377
|
+
grpc_core::GetContext<grpc_core::CallContext>()->UpdateDeadline(
|
|
378
|
+
*deadline);
|
|
379
|
+
}
|
|
380
|
+
return next_promise_factory(std::move(call_args));
|
|
381
|
+
},
|
|
365
382
|
grpc_channel_next_op,
|
|
366
383
|
sizeof(server_call_data),
|
|
367
384
|
deadline_init_call_elem,
|
|
@@ -90,4 +90,4 @@ bool grpc_deadline_checking_enabled(const grpc_core::ChannelArgs& args);
|
|
|
90
90
|
extern const grpc_channel_filter grpc_client_deadline_filter;
|
|
91
91
|
extern const grpc_channel_filter grpc_server_deadline_filter;
|
|
92
92
|
|
|
93
|
-
#endif
|
|
93
|
+
#endif // GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
#include <atomic>
|
|
25
25
|
#include <functional>
|
|
26
26
|
#include <string>
|
|
27
|
+
#include <type_traits>
|
|
27
28
|
#include <utility>
|
|
28
29
|
|
|
29
30
|
#include "absl/status/status.h"
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
#include <grpc/status.h>
|
|
36
37
|
#include <grpc/support/log.h>
|
|
37
38
|
|
|
38
|
-
#include "src/core/ext/filters/fault_injection/
|
|
39
|
+
#include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h"
|
|
39
40
|
#include "src/core/lib/channel/channel_stack.h"
|
|
40
41
|
#include "src/core/lib/channel/context.h"
|
|
41
42
|
#include "src/core/lib/channel/status_util.h"
|
|
@@ -206,7 +207,7 @@ FaultInjectionFilter::MakeInjectionDecision(
|
|
|
206
207
|
initial_metadata->GetStringValue(fi_policy->delay_header, &buffer);
|
|
207
208
|
if (value.has_value()) {
|
|
208
209
|
delay = Duration::Milliseconds(
|
|
209
|
-
std::max(AsInt<int64_t>(*value).value_or(0), int64_t
|
|
210
|
+
std::max(AsInt<int64_t>(*value).value_or(0), int64_t{0}));
|
|
210
211
|
}
|
|
211
212
|
}
|
|
212
213
|
if (!fi_policy->delay_percentage_header.empty()) {
|
|
@@ -34,10 +34,6 @@
|
|
|
34
34
|
#include "src/core/lib/promise/arena_promise.h"
|
|
35
35
|
#include "src/core/lib/transport/transport.h"
|
|
36
36
|
|
|
37
|
-
// Channel arg key for enabling parsing fault injection via method config.
|
|
38
|
-
#define GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG \
|
|
39
|
-
"grpc.parse_fault_injection_method_config"
|
|
40
|
-
|
|
41
37
|
namespace grpc_core {
|
|
42
38
|
|
|
43
39
|
// This channel filter is intended to be used by the dynamic filters, instead
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2021 gRPC authors.
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
//
|
|
16
|
+
|
|
17
|
+
#include <grpc/support/port_platform.h>
|
|
18
|
+
|
|
19
|
+
#include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h"
|
|
20
|
+
|
|
21
|
+
#include <vector>
|
|
22
|
+
|
|
23
|
+
#include "absl/types/optional.h"
|
|
24
|
+
|
|
25
|
+
#include "src/core/lib/channel/channel_args.h"
|
|
26
|
+
#include "src/core/lib/channel/status_util.h"
|
|
27
|
+
|
|
28
|
+
namespace grpc_core {
|
|
29
|
+
|
|
30
|
+
const JsonLoaderInterface*
|
|
31
|
+
FaultInjectionMethodParsedConfig::FaultInjectionPolicy::JsonLoader(
|
|
32
|
+
const JsonArgs&) {
|
|
33
|
+
static const auto* loader =
|
|
34
|
+
JsonObjectLoader<FaultInjectionPolicy>()
|
|
35
|
+
.OptionalField("abortMessage", &FaultInjectionPolicy::abort_message)
|
|
36
|
+
.OptionalField("abortCodeHeader",
|
|
37
|
+
&FaultInjectionPolicy::abort_code_header)
|
|
38
|
+
.OptionalField("abortPercentageHeader",
|
|
39
|
+
&FaultInjectionPolicy::abort_percentage_header)
|
|
40
|
+
.OptionalField("abortPercentageNumerator",
|
|
41
|
+
&FaultInjectionPolicy::abort_percentage_numerator)
|
|
42
|
+
.OptionalField("abortPercentageDenominator",
|
|
43
|
+
&FaultInjectionPolicy::abort_percentage_denominator)
|
|
44
|
+
.OptionalField("delay", &FaultInjectionPolicy::delay)
|
|
45
|
+
.OptionalField("delayHeader", &FaultInjectionPolicy::delay_header)
|
|
46
|
+
.OptionalField("delayPercentageHeader",
|
|
47
|
+
&FaultInjectionPolicy::delay_percentage_header)
|
|
48
|
+
.OptionalField("delayPercentageNumerator",
|
|
49
|
+
&FaultInjectionPolicy::delay_percentage_numerator)
|
|
50
|
+
.OptionalField("delayPercentageDenominator",
|
|
51
|
+
&FaultInjectionPolicy::delay_percentage_denominator)
|
|
52
|
+
.OptionalField("maxFaults", &FaultInjectionPolicy::max_faults)
|
|
53
|
+
.Finish();
|
|
54
|
+
return loader;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
void FaultInjectionMethodParsedConfig::FaultInjectionPolicy::JsonPostLoad(
|
|
58
|
+
const Json& json, const JsonArgs& args, ValidationErrors* errors) {
|
|
59
|
+
// Parse abort_code.
|
|
60
|
+
auto abort_code_string = LoadJsonObjectField<std::string>(
|
|
61
|
+
json.object_value(), args, "abortCode", errors, /*required=*/false);
|
|
62
|
+
if (abort_code_string.has_value() &&
|
|
63
|
+
!grpc_status_code_from_string(abort_code_string->c_str(), &abort_code)) {
|
|
64
|
+
ValidationErrors::ScopedField field(errors, ".abortCode");
|
|
65
|
+
errors->AddError("failed to parse status code");
|
|
66
|
+
}
|
|
67
|
+
// Validate abort_percentage_denominator.
|
|
68
|
+
if (abort_percentage_denominator != 100 &&
|
|
69
|
+
abort_percentage_denominator != 10000 &&
|
|
70
|
+
abort_percentage_denominator != 1000000) {
|
|
71
|
+
ValidationErrors::ScopedField field(errors, ".abortPercentageDenominator");
|
|
72
|
+
errors->AddError("must be one of 100, 10000, or 1000000");
|
|
73
|
+
}
|
|
74
|
+
// Validate delay_percentage_denominator.
|
|
75
|
+
if (delay_percentage_denominator != 100 &&
|
|
76
|
+
delay_percentage_denominator != 10000 &&
|
|
77
|
+
delay_percentage_denominator != 1000000) {
|
|
78
|
+
ValidationErrors::ScopedField field(errors, ".delayPercentageDenominator");
|
|
79
|
+
errors->AddError("must be one of 100, 10000, or 1000000");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const JsonLoaderInterface* FaultInjectionMethodParsedConfig::JsonLoader(
|
|
84
|
+
const JsonArgs&) {
|
|
85
|
+
static const auto* loader =
|
|
86
|
+
JsonObjectLoader<FaultInjectionMethodParsedConfig>()
|
|
87
|
+
.OptionalField(
|
|
88
|
+
"faultInjectionPolicy",
|
|
89
|
+
&FaultInjectionMethodParsedConfig::fault_injection_policies_)
|
|
90
|
+
.Finish();
|
|
91
|
+
return loader;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
|
95
|
+
FaultInjectionServiceConfigParser::ParsePerMethodParams(
|
|
96
|
+
const ChannelArgs& args, const Json& json, ValidationErrors* errors) {
|
|
97
|
+
// Only parse fault injection policy if the following channel arg is present.
|
|
98
|
+
if (!args.GetBool(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG)
|
|
99
|
+
.value_or(false)) {
|
|
100
|
+
return nullptr;
|
|
101
|
+
}
|
|
102
|
+
// Parse fault injection policy from given Json
|
|
103
|
+
return LoadFromJson<std::unique_ptr<FaultInjectionMethodParsedConfig>>(
|
|
104
|
+
json, JsonArgs(), errors);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
void FaultInjectionServiceConfigParser::Register(
|
|
108
|
+
CoreConfiguration::Builder* builder) {
|
|
109
|
+
builder->service_config_parser()->RegisterParser(
|
|
110
|
+
std::make_unique<FaultInjectionServiceConfigParser>());
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
size_t FaultInjectionServiceConfigParser::ParserIndex() {
|
|
114
|
+
return CoreConfiguration::Get().service_config_parser().GetParserIndex(
|
|
115
|
+
parser_name());
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
} // namespace grpc_core
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
// limitations under the License.
|
|
15
15
|
//
|
|
16
16
|
|
|
17
|
-
#ifndef
|
|
18
|
-
#define
|
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
|
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
|
|
19
19
|
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
|
21
21
|
|
|
@@ -25,10 +25,8 @@
|
|
|
25
25
|
#include <limits>
|
|
26
26
|
#include <memory>
|
|
27
27
|
#include <string>
|
|
28
|
-
#include <utility>
|
|
29
28
|
#include <vector>
|
|
30
29
|
|
|
31
|
-
#include "absl/status/statusor.h"
|
|
32
30
|
#include "absl/strings/string_view.h"
|
|
33
31
|
|
|
34
32
|
#include <grpc/status.h>
|
|
@@ -36,9 +34,16 @@
|
|
|
36
34
|
#include "src/core/lib/channel/channel_args.h"
|
|
37
35
|
#include "src/core/lib/config/core_configuration.h"
|
|
38
36
|
#include "src/core/lib/gprpp/time.h"
|
|
37
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
|
39
38
|
#include "src/core/lib/json/json.h"
|
|
39
|
+
#include "src/core/lib/json/json_args.h"
|
|
40
|
+
#include "src/core/lib/json/json_object_loader.h"
|
|
40
41
|
#include "src/core/lib/service_config/service_config_parser.h"
|
|
41
42
|
|
|
43
|
+
// Channel arg key for enabling parsing fault injection via method config.
|
|
44
|
+
#define GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG \
|
|
45
|
+
"grpc.internal.parse_fault_injection_method_config"
|
|
46
|
+
|
|
42
47
|
namespace grpc_core {
|
|
43
48
|
|
|
44
49
|
class FaultInjectionMethodParsedConfig
|
|
@@ -46,7 +51,7 @@ class FaultInjectionMethodParsedConfig
|
|
|
46
51
|
public:
|
|
47
52
|
struct FaultInjectionPolicy {
|
|
48
53
|
grpc_status_code abort_code = GRPC_STATUS_OK;
|
|
49
|
-
std::string abort_message;
|
|
54
|
+
std::string abort_message = "Fault injected";
|
|
50
55
|
std::string abort_code_header;
|
|
51
56
|
std::string abort_percentage_header;
|
|
52
57
|
uint32_t abort_percentage_numerator = 0;
|
|
@@ -60,11 +65,11 @@ class FaultInjectionMethodParsedConfig
|
|
|
60
65
|
|
|
61
66
|
// By default, the max allowed active faults are unlimited.
|
|
62
67
|
uint32_t max_faults = std::numeric_limits<uint32_t>::max();
|
|
63
|
-
};
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
|
70
|
+
void JsonPostLoad(const Json& json, const JsonArgs&,
|
|
71
|
+
ValidationErrors* errors);
|
|
72
|
+
};
|
|
68
73
|
|
|
69
74
|
// Returns the fault injection policy at certain index.
|
|
70
75
|
// There might be multiple fault injection policies functioning at the same
|
|
@@ -79,6 +84,8 @@ class FaultInjectionMethodParsedConfig
|
|
|
79
84
|
return &fault_injection_policies_[index];
|
|
80
85
|
}
|
|
81
86
|
|
|
87
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
|
88
|
+
|
|
82
89
|
private:
|
|
83
90
|
std::vector<FaultInjectionPolicy> fault_injection_policies_;
|
|
84
91
|
};
|
|
@@ -88,8 +95,9 @@ class FaultInjectionServiceConfigParser final
|
|
|
88
95
|
public:
|
|
89
96
|
absl::string_view name() const override { return parser_name(); }
|
|
90
97
|
// Parses the per-method service config for fault injection filter.
|
|
91
|
-
|
|
92
|
-
|
|
98
|
+
std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
|
|
99
|
+
const ChannelArgs& args, const Json& json,
|
|
100
|
+
ValidationErrors* errors) override;
|
|
93
101
|
// Returns the parser index for FaultInjectionServiceConfigParser.
|
|
94
102
|
static size_t ParserIndex();
|
|
95
103
|
// Registers FaultInjectionServiceConfigParser to ServiceConfigParser.
|
|
@@ -101,4 +109,4 @@ class FaultInjectionServiceConfigParser final
|
|
|
101
109
|
|
|
102
110
|
} // namespace grpc_core
|
|
103
111
|
|
|
104
|
-
#endif //
|
|
112
|
+
#endif // GRPC_CORE_EXT_FILTERS_FAULT_INJECTION_FAULT_INJECTION_SERVICE_CONFIG_PARSER_H
|