grpc 1.50.0.pre1 → 1.52.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- 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
@@ -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 2015-2016 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
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
20
|
#include "src/core/lib/surface/completion_queue.h"
|
@@ -34,18 +34,19 @@
|
|
34
34
|
#include "absl/strings/str_join.h"
|
35
35
|
|
36
36
|
#include <grpc/grpc.h>
|
37
|
-
#include <grpc/impl/codegen/gpr_types.h>
|
38
37
|
#include <grpc/support/alloc.h>
|
39
38
|
#include <grpc/support/atm.h>
|
40
39
|
#include <grpc/support/log.h>
|
41
40
|
#include <grpc/support/sync.h>
|
41
|
+
#include <grpc/support/time.h>
|
42
42
|
|
43
43
|
#include "src/core/lib/debug/stats.h"
|
44
|
+
#include "src/core/lib/debug/stats_data.h"
|
44
45
|
#include "src/core/lib/gpr/spinlock.h"
|
45
|
-
#include "src/core/lib/gpr/tls.h"
|
46
46
|
#include "src/core/lib/gprpp/atomic_utils.h"
|
47
47
|
#include "src/core/lib/gprpp/debug_location.h"
|
48
48
|
#include "src/core/lib/gprpp/ref_counted.h"
|
49
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
49
50
|
#include "src/core/lib/gprpp/time.h"
|
50
51
|
#include "src/core/lib/iomgr/closure.h"
|
51
52
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -66,8 +67,8 @@ namespace {
|
|
66
67
|
// with a cq cache will go into that cache, and
|
67
68
|
// will only be returned on the thread that initialized the cache.
|
68
69
|
// NOTE: Only one event will ever be cached.
|
69
|
-
|
70
|
-
|
70
|
+
thread_local grpc_cq_completion* g_cached_event;
|
71
|
+
thread_local grpc_completion_queue* g_cached_cq;
|
71
72
|
|
72
73
|
struct plucker {
|
73
74
|
grpc_pollset_worker** worker;
|
@@ -115,10 +116,10 @@ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
|
|
115
116
|
grpc_pollset_worker** worker,
|
116
117
|
grpc_core::Timestamp deadline) {
|
117
118
|
non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
|
118
|
-
if (npp->shutdown) return
|
119
|
+
if (npp->shutdown) return absl::OkStatus();
|
119
120
|
if (npp->kicked_without_poller) {
|
120
121
|
npp->kicked_without_poller = false;
|
121
|
-
return
|
122
|
+
return absl::OkStatus();
|
122
123
|
}
|
123
124
|
non_polling_worker w;
|
124
125
|
gpr_cv_init(&w.cv);
|
@@ -140,7 +141,8 @@ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
|
|
140
141
|
npp->root = w.next;
|
141
142
|
if (&w == npp->root) {
|
142
143
|
if (npp->shutdown) {
|
143
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, npp->shutdown,
|
144
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, npp->shutdown,
|
145
|
+
absl::OkStatus());
|
144
146
|
}
|
145
147
|
npp->root = nullptr;
|
146
148
|
}
|
@@ -149,7 +151,7 @@ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
|
|
149
151
|
w.prev->next = w.next;
|
150
152
|
gpr_cv_destroy(&w.cv);
|
151
153
|
if (worker != nullptr) *worker = nullptr;
|
152
|
-
return
|
154
|
+
return absl::OkStatus();
|
153
155
|
}
|
154
156
|
|
155
157
|
grpc_error_handle non_polling_poller_kick(
|
@@ -168,7 +170,7 @@ grpc_error_handle non_polling_poller_kick(
|
|
168
170
|
} else {
|
169
171
|
p->kicked_without_poller = true;
|
170
172
|
}
|
171
|
-
return
|
173
|
+
return absl::OkStatus();
|
172
174
|
}
|
173
175
|
|
174
176
|
void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
@@ -176,7 +178,7 @@ void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
176
178
|
GPR_ASSERT(closure != nullptr);
|
177
179
|
p->shutdown = closure;
|
178
180
|
if (p->root == nullptr) {
|
179
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
181
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
|
180
182
|
} else {
|
181
183
|
non_polling_worker* w = p->root;
|
182
184
|
do {
|
@@ -187,13 +189,13 @@ void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
187
189
|
}
|
188
190
|
|
189
191
|
const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
|
190
|
-
|
192
|
+
// GRPC_CQ_DEFAULT_POLLING
|
191
193
|
{true, true, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
|
192
194
|
grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
|
193
|
-
|
195
|
+
// GRPC_CQ_NON_LISTENING
|
194
196
|
{true, false, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
|
195
197
|
grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
|
196
|
-
|
198
|
+
// GRPC_CQ_NON_POLLING
|
197
199
|
{false, false, non_polling_poller_size, non_polling_poller_init,
|
198
200
|
non_polling_poller_kick, non_polling_poller_work,
|
199
201
|
non_polling_poller_shutdown, non_polling_poller_destroy},
|
@@ -219,17 +221,17 @@ struct cq_vtable {
|
|
219
221
|
|
220
222
|
namespace {
|
221
223
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
224
|
+
// Queue that holds the cq_completion_events. Internally uses
|
225
|
+
// MultiProducerSingleConsumerQueue (a lockfree multiproducer single consumer
|
226
|
+
// queue). It uses a queue_lock to support multiple consumers.
|
227
|
+
// Only used in completion queues whose completion_type is GRPC_CQ_NEXT
|
226
228
|
class CqEventQueue {
|
227
229
|
public:
|
228
230
|
CqEventQueue() = default;
|
229
231
|
~CqEventQueue() = default;
|
230
232
|
|
231
|
-
|
232
|
-
|
233
|
+
// Note: The counter is not incremented/decremented atomically with push/pop.
|
234
|
+
// The count is only eventually consistent
|
233
235
|
intptr_t num_items() const {
|
234
236
|
return num_queue_items_.load(std::memory_order_relaxed);
|
235
237
|
}
|
@@ -238,14 +240,14 @@ class CqEventQueue {
|
|
238
240
|
grpc_cq_completion* Pop();
|
239
241
|
|
240
242
|
private:
|
241
|
-
|
243
|
+
// Spinlock to serialize consumers i.e pop() operations
|
242
244
|
gpr_spinlock queue_lock_ = GPR_SPINLOCK_INITIALIZER;
|
243
245
|
|
244
246
|
grpc_core::MultiProducerSingleConsumerQueue queue_;
|
245
247
|
|
246
|
-
|
247
|
-
|
248
|
-
|
248
|
+
// A lazy counter of number of items in the queue. This is NOT atomically
|
249
|
+
// incremented/decremented along with push/pop operations and hence is only
|
250
|
+
// eventually consistent
|
249
251
|
std::atomic<intptr_t> num_queue_items_{0};
|
250
252
|
};
|
251
253
|
|
@@ -259,18 +261,18 @@ struct cq_next_data {
|
|
259
261
|
#endif
|
260
262
|
}
|
261
263
|
|
262
|
-
|
264
|
+
/// Completed events for completion-queues of type GRPC_CQ_NEXT
|
263
265
|
CqEventQueue queue;
|
264
266
|
|
265
|
-
|
266
|
-
|
267
|
+
/// Counter of how many things have ever been queued on this completion queue
|
268
|
+
/// useful for avoiding locks to check the queue
|
267
269
|
std::atomic<intptr_t> things_queued_ever{0};
|
268
270
|
|
269
|
-
|
270
|
-
|
271
|
+
/// Number of outstanding events (+1 if not shut down)
|
272
|
+
/// Initial count is dropped by grpc_completion_queue_shutdown
|
271
273
|
std::atomic<intptr_t> pending_events{1};
|
272
274
|
|
273
|
-
|
275
|
+
/// 0 initially. 1 once we initiated shutdown
|
274
276
|
bool shutdown_called = false;
|
275
277
|
};
|
276
278
|
|
@@ -290,25 +292,25 @@ struct cq_pluck_data {
|
|
290
292
|
#endif
|
291
293
|
}
|
292
294
|
|
293
|
-
|
295
|
+
/// Completed events for completion-queues of type GRPC_CQ_PLUCK
|
294
296
|
grpc_cq_completion completed_head;
|
295
297
|
grpc_cq_completion* completed_tail;
|
296
298
|
|
297
|
-
|
298
|
-
|
299
|
+
/// Number of pending events (+1 if we're not shutdown).
|
300
|
+
/// Initial count is dropped by grpc_completion_queue_shutdown.
|
299
301
|
std::atomic<intptr_t> pending_events{1};
|
300
302
|
|
301
|
-
|
302
|
-
|
303
|
+
/// Counter of how many things have ever been queued on this completion queue
|
304
|
+
/// useful for avoiding locks to check the queue
|
303
305
|
std::atomic<intptr_t> things_queued_ever{0};
|
304
306
|
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
307
|
+
/// 0 initially. 1 once we completed shutting
|
308
|
+
// TODO(sreek): This is not needed since (shutdown == 1) if and only if
|
309
|
+
// (pending_events == 0). So consider removing this in future and use
|
310
|
+
// pending_events
|
309
311
|
std::atomic<bool> shutdown{false};
|
310
312
|
|
311
|
-
|
313
|
+
/// 0 initially. 1 once we initiated shutdown
|
312
314
|
bool shutdown_called = false;
|
313
315
|
|
314
316
|
int num_pluckers = 0;
|
@@ -327,24 +329,24 @@ struct cq_callback_data {
|
|
327
329
|
#endif
|
328
330
|
}
|
329
331
|
|
330
|
-
|
332
|
+
/// No actual completed events queue, unlike other types
|
331
333
|
|
332
|
-
|
333
|
-
|
334
|
+
/// Number of pending events (+1 if we're not shutdown).
|
335
|
+
/// Initial count is dropped by grpc_completion_queue_shutdown.
|
334
336
|
std::atomic<intptr_t> pending_events{1};
|
335
337
|
|
336
|
-
|
338
|
+
/// 0 initially. 1 once we initiated shutdown
|
337
339
|
bool shutdown_called = false;
|
338
340
|
|
339
|
-
|
341
|
+
/// A callback that gets invoked when the CQ completes shutdown
|
340
342
|
grpc_completion_queue_functor* shutdown_callback;
|
341
343
|
};
|
342
344
|
|
343
345
|
} // namespace
|
344
346
|
|
345
|
-
|
347
|
+
// Completion queue structure
|
346
348
|
struct grpc_completion_queue {
|
347
|
-
|
349
|
+
/// Once owning_refs drops to zero, we will destroy the cq
|
348
350
|
grpc_core::RefCount owning_refs;
|
349
351
|
|
350
352
|
gpr_mu* mu;
|
@@ -362,7 +364,7 @@ struct grpc_completion_queue {
|
|
362
364
|
int num_polls;
|
363
365
|
};
|
364
366
|
|
365
|
-
|
367
|
+
// Forward declarations
|
366
368
|
static void cq_finish_shutdown_next(grpc_completion_queue* cq);
|
367
369
|
static void cq_finish_shutdown_pluck(grpc_completion_queue* cq);
|
368
370
|
static void cq_finish_shutdown_callback(grpc_completion_queue* cq);
|
@@ -412,17 +414,17 @@ static void cq_destroy_next(void* data);
|
|
412
414
|
static void cq_destroy_pluck(void* data);
|
413
415
|
static void cq_destroy_callback(void* data);
|
414
416
|
|
415
|
-
|
417
|
+
// Completion queue vtables based on the completion-type
|
416
418
|
static const cq_vtable g_cq_vtable[] = {
|
417
|
-
|
419
|
+
// GRPC_CQ_NEXT
|
418
420
|
{GRPC_CQ_NEXT, sizeof(cq_next_data), cq_init_next, cq_shutdown_next,
|
419
421
|
cq_destroy_next, cq_begin_op_for_next, cq_end_op_for_next, cq_next,
|
420
422
|
nullptr},
|
421
|
-
|
423
|
+
// GRPC_CQ_PLUCK
|
422
424
|
{GRPC_CQ_PLUCK, sizeof(cq_pluck_data), cq_init_pluck, cq_shutdown_pluck,
|
423
425
|
cq_destroy_pluck, cq_begin_op_for_pluck, cq_end_op_for_pluck, nullptr,
|
424
426
|
cq_pluck},
|
425
|
-
|
427
|
+
// GRPC_CQ_CALLBACK
|
426
428
|
{GRPC_CQ_CALLBACK, sizeof(cq_callback_data), cq_init_callback,
|
427
429
|
cq_shutdown_callback, cq_destroy_callback, cq_begin_op_for_callback,
|
428
430
|
cq_end_op_for_callback, nullptr, nullptr},
|
@@ -460,7 +462,7 @@ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq,
|
|
460
462
|
if (storage != nullptr && g_cached_cq == cq) {
|
461
463
|
*tag = storage->tag;
|
462
464
|
grpc_core::ExecCtx exec_ctx;
|
463
|
-
*ok = (storage->next &
|
465
|
+
*ok = (storage->next & uintptr_t{1}) == 1;
|
464
466
|
storage->done(storage->done_arg, storage);
|
465
467
|
ret = 1;
|
466
468
|
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
|
@@ -512,13 +514,13 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
|
|
512
514
|
|
513
515
|
switch (completion_type) {
|
514
516
|
case GRPC_CQ_NEXT:
|
515
|
-
|
517
|
+
grpc_core::global_stats().IncrementCqNextCreates();
|
516
518
|
break;
|
517
519
|
case GRPC_CQ_PLUCK:
|
518
|
-
|
520
|
+
grpc_core::global_stats().IncrementCqPluckCreates();
|
519
521
|
break;
|
520
522
|
case GRPC_CQ_CALLBACK:
|
521
|
-
|
523
|
+
grpc_core::global_stats().IncrementCqCallbackCreates();
|
522
524
|
break;
|
523
525
|
}
|
524
526
|
|
@@ -535,7 +537,7 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
|
|
535
537
|
cq->vtable = vtable;
|
536
538
|
cq->poller_vtable = poller_vtable;
|
537
539
|
|
538
|
-
|
540
|
+
// One for destroy(), one for pollset_shutdown
|
539
541
|
new (&cq->owning_refs) grpc_core::RefCount(2);
|
540
542
|
|
541
543
|
poller_vtable->init(POLLSET_FROM_CQ(cq), &cq->mu);
|
@@ -683,60 +685,57 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
|
|
683
685
|
return cq->vtable->begin_op(cq, tag);
|
684
686
|
}
|
685
687
|
|
686
|
-
|
687
|
-
|
688
|
-
|
688
|
+
// Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
|
689
|
+
// completion
|
690
|
+
// type of GRPC_CQ_NEXT)
|
689
691
|
static void cq_end_op_for_next(
|
690
692
|
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
691
693
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
692
694
|
grpc_cq_completion* storage, bool /*internal*/) {
|
693
695
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
694
|
-
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
695
|
-
|
696
|
-
std::string errmsg = grpc_error_std_string(error);
|
696
|
+
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok())) {
|
697
|
+
std::string errmsg = grpc_core::StatusToString(error);
|
697
698
|
GRPC_API_TRACE(
|
698
699
|
"cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
|
699
700
|
"done=%p, done_arg=%p, storage=%p)",
|
700
701
|
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
|
701
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
702
|
-
!GRPC_ERROR_IS_NONE(error)) {
|
702
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok()) {
|
703
703
|
gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
|
704
704
|
errmsg.c_str());
|
705
705
|
}
|
706
706
|
}
|
707
707
|
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
|
708
|
-
int is_success = (
|
708
|
+
int is_success = (error.ok());
|
709
709
|
|
710
710
|
storage->tag = tag;
|
711
711
|
storage->done = done;
|
712
712
|
storage->done_arg = done_arg;
|
713
713
|
storage->next = static_cast<uintptr_t>(is_success);
|
714
714
|
|
715
|
-
cq_check_tag(cq, tag, true);
|
715
|
+
cq_check_tag(cq, tag, true); // Used in debug builds only
|
716
716
|
|
717
717
|
if (g_cached_cq == cq && g_cached_event == nullptr) {
|
718
718
|
g_cached_event = storage;
|
719
719
|
} else {
|
720
|
-
|
720
|
+
// Add the completion to the queue
|
721
721
|
bool is_first = cqd->queue.Push(storage);
|
722
722
|
cqd->things_queued_ever.fetch_add(1, std::memory_order_relaxed);
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
723
|
+
// Since we do not hold the cq lock here, it is important to do an 'acquire'
|
724
|
+
// load here (instead of a 'no_barrier' load) to match with the release
|
725
|
+
// store
|
726
|
+
// (done via pending_events.fetch_sub(1, ACQ_REL)) in cq_shutdown_next
|
727
|
+
//
|
728
728
|
if (cqd->pending_events.load(std::memory_order_acquire) != 1) {
|
729
|
-
|
729
|
+
// Only kick if this is the first item queued
|
730
730
|
if (is_first) {
|
731
731
|
gpr_mu_lock(cq->mu);
|
732
732
|
grpc_error_handle kick_error =
|
733
733
|
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
|
734
734
|
gpr_mu_unlock(cq->mu);
|
735
735
|
|
736
|
-
if (!
|
736
|
+
if (!kick_error.ok()) {
|
737
737
|
gpr_log(GPR_ERROR, "Kick failed: %s",
|
738
|
-
|
739
|
-
GRPC_ERROR_UNREF(kick_error);
|
738
|
+
grpc_core::StatusToString(kick_error).c_str());
|
740
739
|
}
|
741
740
|
}
|
742
741
|
if (cqd->pending_events.fetch_sub(1, std::memory_order_acq_rel) == 1) {
|
@@ -755,30 +754,26 @@ static void cq_end_op_for_next(
|
|
755
754
|
GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down");
|
756
755
|
}
|
757
756
|
}
|
758
|
-
|
759
|
-
GRPC_ERROR_UNREF(error);
|
760
757
|
}
|
761
758
|
|
762
|
-
|
763
|
-
|
764
|
-
|
759
|
+
// Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
|
760
|
+
// completion
|
761
|
+
// type of GRPC_CQ_PLUCK)
|
765
762
|
static void cq_end_op_for_pluck(
|
766
763
|
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
767
764
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
768
765
|
grpc_cq_completion* storage, bool /*internal*/) {
|
769
766
|
cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
|
770
|
-
int is_success = (
|
767
|
+
int is_success = (error.ok());
|
771
768
|
|
772
769
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
773
|
-
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
774
|
-
|
775
|
-
std::string errmsg = grpc_error_std_string(error).c_str();
|
770
|
+
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok())) {
|
771
|
+
std::string errmsg = grpc_core::StatusToString(error);
|
776
772
|
GRPC_API_TRACE(
|
777
773
|
"cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
|
778
774
|
"done=%p, done_arg=%p, storage=%p)",
|
779
775
|
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
|
780
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
781
|
-
!GRPC_ERROR_IS_NONE(error)) {
|
776
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok()) {
|
782
777
|
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
|
783
778
|
errmsg.c_str());
|
784
779
|
}
|
@@ -791,9 +786,9 @@ static void cq_end_op_for_pluck(
|
|
791
786
|
static_cast<uintptr_t>(is_success);
|
792
787
|
|
793
788
|
gpr_mu_lock(cq->mu);
|
794
|
-
cq_check_tag(cq, tag, false);
|
789
|
+
cq_check_tag(cq, tag, false); // Used in debug builds only
|
795
790
|
|
796
|
-
|
791
|
+
// Add to the list of completions
|
797
792
|
cqd->things_queued_ever.fetch_add(1, std::memory_order_relaxed);
|
798
793
|
cqd->completed_tail->next =
|
799
794
|
reinterpret_cast<uintptr_t>(storage) | (1u & cqd->completed_tail->next);
|
@@ -814,22 +809,19 @@ static void cq_end_op_for_pluck(
|
|
814
809
|
grpc_error_handle kick_error =
|
815
810
|
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
|
816
811
|
gpr_mu_unlock(cq->mu);
|
817
|
-
if (!
|
812
|
+
if (!kick_error.ok()) {
|
818
813
|
gpr_log(GPR_ERROR, "Kick failed: %s",
|
819
|
-
|
820
|
-
GRPC_ERROR_UNREF(kick_error);
|
814
|
+
grpc_core::StatusToString(kick_error).c_str());
|
821
815
|
}
|
822
816
|
}
|
823
|
-
|
824
|
-
GRPC_ERROR_UNREF(error);
|
825
817
|
}
|
826
818
|
|
827
819
|
static void functor_callback(void* arg, grpc_error_handle error) {
|
828
820
|
auto* functor = static_cast<grpc_completion_queue_functor*>(arg);
|
829
|
-
functor->functor_run(functor,
|
821
|
+
functor->functor_run(functor, error.ok());
|
830
822
|
}
|
831
823
|
|
832
|
-
|
824
|
+
// Complete an event on a completion queue of type GRPC_CQ_CALLBACK
|
833
825
|
static void cq_end_op_for_callback(
|
834
826
|
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
|
835
827
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
@@ -837,15 +829,13 @@ static void cq_end_op_for_callback(
|
|
837
829
|
cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
|
838
830
|
|
839
831
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
840
|
-
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
841
|
-
|
842
|
-
std::string errmsg = grpc_error_std_string(error);
|
832
|
+
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok())) {
|
833
|
+
std::string errmsg = grpc_core::StatusToString(error);
|
843
834
|
GRPC_API_TRACE(
|
844
835
|
"cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
|
845
836
|
"done=%p, done_arg=%p, storage=%p)",
|
846
837
|
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
|
847
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
848
|
-
!GRPC_ERROR_IS_NONE(error)) {
|
838
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok()) {
|
849
839
|
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
|
850
840
|
errmsg.c_str());
|
851
841
|
}
|
@@ -855,7 +845,7 @@ static void cq_end_op_for_callback(
|
|
855
845
|
// for reserved storage. Invoke the done callback right away to release it.
|
856
846
|
done(done_arg, storage);
|
857
847
|
|
858
|
-
cq_check_tag(cq, tag, true);
|
848
|
+
cq_check_tag(cq, tag, true); // Used in debug builds only
|
859
849
|
|
860
850
|
if (cqd->pending_events.fetch_sub(1, std::memory_order_acq_rel) == 1) {
|
861
851
|
cq_finish_shutdown_callback(cq);
|
@@ -871,9 +861,7 @@ static void cq_end_op_for_callback(
|
|
871
861
|
if (((internal || functor->inlineable) &&
|
872
862
|
grpc_core::ApplicationCallbackExecCtx::Available()) ||
|
873
863
|
grpc_iomgr_is_any_background_poller_thread()) {
|
874
|
-
grpc_core::ApplicationCallbackExecCtx::Enqueue(functor,
|
875
|
-
(GRPC_ERROR_IS_NONE(error)));
|
876
|
-
GRPC_ERROR_UNREF(error);
|
864
|
+
grpc_core::ApplicationCallbackExecCtx::Enqueue(functor, (error.ok()));
|
877
865
|
return;
|
878
866
|
}
|
879
867
|
|
@@ -896,7 +884,7 @@ struct cq_is_finished_arg {
|
|
896
884
|
grpc_completion_queue* cq;
|
897
885
|
grpc_core::Timestamp deadline;
|
898
886
|
grpc_cq_completion* stolen_completion;
|
899
|
-
void* tag;
|
887
|
+
void* tag; // for pluck
|
900
888
|
bool first_loop;
|
901
889
|
};
|
902
890
|
class ExecCtxNext : public grpc_core::ExecCtx {
|
@@ -919,11 +907,11 @@ class ExecCtxNext : public grpc_core::ExecCtx {
|
|
919
907
|
a->last_seen_things_queued_ever =
|
920
908
|
cqd->things_queued_ever.load(std::memory_order_relaxed);
|
921
909
|
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
910
|
+
// Pop a cq_completion from the queue. Returns NULL if the queue is empty
|
911
|
+
// might return NULL in some cases even if the queue is not empty; but
|
912
|
+
// that
|
913
|
+
// is ok and doesn't affect correctness. Might effect the tail latencies a
|
914
|
+
// bit)
|
927
915
|
a->stolen_completion = cqd->queue.Pop();
|
928
916
|
if (a->stolen_completion != nullptr) {
|
929
917
|
return true;
|
@@ -1004,26 +992,26 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
|
|
1004
992
|
c->done(c->done_arg, c);
|
1005
993
|
break;
|
1006
994
|
} else {
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
995
|
+
// If c == NULL it means either the queue is empty OR in an transient
|
996
|
+
// inconsistent state. If it is the latter, we shold do a 0-timeout poll
|
997
|
+
// so that the thread comes back quickly from poll to make a second
|
998
|
+
// attempt at popping. Not doing this can potentially deadlock this
|
999
|
+
// thread forever (if the deadline is infinity)
|
1012
1000
|
if (cqd->queue.num_items() > 0) {
|
1013
1001
|
iteration_deadline = grpc_core::Timestamp::ProcessEpoch();
|
1014
1002
|
}
|
1015
1003
|
}
|
1016
1004
|
|
1017
1005
|
if (cqd->pending_events.load(std::memory_order_acquire) == 0) {
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1006
|
+
// Before returning, check if the queue has any items left over (since
|
1007
|
+
// MultiProducerSingleConsumerQueue::Pop() can sometimes return NULL
|
1008
|
+
// even if the queue is not empty. If so, keep retrying but do not
|
1009
|
+
// return GRPC_QUEUE_SHUTDOWN
|
1022
1010
|
if (cqd->queue.num_items() > 0) {
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1011
|
+
// Go to the beginning of the loop. No point doing a poll because
|
1012
|
+
// (cq->shutdown == true) is only possible when there is no pending
|
1013
|
+
// work (i.e cq->pending_events == 0) and any outstanding completion
|
1014
|
+
// events should have already been queued on this cq
|
1027
1015
|
continue;
|
1028
1016
|
}
|
1029
1017
|
|
@@ -1040,18 +1028,17 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
|
|
1040
1028
|
break;
|
1041
1029
|
}
|
1042
1030
|
|
1043
|
-
|
1031
|
+
// The main polling work happens in grpc_pollset_work
|
1044
1032
|
gpr_mu_lock(cq->mu);
|
1045
1033
|
cq->num_polls++;
|
1046
1034
|
grpc_error_handle err = cq->poller_vtable->work(
|
1047
1035
|
POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
|
1048
1036
|
gpr_mu_unlock(cq->mu);
|
1049
1037
|
|
1050
|
-
if (!
|
1038
|
+
if (!err.ok()) {
|
1051
1039
|
gpr_log(GPR_ERROR, "Completion queue next failed: %s",
|
1052
|
-
|
1053
|
-
|
1054
|
-
if (err == GRPC_ERROR_CANCELLED) {
|
1040
|
+
grpc_core::StatusToString(err).c_str());
|
1041
|
+
if (err == absl::CancelledError()) {
|
1055
1042
|
ret.type = GRPC_QUEUE_SHUTDOWN;
|
1056
1043
|
} else {
|
1057
1044
|
ret.type = GRPC_QUEUE_TIMEOUT;
|
@@ -1078,12 +1065,12 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
|
|
1078
1065
|
return ret;
|
1079
1066
|
}
|
1080
1067
|
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1068
|
+
// Finishes the completion queue shutdown. This means that there are no more
|
1069
|
+
// completion events / tags expected from the completion queue
|
1070
|
+
// - Must be called under completion queue lock
|
1071
|
+
// - Must be called only once in completion queue's lifetime
|
1072
|
+
// - grpc_completion_queue_shutdown() MUST have been called before calling
|
1073
|
+
// this function
|
1087
1074
|
static void cq_finish_shutdown_next(grpc_completion_queue* cq) {
|
1088
1075
|
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
|
1089
1076
|
|
@@ -1096,12 +1083,12 @@ static void cq_finish_shutdown_next(grpc_completion_queue* cq) {
|
|
1096
1083
|
static void cq_shutdown_next(grpc_completion_queue* cq) {
|
1097
1084
|
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
|
1098
1085
|
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1086
|
+
// Need an extra ref for cq here because:
|
1087
|
+
// We call cq_finish_shutdown_next() below, that would call pollset shutdown.
|
1088
|
+
// Pollset shutdown decrements the cq ref count which can potentially destroy
|
1089
|
+
// the cq (if that happens to be the last ref).
|
1090
|
+
// Creating an extra ref here prevents the cq from getting destroyed while
|
1091
|
+
// this function is still active
|
1105
1092
|
GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
|
1106
1093
|
gpr_mu_lock(cq->mu);
|
1107
1094
|
if (cqd->shutdown_called) {
|
@@ -1110,9 +1097,9 @@ static void cq_shutdown_next(grpc_completion_queue* cq) {
|
|
1110
1097
|
return;
|
1111
1098
|
}
|
1112
1099
|
cqd->shutdown_called = true;
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1100
|
+
// Doing acq/release fetch_sub here to match with
|
1101
|
+
// cq_begin_op_for_next and cq_end_op_for_next functions which read/write
|
1102
|
+
// on this counter without necessarily holding a lock on cq
|
1116
1103
|
if (cqd->pending_events.fetch_sub(1, std::memory_order_acq_rel) == 1) {
|
1117
1104
|
cq_finish_shutdown_next(cq);
|
1118
1105
|
}
|
@@ -1147,7 +1134,7 @@ static void del_plucker(grpc_completion_queue* cq, void* tag,
|
|
1147
1134
|
return;
|
1148
1135
|
}
|
1149
1136
|
}
|
1150
|
-
GPR_UNREACHABLE_CODE(return
|
1137
|
+
GPR_UNREACHABLE_CODE(return);
|
1151
1138
|
}
|
1152
1139
|
|
1153
1140
|
class ExecCtxPluck : public grpc_core::ExecCtx {
|
@@ -1172,11 +1159,9 @@ class ExecCtxPluck : public grpc_core::ExecCtx {
|
|
1172
1159
|
grpc_cq_completion* c;
|
1173
1160
|
grpc_cq_completion* prev = &cqd->completed_head;
|
1174
1161
|
while ((c = reinterpret_cast<grpc_cq_completion*>(
|
1175
|
-
prev->next & ~
|
1176
|
-
&cqd->completed_head) {
|
1162
|
+
prev->next & ~uintptr_t{1})) != &cqd->completed_head) {
|
1177
1163
|
if (c->tag == a->tag) {
|
1178
|
-
prev->next = (prev->next &
|
1179
|
-
(c->next & ~static_cast<uintptr_t>(1));
|
1164
|
+
prev->next = (prev->next & uintptr_t{1}) | (c->next & ~uintptr_t{1});
|
1180
1165
|
if (c == cqd->completed_tail) {
|
1181
1166
|
cqd->completed_tail = prev;
|
1182
1167
|
}
|
@@ -1243,11 +1228,9 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
|
|
1243
1228
|
}
|
1244
1229
|
prev = &cqd->completed_head;
|
1245
1230
|
while ((c = reinterpret_cast<grpc_cq_completion*>(
|
1246
|
-
prev->next & ~
|
1247
|
-
&cqd->completed_head) {
|
1231
|
+
prev->next & ~uintptr_t{1})) != &cqd->completed_head) {
|
1248
1232
|
if (c->tag == tag) {
|
1249
|
-
prev->next = (prev->next &
|
1250
|
-
(c->next & ~static_cast<uintptr_t>(1));
|
1233
|
+
prev->next = (prev->next & uintptr_t{1}) | (c->next & ~uintptr_t{1});
|
1251
1234
|
if (c == cqd->completed_tail) {
|
1252
1235
|
cqd->completed_tail = prev;
|
1253
1236
|
}
|
@@ -1272,7 +1255,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
|
|
1272
1255
|
"is %d",
|
1273
1256
|
GRPC_MAX_COMPLETION_QUEUE_PLUCKERS);
|
1274
1257
|
gpr_mu_unlock(cq->mu);
|
1275
|
-
|
1258
|
+
// TODO(ctiller): should we use a different result here
|
1276
1259
|
ret.type = GRPC_QUEUE_TIMEOUT;
|
1277
1260
|
ret.success = 0;
|
1278
1261
|
dump_pending_tags(cq);
|
@@ -1290,12 +1273,11 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
|
|
1290
1273
|
cq->num_polls++;
|
1291
1274
|
grpc_error_handle err =
|
1292
1275
|
cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
|
1293
|
-
if (!
|
1276
|
+
if (!err.ok()) {
|
1294
1277
|
del_plucker(cq, tag, &worker);
|
1295
1278
|
gpr_mu_unlock(cq->mu);
|
1296
1279
|
gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
|
1297
|
-
|
1298
|
-
GRPC_ERROR_UNREF(err);
|
1280
|
+
grpc_core::StatusToString(err).c_str());
|
1299
1281
|
ret.type = GRPC_QUEUE_TIMEOUT;
|
1300
1282
|
ret.success = 0;
|
1301
1283
|
dump_pending_tags(cq);
|
@@ -1328,17 +1310,17 @@ static void cq_finish_shutdown_pluck(grpc_completion_queue* cq) {
|
|
1328
1310
|
cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done);
|
1329
1311
|
}
|
1330
1312
|
|
1331
|
-
|
1332
|
-
|
1313
|
+
// NOTE: This function is almost exactly identical to cq_shutdown_next() but
|
1314
|
+
// merging them is a bit tricky and probably not worth it
|
1333
1315
|
static void cq_shutdown_pluck(grpc_completion_queue* cq) {
|
1334
1316
|
cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
|
1335
1317
|
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1318
|
+
// Need an extra ref for cq here because:
|
1319
|
+
// We call cq_finish_shutdown_pluck() below, that would call pollset shutdown.
|
1320
|
+
// Pollset shutdown decrements the cq ref count which can potentially destroy
|
1321
|
+
// the cq (if that happens to be the last ref).
|
1322
|
+
// Creating an extra ref here prevents the cq from getting destroyed while
|
1323
|
+
// this function is still active
|
1342
1324
|
GRPC_CQ_INTERNAL_REF(cq, "shutting_down (pluck cq)");
|
1343
1325
|
gpr_mu_lock(cq->mu);
|
1344
1326
|
if (cqd->shutdown_called) {
|
@@ -1370,18 +1352,18 @@ static void cq_finish_shutdown_callback(grpc_completion_queue* cq) {
|
|
1370
1352
|
// from a background poller thread.
|
1371
1353
|
grpc_core::Executor::Run(
|
1372
1354
|
GRPC_CLOSURE_CREATE(functor_callback, callback, nullptr),
|
1373
|
-
|
1355
|
+
absl::OkStatus());
|
1374
1356
|
}
|
1375
1357
|
|
1376
1358
|
static void cq_shutdown_callback(grpc_completion_queue* cq) {
|
1377
1359
|
cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
|
1378
1360
|
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1361
|
+
// Need an extra ref for cq here because:
|
1362
|
+
// We call cq_finish_shutdown_callback() below, which calls pollset shutdown.
|
1363
|
+
// Pollset shutdown decrements the cq ref count which can potentially destroy
|
1364
|
+
// the cq (if that happens to be the last ref).
|
1365
|
+
// Creating an extra ref here prevents the cq from getting destroyed while
|
1366
|
+
// this function is still active
|
1385
1367
|
GRPC_CQ_INTERNAL_REF(cq, "shutting_down (callback cq)");
|
1386
1368
|
gpr_mu_lock(cq->mu);
|
1387
1369
|
if (cqd->shutdown_called) {
|
@@ -1399,8 +1381,8 @@ static void cq_shutdown_callback(grpc_completion_queue* cq) {
|
|
1399
1381
|
GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
|
1400
1382
|
}
|
1401
1383
|
|
1402
|
-
|
1403
|
-
|
1384
|
+
// Shutdown simply drops a ref that we reserved at creation time; if we drop
|
1385
|
+
// to zero here, then enter shutdown mode and wake up any waiters
|
1404
1386
|
void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {
|
1405
1387
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1406
1388
|
grpc_core::ExecCtx exec_ctx;
|