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 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
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
@@ -35,14 +35,15 @@
|
|
35
35
|
#include <string>
|
36
36
|
|
37
37
|
#include "absl/strings/str_cat.h"
|
38
|
+
#include "absl/strings/str_format.h"
|
38
39
|
|
39
40
|
#include <grpc/support/alloc.h>
|
40
41
|
#include <grpc/support/log.h>
|
41
42
|
|
42
43
|
#include "src/core/lib/debug/stats.h"
|
43
|
-
#include "src/core/lib/
|
44
|
-
#include "src/core/lib/gpr/tls.h"
|
44
|
+
#include "src/core/lib/debug/stats_data.h"
|
45
45
|
#include "src/core/lib/gpr/useful.h"
|
46
|
+
#include "src/core/lib/gprpp/crash.h"
|
46
47
|
#include "src/core/lib/gprpp/thd.h"
|
47
48
|
#include "src/core/lib/iomgr/block_annotate.h"
|
48
49
|
#include "src/core/lib/iomgr/ev_poll_posix.h"
|
@@ -51,9 +52,9 @@
|
|
51
52
|
|
52
53
|
#define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1)
|
53
54
|
|
54
|
-
|
55
|
-
|
56
|
-
|
55
|
+
//******************************************************************************
|
56
|
+
// FD declarations
|
57
|
+
//
|
57
58
|
typedef struct grpc_fd_watcher {
|
58
59
|
struct grpc_fd_watcher* next;
|
59
60
|
struct grpc_fd_watcher* prev;
|
@@ -64,10 +65,10 @@ typedef struct grpc_fd_watcher {
|
|
64
65
|
|
65
66
|
typedef struct grpc_cached_wakeup_fd grpc_cached_wakeup_fd;
|
66
67
|
|
67
|
-
|
68
|
+
// Only used when GRPC_ENABLE_FORK_SUPPORT=1
|
68
69
|
struct grpc_fork_fd_list {
|
69
|
-
|
70
|
-
set to nullptr.
|
70
|
+
// Only one of fd or cached_wakeup_fd will be set. The unused field will be
|
71
|
+
// set to nullptr.
|
71
72
|
grpc_fd* fd;
|
72
73
|
grpc_cached_wakeup_fd* cached_wakeup_fd;
|
73
74
|
|
@@ -77,11 +78,11 @@ struct grpc_fork_fd_list {
|
|
77
78
|
|
78
79
|
struct grpc_fd {
|
79
80
|
int fd;
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
81
|
+
// refst format:
|
82
|
+
// bit0: 1=active/0=orphaned
|
83
|
+
// bit1-n: refcount
|
84
|
+
// meaning that mostly we ref by two to avoid altering the orphaned bit,
|
85
|
+
// and just unref by 1 when we're ready to flag the object as orphaned
|
85
86
|
gpr_atm refst;
|
86
87
|
|
87
88
|
gpr_mu mu;
|
@@ -91,28 +92,28 @@ struct grpc_fd {
|
|
91
92
|
gpr_atm pollhup;
|
92
93
|
grpc_error_handle shutdown_error;
|
93
94
|
|
94
|
-
|
95
|
+
// The watcher list.
|
95
96
|
|
96
|
-
|
97
|
+
// The following watcher related fields are protected by watcher_mu.
|
97
98
|
|
98
|
-
|
99
|
-
|
99
|
+
// An fd_watcher is an ephemeral object created when an fd wants to
|
100
|
+
// begin polling, and destroyed after the poll.
|
100
101
|
|
101
|
-
|
102
|
-
|
102
|
+
// It denotes the fd's interest in whether to read poll or write poll
|
103
|
+
// or both or neither on this fd.
|
103
104
|
|
104
|
-
|
105
|
-
|
106
|
-
|
105
|
+
// If a watcher is asked to poll for reads or writes, the read_watcher
|
106
|
+
// or write_watcher fields are set respectively. A watcher may be asked
|
107
|
+
// to poll for both, in which case both fields will be set.
|
107
108
|
|
108
|
-
|
109
|
-
|
109
|
+
// read_watcher and write_watcher may be NULL if no watcher has been
|
110
|
+
// asked to poll for reads or writes.
|
110
111
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
112
|
+
// If an fd_watcher is not asked to poll for reads or writes, it's added
|
113
|
+
// to a linked list of inactive watchers, rooted at inactive_watcher_root.
|
114
|
+
// If at a later time there becomes need of a poller to poll, one of
|
115
|
+
// the inactive pollers may be kicked out of their poll loops to take
|
116
|
+
// that responsibility.
|
116
117
|
grpc_fd_watcher inactive_watcher_root;
|
117
118
|
grpc_fd_watcher* read_watcher;
|
118
119
|
grpc_fd_watcher* write_watcher;
|
@@ -124,38 +125,40 @@ struct grpc_fd {
|
|
124
125
|
|
125
126
|
grpc_iomgr_object iomgr_object;
|
126
127
|
|
127
|
-
|
128
|
+
// Only used when GRPC_ENABLE_FORK_SUPPORT=1
|
128
129
|
grpc_fork_fd_list* fork_fd_list;
|
130
|
+
|
131
|
+
bool is_pre_allocated;
|
129
132
|
};
|
130
133
|
|
131
|
-
|
134
|
+
// True when GRPC_ENABLE_FORK_SUPPORT=1.
|
132
135
|
static bool track_fds_for_fork = false;
|
133
136
|
|
134
|
-
|
137
|
+
// Only used when GRPC_ENABLE_FORK_SUPPORT=1
|
135
138
|
static grpc_fork_fd_list* fork_fd_list_head = nullptr;
|
136
139
|
static gpr_mu fork_fd_list_mu;
|
137
140
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
141
|
+
// Begin polling on an fd.
|
142
|
+
// Registers that the given pollset is interested in this fd - so that if read
|
143
|
+
// or writability interest changes, the pollset can be kicked to pick up that
|
144
|
+
// new interest.
|
145
|
+
// Return value is:
|
146
|
+
// (fd_needs_read? read_mask : 0) | (fd_needs_write? write_mask : 0)
|
147
|
+
// i.e. a combination of read_mask and write_mask determined by the fd's current
|
148
|
+
// interest in said events.
|
149
|
+
// Polling strategies that do not need to alter their behavior depending on the
|
150
|
+
// fd's current interest (such as epoll) do not need to call this function.
|
151
|
+
// MUST NOT be called with a pollset lock taken
|
149
152
|
static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
|
150
153
|
grpc_pollset_worker* worker, uint32_t read_mask,
|
151
154
|
uint32_t write_mask, grpc_fd_watcher* watcher);
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
155
|
+
// Complete polling previously started with fd_begin_poll
|
156
|
+
// MUST NOT be called with a pollset lock taken
|
157
|
+
// if got_read or got_write are 1, also does the become_{readable,writable} as
|
158
|
+
// appropriate.
|
156
159
|
static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write);
|
157
160
|
|
158
|
-
|
161
|
+
// Return 1 if this fd is orphaned, 0 otherwise
|
159
162
|
static bool fd_is_orphaned(grpc_fd* fd);
|
160
163
|
|
161
164
|
#ifndef NDEBUG
|
@@ -174,15 +177,15 @@ static void fd_unref(grpc_fd* fd);
|
|
174
177
|
#define CLOSURE_NOT_READY ((grpc_closure*)0)
|
175
178
|
#define CLOSURE_READY ((grpc_closure*)1)
|
176
179
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
+
//******************************************************************************
|
181
|
+
// pollset declarations
|
182
|
+
//
|
180
183
|
|
181
184
|
typedef struct grpc_cached_wakeup_fd {
|
182
185
|
grpc_wakeup_fd fd;
|
183
186
|
struct grpc_cached_wakeup_fd* next;
|
184
187
|
|
185
|
-
|
188
|
+
// Only used when GRPC_ENABLE_FORK_SUPPORT=1
|
186
189
|
grpc_fork_fd_list* fork_fd_list;
|
187
190
|
} grpc_cached_wakeup_fd;
|
188
191
|
|
@@ -202,45 +205,45 @@ struct grpc_pollset {
|
|
202
205
|
int kicked_without_pollers;
|
203
206
|
grpc_closure* shutdown_done;
|
204
207
|
int pollset_set_count;
|
205
|
-
|
208
|
+
// all polled fds
|
206
209
|
size_t fd_count;
|
207
210
|
size_t fd_capacity;
|
208
211
|
grpc_fd** fds;
|
209
|
-
|
212
|
+
// Local cache of eventfds for workers
|
210
213
|
grpc_cached_wakeup_fd* local_wakeup_cache;
|
211
214
|
};
|
212
215
|
|
213
|
-
|
216
|
+
// Add an fd to a pollset
|
214
217
|
static void pollset_add_fd(grpc_pollset* pollset, struct grpc_fd* fd);
|
215
218
|
|
216
219
|
static void pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd);
|
217
220
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
221
|
+
// Convert a timespec to milliseconds:
|
222
|
+
// - very small or negative poll times are clamped to zero to do a
|
223
|
+
// non-blocking poll (which becomes spin polling)
|
224
|
+
// - other small values are rounded up to one millisecond
|
225
|
+
// - longer than a millisecond polls are rounded up to the next nearest
|
226
|
+
// millisecond to avoid spinning
|
227
|
+
// - infinite timeouts are converted to -1
|
225
228
|
static int poll_deadline_to_millis_timeout(grpc_core::Timestamp deadline);
|
226
229
|
|
227
|
-
|
230
|
+
// Allow kick to wakeup the currently polling worker
|
228
231
|
#define GRPC_POLLSET_CAN_KICK_SELF 1
|
229
|
-
|
232
|
+
// Force the wakee to repoll when awoken
|
230
233
|
#define GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP 2
|
231
|
-
|
232
|
-
|
234
|
+
// As per pollset_kick, with an extended set of flags (defined above)
|
235
|
+
// -- mostly for fd_posix's use.
|
233
236
|
static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
234
237
|
grpc_pollset_worker* specific_worker,
|
235
238
|
uint32_t flags) GRPC_MUST_USE_RESULT;
|
236
239
|
|
237
|
-
|
238
|
-
|
240
|
+
// Return 1 if the pollset has active threads in pollset_work (pollset must
|
241
|
+
// be locked)
|
239
242
|
static bool pollset_has_workers(grpc_pollset* pollset);
|
240
243
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
+
//******************************************************************************
|
245
|
+
// pollset_set definitions
|
246
|
+
//
|
244
247
|
|
245
248
|
struct grpc_pollset_set {
|
246
249
|
gpr_mu mu;
|
@@ -258,9 +261,9 @@ struct grpc_pollset_set {
|
|
258
261
|
grpc_fd** fds;
|
259
262
|
};
|
260
263
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
+
//******************************************************************************
|
265
|
+
// functions to track opened fds. No-ops unless track_fds_for_fork is true.
|
266
|
+
//
|
264
267
|
|
265
268
|
static void fork_fd_list_remove_node(grpc_fork_fd_list* node) {
|
266
269
|
if (track_fds_for_fork) {
|
@@ -310,9 +313,9 @@ static void fork_fd_list_add_wakeup_fd(grpc_cached_wakeup_fd* fd) {
|
|
310
313
|
}
|
311
314
|
}
|
312
315
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
+
//******************************************************************************
|
317
|
+
// fd_posix.c
|
318
|
+
//
|
316
319
|
|
317
320
|
#ifndef NDEBUG
|
318
321
|
#define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
|
@@ -359,7 +362,6 @@ static void unref_by(grpc_fd* fd, int n) {
|
|
359
362
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
360
363
|
fork_fd_list_remove_node(fd->fork_fd_list);
|
361
364
|
if (fd->shutdown) {
|
362
|
-
GRPC_ERROR_UNREF(fd->shutdown_error);
|
363
365
|
}
|
364
366
|
fd->shutdown_error.~Status();
|
365
367
|
gpr_free(fd);
|
@@ -386,6 +388,7 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
|
|
386
388
|
r->on_done_closure = nullptr;
|
387
389
|
r->closed = 0;
|
388
390
|
r->released = 0;
|
391
|
+
r->is_pre_allocated = false;
|
389
392
|
gpr_atm_no_barrier_store(&r->pollhup, 0);
|
390
393
|
|
391
394
|
std::string name2 = absl::StrCat(name, " fd=", fd);
|
@@ -440,9 +443,12 @@ static int has_watchers(grpc_fd* fd) {
|
|
440
443
|
static void close_fd_locked(grpc_fd* fd) {
|
441
444
|
fd->closed = 1;
|
442
445
|
if (!fd->released) {
|
443
|
-
|
446
|
+
if (!fd->is_pre_allocated) {
|
447
|
+
close(fd->fd);
|
448
|
+
}
|
444
449
|
}
|
445
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure,
|
450
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure,
|
451
|
+
absl::OkStatus());
|
446
452
|
}
|
447
453
|
|
448
454
|
static int fd_wrapped_fd(grpc_fd* fd) {
|
@@ -462,17 +468,17 @@ static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
|
462
468
|
fd->released = true;
|
463
469
|
}
|
464
470
|
gpr_mu_lock(&fd->mu);
|
465
|
-
REF_BY(fd, 1, reason);
|
471
|
+
REF_BY(fd, 1, reason); // remove active status, but keep referenced
|
466
472
|
if (!has_watchers(fd)) {
|
467
473
|
close_fd_locked(fd);
|
468
474
|
} else {
|
469
475
|
wake_all_watchers_locked(fd);
|
470
476
|
}
|
471
477
|
gpr_mu_unlock(&fd->mu);
|
472
|
-
UNREF_BY(fd, 2, reason);
|
478
|
+
UNREF_BY(fd, 2, reason); // drop the reference
|
473
479
|
}
|
474
480
|
|
475
|
-
|
481
|
+
// increment refcount by two to avoid changing the orphan bit
|
476
482
|
#ifndef NDEBUG
|
477
483
|
static void fd_ref(grpc_fd* fd, const char* reason, const char* file,
|
478
484
|
int line) {
|
@@ -491,12 +497,11 @@ static void fd_unref(grpc_fd* fd) { unref_by(fd, 2); }
|
|
491
497
|
|
492
498
|
static grpc_error_handle fd_shutdown_error(grpc_fd* fd) {
|
493
499
|
if (!fd->shutdown) {
|
494
|
-
return
|
500
|
+
return absl::OkStatus();
|
495
501
|
} else {
|
496
|
-
return grpc_error_set_int(
|
497
|
-
|
498
|
-
|
499
|
-
GRPC_STATUS_UNAVAILABLE);
|
502
|
+
return grpc_error_set_int(
|
503
|
+
GRPC_ERROR_CREATE_REFERENCING("FD shutdown", &fd->shutdown_error, 1),
|
504
|
+
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
|
500
505
|
}
|
501
506
|
}
|
502
507
|
|
@@ -505,37 +510,36 @@ static void notify_on_locked(grpc_fd* fd, grpc_closure** st,
|
|
505
510
|
if (fd->shutdown || gpr_atm_no_barrier_load(&fd->pollhup)) {
|
506
511
|
grpc_core::ExecCtx::Run(
|
507
512
|
DEBUG_LOCATION, closure,
|
508
|
-
grpc_error_set_int(
|
509
|
-
|
513
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("FD shutdown"),
|
514
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
510
515
|
GRPC_STATUS_UNAVAILABLE));
|
511
516
|
} else if (*st == CLOSURE_NOT_READY) {
|
512
|
-
|
517
|
+
// not ready ==> switch to a waiting state by setting the closure
|
513
518
|
*st = closure;
|
514
519
|
} else if (*st == CLOSURE_READY) {
|
515
|
-
|
520
|
+
// already ready ==> queue the closure to run immediately
|
516
521
|
*st = CLOSURE_NOT_READY;
|
517
522
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, fd_shutdown_error(fd));
|
518
523
|
maybe_wake_one_watcher_locked(fd);
|
519
524
|
} else {
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
abort();
|
525
|
+
// upcallptr was set to a different closure. This is an error!
|
526
|
+
grpc_core::Crash(
|
527
|
+
"User called a notify_on function with a previous callback still "
|
528
|
+
"pending");
|
525
529
|
}
|
526
530
|
}
|
527
531
|
|
528
|
-
|
532
|
+
// returns 1 if state becomes not ready
|
529
533
|
static int set_ready_locked(grpc_fd* fd, grpc_closure** st) {
|
530
534
|
if (*st == CLOSURE_READY) {
|
531
|
-
|
535
|
+
// duplicate ready ==> ignore
|
532
536
|
return 0;
|
533
537
|
} else if (*st == CLOSURE_NOT_READY) {
|
534
|
-
|
538
|
+
// not ready, and not waiting ==> flag ready
|
535
539
|
*st = CLOSURE_READY;
|
536
540
|
return 0;
|
537
541
|
} else {
|
538
|
-
|
542
|
+
// waiting ==> queue closure
|
539
543
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, *st, fd_shutdown_error(fd));
|
540
544
|
*st = CLOSURE_NOT_READY;
|
541
545
|
return 1;
|
@@ -544,16 +548,16 @@ static int set_ready_locked(grpc_fd* fd, grpc_closure** st) {
|
|
544
548
|
|
545
549
|
static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
546
550
|
gpr_mu_lock(&fd->mu);
|
547
|
-
|
551
|
+
// only shutdown once
|
548
552
|
if (!fd->shutdown) {
|
549
553
|
fd->shutdown = 1;
|
550
554
|
fd->shutdown_error = why;
|
551
|
-
|
552
|
-
|
555
|
+
// signal read/write closed to OS so that future operations fail
|
556
|
+
if (!fd->is_pre_allocated) {
|
557
|
+
shutdown(fd->fd, SHUT_RDWR);
|
558
|
+
}
|
553
559
|
set_ready_locked(fd, &fd->read_closure);
|
554
560
|
set_ready_locked(fd, &fd->write_closure);
|
555
|
-
} else {
|
556
|
-
GRPC_ERROR_UNREF(why);
|
557
561
|
}
|
558
562
|
gpr_mu_unlock(&fd->mu);
|
559
563
|
}
|
@@ -581,7 +585,7 @@ static void fd_notify_on_error(grpc_fd* /*fd*/, grpc_closure* closure) {
|
|
581
585
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
582
586
|
gpr_log(GPR_ERROR, "Polling engine does not support tracking errors.");
|
583
587
|
}
|
584
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
588
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::CancelledError());
|
585
589
|
}
|
586
590
|
|
587
591
|
static void fd_set_readable(grpc_fd* fd) {
|
@@ -608,13 +612,13 @@ static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
|
|
608
612
|
uint32_t mask = 0;
|
609
613
|
grpc_closure* cur;
|
610
614
|
int requested;
|
611
|
-
|
612
|
-
|
615
|
+
// keep track of pollers that have requested our events, in case they change
|
616
|
+
//
|
613
617
|
GRPC_FD_REF(fd, "poll");
|
614
618
|
|
615
619
|
gpr_mu_lock(&fd->mu);
|
616
620
|
|
617
|
-
|
621
|
+
// if we are shutdown, then don't add to the watcher set
|
618
622
|
if (fd->shutdown) {
|
619
623
|
watcher->pollset = nullptr;
|
620
624
|
watcher->worker = nullptr;
|
@@ -623,22 +627,22 @@ static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
|
|
623
627
|
return 0;
|
624
628
|
}
|
625
629
|
|
626
|
-
|
630
|
+
// if there is nobody polling for read, but we need to, then start doing so
|
627
631
|
cur = fd->read_closure;
|
628
632
|
requested = cur != CLOSURE_READY;
|
629
633
|
if (read_mask && fd->read_watcher == nullptr && requested) {
|
630
634
|
fd->read_watcher = watcher;
|
631
635
|
mask |= read_mask;
|
632
636
|
}
|
633
|
-
|
634
|
-
|
637
|
+
// if there is nobody polling for write, but we need to, then start doing so
|
638
|
+
//
|
635
639
|
cur = fd->write_closure;
|
636
640
|
requested = cur != CLOSURE_READY;
|
637
641
|
if (write_mask && fd->write_watcher == nullptr && requested) {
|
638
642
|
fd->write_watcher = watcher;
|
639
643
|
mask |= write_mask;
|
640
644
|
}
|
641
|
-
|
645
|
+
// if not polling, remember this watcher in case we need someone to later
|
642
646
|
if (mask == 0 && worker != nullptr) {
|
643
647
|
watcher->next = &fd->inactive_watcher_root;
|
644
648
|
watcher->prev = watcher->next->prev;
|
@@ -669,7 +673,7 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
|
|
669
673
|
}
|
670
674
|
|
671
675
|
if (watcher == fd->read_watcher) {
|
672
|
-
|
676
|
+
// remove read watcher, kick if we still need a read
|
673
677
|
was_polling = 1;
|
674
678
|
if (!got_read) {
|
675
679
|
kick = 1;
|
@@ -677,7 +681,7 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
|
|
677
681
|
fd->read_watcher = nullptr;
|
678
682
|
}
|
679
683
|
if (watcher == fd->write_watcher) {
|
680
|
-
|
684
|
+
// remove write watcher, kick if we still need a write
|
681
685
|
was_polling = 1;
|
682
686
|
if (!got_write) {
|
683
687
|
kick = 1;
|
@@ -685,7 +689,7 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
|
|
685
689
|
fd->write_watcher = nullptr;
|
686
690
|
}
|
687
691
|
if (!was_polling && watcher->worker != nullptr) {
|
688
|
-
|
692
|
+
// remove from inactive list
|
689
693
|
watcher->next->prev = watcher->prev;
|
690
694
|
watcher->prev->next = watcher->next;
|
691
695
|
}
|
@@ -710,12 +714,14 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
|
|
710
714
|
GRPC_FD_UNREF(fd, "poll");
|
711
715
|
}
|
712
716
|
|
713
|
-
|
714
|
-
|
715
|
-
|
717
|
+
static void fd_set_pre_allocated(grpc_fd* fd) { fd->is_pre_allocated = true; }
|
718
|
+
|
719
|
+
//******************************************************************************
|
720
|
+
// pollset_posix.c
|
721
|
+
//
|
716
722
|
|
717
|
-
static
|
718
|
-
static
|
723
|
+
static thread_local grpc_pollset* g_current_thread_poller;
|
724
|
+
static thread_local grpc_pollset_worker* g_current_thread_worker;
|
719
725
|
|
720
726
|
static void remove_worker(grpc_pollset* /*p*/, grpc_pollset_worker* worker) {
|
721
727
|
worker->prev->next = worker->next;
|
@@ -758,9 +764,9 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) {
|
|
758
764
|
|
759
765
|
static void kick_append_error(grpc_error_handle* composite,
|
760
766
|
grpc_error_handle error) {
|
761
|
-
if (
|
762
|
-
if (
|
763
|
-
*composite =
|
767
|
+
if (error.ok()) return;
|
768
|
+
if (composite->ok()) {
|
769
|
+
*composite = GRPC_ERROR_CREATE("Kick Failure");
|
764
770
|
}
|
765
771
|
*composite = grpc_error_add_child(*composite, error);
|
766
772
|
}
|
@@ -768,9 +774,9 @@ static void kick_append_error(grpc_error_handle* composite,
|
|
768
774
|
static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
769
775
|
grpc_pollset_worker* specific_worker,
|
770
776
|
uint32_t flags) {
|
771
|
-
grpc_error_handle error
|
777
|
+
grpc_error_handle error;
|
772
778
|
|
773
|
-
|
779
|
+
// pollset->mu already held
|
774
780
|
if (specific_worker != nullptr) {
|
775
781
|
if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) {
|
776
782
|
GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
|
@@ -819,7 +825,7 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
|
819
825
|
}
|
820
826
|
}
|
821
827
|
|
822
|
-
GRPC_LOG_IF_ERROR("pollset_kick_ext",
|
828
|
+
GRPC_LOG_IF_ERROR("pollset_kick_ext", error);
|
823
829
|
return error;
|
824
830
|
}
|
825
831
|
|
@@ -828,11 +834,11 @@ static grpc_error_handle pollset_kick(grpc_pollset* p,
|
|
828
834
|
return pollset_kick_ext(p, specific_worker, 0);
|
829
835
|
}
|
830
836
|
|
831
|
-
|
837
|
+
// global state management
|
832
838
|
|
833
|
-
static grpc_error_handle pollset_global_init(void) { return
|
839
|
+
static grpc_error_handle pollset_global_init(void) { return absl::OkStatus(); }
|
834
840
|
|
835
|
-
|
841
|
+
// main interface
|
836
842
|
|
837
843
|
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
838
844
|
gpr_mu_init(&pollset->mu);
|
@@ -865,7 +871,7 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
865
871
|
static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {
|
866
872
|
gpr_mu_lock(&pollset->mu);
|
867
873
|
size_t i;
|
868
|
-
|
874
|
+
// TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here
|
869
875
|
for (i = 0; i < pollset->fd_count; i++) {
|
870
876
|
if (pollset->fds[i] == fd) goto exit;
|
871
877
|
}
|
@@ -889,14 +895,14 @@ static void finish_shutdown(grpc_pollset* pollset) {
|
|
889
895
|
}
|
890
896
|
pollset->fd_count = 0;
|
891
897
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_done,
|
892
|
-
|
898
|
+
absl::OkStatus());
|
893
899
|
}
|
894
900
|
|
895
901
|
static void work_combine_error(grpc_error_handle* composite,
|
896
902
|
grpc_error_handle error) {
|
897
|
-
if (
|
898
|
-
if (
|
899
|
-
*composite =
|
903
|
+
if (error.ok()) return;
|
904
|
+
if (composite->ok()) {
|
905
|
+
*composite = GRPC_ERROR_CREATE("pollset_work");
|
900
906
|
}
|
901
907
|
*composite = grpc_error_add_child(*composite, error);
|
902
908
|
}
|
@@ -906,19 +912,19 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
906
912
|
grpc_core::Timestamp deadline) {
|
907
913
|
grpc_pollset_worker worker;
|
908
914
|
if (worker_hdl) *worker_hdl = &worker;
|
909
|
-
grpc_error_handle error
|
915
|
+
grpc_error_handle error;
|
910
916
|
|
911
|
-
|
917
|
+
// Avoid malloc for small number of elements.
|
912
918
|
enum { inline_elements = 96 };
|
913
919
|
struct pollfd pollfd_space[inline_elements];
|
914
920
|
struct grpc_fd_watcher watcher_space[inline_elements];
|
915
921
|
|
916
|
-
|
922
|
+
// pollset->mu already held
|
917
923
|
int added_worker = 0;
|
918
924
|
int locked = 1;
|
919
925
|
int queued_work = 0;
|
920
926
|
int keep_polling = 0;
|
921
|
-
|
927
|
+
// this must happen before we (potentially) drop pollset->mu
|
922
928
|
worker.next = worker.prev = nullptr;
|
923
929
|
worker.reevaluate_polling_on_wakeup = 0;
|
924
930
|
if (pollset->local_wakeup_cache != nullptr) {
|
@@ -929,19 +935,19 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
929
935
|
gpr_malloc(sizeof(*worker.wakeup_fd)));
|
930
936
|
error = grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
|
931
937
|
fork_fd_list_add_wakeup_fd(worker.wakeup_fd);
|
932
|
-
if (!
|
933
|
-
GRPC_LOG_IF_ERROR("pollset_work",
|
938
|
+
if (!error.ok()) {
|
939
|
+
GRPC_LOG_IF_ERROR("pollset_work", error);
|
934
940
|
return error;
|
935
941
|
}
|
936
942
|
}
|
937
943
|
worker.kicked_specifically = 0;
|
938
|
-
|
944
|
+
// If we're shutting down then we don't execute any extended work
|
939
945
|
if (pollset->shutting_down) {
|
940
946
|
goto done;
|
941
947
|
}
|
942
|
-
|
943
|
-
|
944
|
-
|
948
|
+
// Start polling, and keep doing so while we're being asked to
|
949
|
+
// re-evaluate our pollers (this allows poll() based pollers to
|
950
|
+
// ensure they don't miss wakeups)
|
945
951
|
keep_polling = 1;
|
946
952
|
g_current_thread_poller = pollset;
|
947
953
|
while (keep_polling) {
|
@@ -969,7 +975,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
969
975
|
pfds = pollfd_space;
|
970
976
|
watchers = watcher_space;
|
971
977
|
} else {
|
972
|
-
|
978
|
+
// Allocate one buffer to hold both pfds and watchers arrays
|
973
979
|
const size_t pfd_size = sizeof(*pfds) * (pollset->fd_count + 2);
|
974
980
|
const size_t watch_size = sizeof(*watchers) * (pollset->fd_count + 2);
|
975
981
|
void* buf = gpr_malloc(pfd_size + watch_size);
|
@@ -1008,8 +1014,8 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1008
1014
|
}
|
1009
1015
|
}
|
1010
1016
|
|
1011
|
-
|
1012
|
-
|
1017
|
+
// TODO(vpai): Consider first doing a 0 timeout poll here to avoid
|
1018
|
+
// even going into the blocking annotation if possible
|
1013
1019
|
GRPC_SCHEDULING_START_BLOCKING_REGION;
|
1014
1020
|
r = grpc_poll_function(pfds, pfd_count, timeout);
|
1015
1021
|
GRPC_SCHEDULING_END_BLOCKING_REGION;
|
@@ -1057,9 +1063,9 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1057
1063
|
pfds[i].fd, (pfds[i].revents & POLLIN_CHECK) != 0,
|
1058
1064
|
(pfds[i].revents & POLLOUT_CHECK) != 0, pfds[i].revents);
|
1059
1065
|
}
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1066
|
+
// This is a mitigation to prevent poll() from spinning on a
|
1067
|
+
//* POLLHUP https://github.com/grpc/grpc/pull/13665
|
1068
|
+
//
|
1063
1069
|
if (pfds[i].revents & POLLHUP) {
|
1064
1070
|
gpr_atm_no_barrier_store(&watchers[i].fd->pollhup, 1);
|
1065
1071
|
}
|
@@ -1070,7 +1076,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1070
1076
|
}
|
1071
1077
|
|
1072
1078
|
if (pfds != pollfd_space) {
|
1073
|
-
|
1079
|
+
// pfds and watchers are in the same memory block pointed to by pfds
|
1074
1080
|
gpr_free(pfds);
|
1075
1081
|
}
|
1076
1082
|
|
@@ -1078,25 +1084,25 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1078
1084
|
} else {
|
1079
1085
|
pollset->kicked_without_pollers = 0;
|
1080
1086
|
}
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1087
|
+
// Finished execution - start cleaning up.
|
1088
|
+
// Note that we may arrive here from outside the enclosing while() loop.
|
1089
|
+
// In that case we won't loop though as we haven't added worker to the
|
1090
|
+
// worker list, which means nobody could ask us to re-evaluate polling).
|
1085
1091
|
done:
|
1086
1092
|
if (!locked) {
|
1087
1093
|
queued_work |= grpc_core::ExecCtx::Get()->Flush();
|
1088
1094
|
gpr_mu_lock(&pollset->mu);
|
1089
1095
|
locked = 1;
|
1090
1096
|
}
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
if (worker.reevaluate_polling_on_wakeup &&
|
1097
|
+
// If we're forced to re-evaluate polling (via pollset_kick with
|
1098
|
+
// GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
|
1099
|
+
// a loop
|
1100
|
+
if (worker.reevaluate_polling_on_wakeup && error.ok()) {
|
1095
1101
|
worker.reevaluate_polling_on_wakeup = 0;
|
1096
1102
|
pollset->kicked_without_pollers = 0;
|
1097
1103
|
if (queued_work || worker.kicked_specifically) {
|
1098
|
-
|
1099
|
-
|
1104
|
+
// If there's queued work on the list, then set the deadline to be
|
1105
|
+
// immediate so we get back out of the polling loop quickly
|
1100
1106
|
deadline = grpc_core::Timestamp();
|
1101
1107
|
}
|
1102
1108
|
keep_polling = 1;
|
@@ -1107,10 +1113,10 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1107
1113
|
remove_worker(pollset, &worker);
|
1108
1114
|
g_current_thread_worker = nullptr;
|
1109
1115
|
}
|
1110
|
-
|
1116
|
+
// release wakeup fd to the local pool
|
1111
1117
|
worker.wakeup_fd->next = pollset->local_wakeup_cache;
|
1112
1118
|
pollset->local_wakeup_cache = worker.wakeup_fd;
|
1113
|
-
|
1119
|
+
// check shutdown conditions
|
1114
1120
|
if (pollset->shutting_down) {
|
1115
1121
|
if (pollset_has_workers(pollset)) {
|
1116
1122
|
(void)pollset_kick(pollset, nullptr);
|
@@ -1119,15 +1125,15 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1119
1125
|
gpr_mu_unlock(&pollset->mu);
|
1120
1126
|
finish_shutdown(pollset);
|
1121
1127
|
grpc_core::ExecCtx::Get()->Flush();
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1128
|
+
// Continuing to access pollset here is safe -- it is the caller's
|
1129
|
+
// responsibility to not destroy when it has outstanding calls to
|
1130
|
+
// pollset_work.
|
1131
|
+
// TODO(dklempner): Can we refactor the shutdown logic to avoid this?
|
1126
1132
|
gpr_mu_lock(&pollset->mu);
|
1127
1133
|
}
|
1128
1134
|
}
|
1129
1135
|
if (worker_hdl) *worker_hdl = nullptr;
|
1130
|
-
GRPC_LOG_IF_ERROR("pollset_work",
|
1136
|
+
GRPC_LOG_IF_ERROR("pollset_work", error);
|
1131
1137
|
return error;
|
1132
1138
|
}
|
1133
1139
|
|
@@ -1151,9 +1157,9 @@ static int poll_deadline_to_millis_timeout(grpc_core::Timestamp deadline) {
|
|
1151
1157
|
return static_cast<int>(n);
|
1152
1158
|
}
|
1153
1159
|
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1160
|
+
//******************************************************************************
|
1161
|
+
// pollset_set_posix.c
|
1162
|
+
//
|
1157
1163
|
|
1158
1164
|
static grpc_pollset_set* pollset_set_create(void) {
|
1159
1165
|
grpc_pollset_set* pollset_set =
|
@@ -1172,7 +1178,7 @@ static void pollset_set_destroy(grpc_pollset_set* pollset_set) {
|
|
1172
1178
|
grpc_pollset* pollset = pollset_set->pollsets[i];
|
1173
1179
|
gpr_mu_lock(&pollset->mu);
|
1174
1180
|
pollset->pollset_set_count--;
|
1175
|
-
|
1181
|
+
// check shutdown
|
1176
1182
|
if (pollset->shutting_down && !pollset->called_shutdown &&
|
1177
1183
|
!pollset_has_observers(pollset)) {
|
1178
1184
|
pollset->called_shutdown = 1;
|
@@ -1197,7 +1203,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
|
|
1197
1203
|
gpr_mu_lock(&pollset_set->mu);
|
1198
1204
|
if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
|
1199
1205
|
pollset_set->pollset_capacity =
|
1200
|
-
std::max(size_t
|
1206
|
+
std::max(size_t{8}, 2 * pollset_set->pollset_capacity);
|
1201
1207
|
pollset_set->pollsets = static_cast<grpc_pollset**>(gpr_realloc(
|
1202
1208
|
pollset_set->pollsets,
|
1203
1209
|
pollset_set->pollset_capacity * sizeof(*pollset_set->pollsets)));
|
@@ -1230,7 +1236,7 @@ static void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
|
|
1230
1236
|
gpr_mu_unlock(&pollset_set->mu);
|
1231
1237
|
gpr_mu_lock(&pollset->mu);
|
1232
1238
|
pollset->pollset_set_count--;
|
1233
|
-
|
1239
|
+
// check shutdown
|
1234
1240
|
if (pollset->shutting_down && !pollset->called_shutdown &&
|
1235
1241
|
!pollset_has_observers(pollset)) {
|
1236
1242
|
pollset->called_shutdown = 1;
|
@@ -1247,7 +1253,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* bag,
|
|
1247
1253
|
gpr_mu_lock(&bag->mu);
|
1248
1254
|
if (bag->pollset_set_count == bag->pollset_set_capacity) {
|
1249
1255
|
bag->pollset_set_capacity =
|
1250
|
-
std::max(size_t
|
1256
|
+
std::max(size_t{8}, 2 * bag->pollset_set_capacity);
|
1251
1257
|
bag->pollset_sets = static_cast<grpc_pollset_set**>(
|
1252
1258
|
gpr_realloc(bag->pollset_sets,
|
1253
1259
|
bag->pollset_set_capacity * sizeof(*bag->pollset_sets)));
|
@@ -1285,7 +1291,7 @@ static void pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
|
|
1285
1291
|
gpr_mu_lock(&pollset_set->mu);
|
1286
1292
|
if (pollset_set->fd_count == pollset_set->fd_capacity) {
|
1287
1293
|
pollset_set->fd_capacity =
|
1288
|
-
std::max(size_t
|
1294
|
+
std::max(size_t{8}, 2 * pollset_set->fd_capacity);
|
1289
1295
|
pollset_set->fds = static_cast<grpc_fd**>(
|
1290
1296
|
gpr_realloc(pollset_set->fds,
|
1291
1297
|
pollset_set->fd_capacity * sizeof(*pollset_set->fds)));
|
@@ -1318,9 +1324,9 @@ static void pollset_set_del_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
|
|
1318
1324
|
gpr_mu_unlock(&pollset_set->mu);
|
1319
1325
|
}
|
1320
1326
|
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1327
|
+
//******************************************************************************
|
1328
|
+
// event engine binding
|
1329
|
+
//
|
1324
1330
|
|
1325
1331
|
static bool is_any_background_poller_thread(void) { return false; }
|
1326
1332
|
|
@@ -1331,9 +1337,9 @@ static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
|
|
1331
1337
|
return false;
|
1332
1338
|
}
|
1333
1339
|
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1340
|
+
// Called by the child process's post-fork handler to close open fds, including
|
1341
|
+
// worker wakeup fds. This allows gRPC to shutdown in the child process without
|
1342
|
+
// interfering with connections or RPCs ongoing in the parent.
|
1337
1343
|
static void reset_event_manager_on_fork() {
|
1338
1344
|
gpr_mu_lock(&fork_fd_list_mu);
|
1339
1345
|
while (fork_fd_list_head != nullptr) {
|
@@ -1388,7 +1394,7 @@ const grpc_event_engine_vtable grpc_ev_poll_posix = {
|
|
1388
1394
|
|
1389
1395
|
is_any_background_poller_thread,
|
1390
1396
|
/* name = */ "poll",
|
1391
|
-
|
1397
|
+
// check_engine_available =
|
1392
1398
|
[](bool) {
|
1393
1399
|
if (!grpc_has_wakeup_fd()) {
|
1394
1400
|
gpr_log(GPR_ERROR, "Skipping poll because of no wakeup fd.");
|
@@ -1409,6 +1415,8 @@ const grpc_event_engine_vtable grpc_ev_poll_posix = {
|
|
1409
1415
|
/* shutdown_engine = */ shutdown_background_closure,
|
1410
1416
|
[]() {},
|
1411
1417
|
add_closure_to_background_poller,
|
1418
|
+
|
1419
|
+
fd_set_pre_allocated,
|
1412
1420
|
};
|
1413
1421
|
|
1414
1422
|
namespace {
|
@@ -1419,8 +1427,7 @@ int phony_poll(struct pollfd fds[], nfds_t nfds, int timeout) {
|
|
1419
1427
|
if (timeout == 0) {
|
1420
1428
|
return real_poll_function(fds, nfds, 0);
|
1421
1429
|
} else {
|
1422
|
-
|
1423
|
-
GPR_ASSERT(false);
|
1430
|
+
grpc_core::Crash("Attempted a blocking poll when declared non-polling.");
|
1424
1431
|
return -1;
|
1425
1432
|
}
|
1426
1433
|
}
|
@@ -1445,4 +1452,4 @@ const grpc_event_engine_vtable grpc_ev_none_posix = []() {
|
|
1445
1452
|
return v;
|
1446
1453
|
}();
|
1447
1454
|
|
1448
|
-
#endif
|
1455
|
+
#endif // GRPC_POSIX_SOCKET_EV_POLL
|