grpc 1.45.0 → 1.53.0
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 +437 -254
- 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/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +129 -39
- 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 -16
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +306 -0
- data/include/grpc/event_engine/slice_buffer.h +159 -0
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +4 -14
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
- data/include/grpc/impl/codegen/atm_windows.h +3 -108
- 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 +5 -83
- data/include/grpc/impl/codegen/connectivity_state.h +5 -21
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +4 -35
- data/include/grpc/impl/codegen/grpc_types.h +5 -797
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -699
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +4 -107
- 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 +827 -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 +31 -6
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/census/grpc_context.cc +19 -17
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +6 -4
- data/src/core/ext/filters/client_channel/backend_metric.cc +19 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +21 -11
- data/src/core/ext/filters/client_channel/backup_poller.cc +34 -34
- data/src/core/ext/filters/client_channel/backup_poller.h +26 -28
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +89 -44
- data/src/core/ext/filters/client_channel/client_channel.cc +557 -540
- data/src/core/ext/filters/client_channel/client_channel.h +70 -26
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -23
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -23
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -43
- data/src/core/ext/filters/client_channel/client_channel_factory.h +11 -11
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +22 -47
- 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} +33 -27
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +29 -23
- data/src/core/ext/filters/client_channel/connector.h +19 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +40 -54
- data/src/core/ext/filters/client_channel/dynamic_filters.h +20 -11
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +24 -21
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +137 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +29 -163
- data/src/core/ext/filters/client_channel/http_proxy.cc +130 -164
- data/src/core/ext/filters/client_channel/http_proxy.h +46 -22
- 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 +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +37 -16
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +18 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +71 -131
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +410 -375
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +15 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +9 -7
- 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 +27 -22
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +28 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +26 -25
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +338 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +174 -180
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +478 -479
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +491 -409
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -9
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +618 -642
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +261 -234
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +165 -143
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +280 -248
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +251 -187
- 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} +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +178 -256
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +212 -216
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +543 -584
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +369 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +22 -21
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +34 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +579 -376
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +50 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +31 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +89 -84
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +300 -209
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +82 -61
- 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 +20 -19
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +22 -22
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +86 -224
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +21 -34
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +19 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +135 -63
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +269 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +121 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +21 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +413 -303
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +184 -166
- data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
- data/src/core/ext/filters/client_channel/retry_service_config.cc +197 -229
- data/src/core/ext/filters/client_channel/retry_service_config.h +29 -26
- data/src/core/ext/filters/client_channel/retry_throttle.cc +28 -37
- data/src/core/ext/filters/client_channel/retry_throttle.h +36 -29
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +34 -17
- data/src/core/ext/filters/client_channel/subchannel.cc +336 -388
- data/src/core/ext/filters/client_channel/subchannel.h +112 -82
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +17 -77
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +41 -47
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +94 -76
- data/src/core/ext/filters/deadline/deadline_filter.h +14 -12
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +154 -372
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +41 -9
- 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} +34 -13
- data/src/core/ext/filters/http/client/http_client_filter.cc +119 -477
- data/src/core/ext/filters/http/client/http_client_filter.h +55 -25
- data/src/core/ext/filters/http/client_authority_filter.cc +48 -58
- data/src/core/ext/filters/http/client_authority_filter.h +32 -28
- data/src/core/ext/filters/http/http_filters_plugin.cc +46 -52
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +111 -385
- data/src/core/ext/filters/http/server/http_server_filter.h +58 -24
- data/src/core/ext/filters/message_size/message_size_filter.cc +117 -137
- data/src/core/ext/filters/message_size/message_size_filter.h +34 -17
- data/src/core/ext/filters/rbac/rbac_filter.cc +29 -16
- data/src/core/ext/filters/rbac/rbac_filter.h +11 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +736 -523
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +18 -7
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +20 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +90 -202
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -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 +24 -24
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +186 -241
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +38 -30
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +209 -215
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +26 -26
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +24 -24
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +35 -34
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +31 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +29 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +893 -1079
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +28 -23
- data/src/core/ext/transport/chttp2/transport/context_list.cc +23 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +32 -29
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +350 -300
- data/src/core/ext/transport/chttp2/transport/flow_control.h +248 -325
- data/src/core/ext/transport/chttp2/transport/frame.h +22 -26
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +85 -234
- data/src/core/ext/transport/chttp2/transport/frame_data.h +38 -61
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +41 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +24 -22
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +31 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +25 -22
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +35 -26
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +24 -21
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +46 -77
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +27 -23
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +34 -33
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +24 -21
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +169 -220
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +59 -61
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +14 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +114 -542
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +31 -24
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +75 -67
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +70 -48
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -38
- 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 +21 -21
- data/src/core/ext/transport/chttp2/transport/internal.h +250 -298
- data/src/core/ext/transport/chttp2/transport/parsing.cc +365 -132
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +30 -30
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
- data/src/core/ext/transport/chttp2/transport/stream_map.h +34 -33
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -34
- data/src/core/ext/transport/chttp2/transport/writing.cc +144 -106
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +227 -274
- data/src/core/ext/transport/inproc/inproc_transport.h +23 -21
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +173 -73
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +39 -36
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +210 -85
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +29 -344
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +189 -1489
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +56 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +24 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +19 -6
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +229 -82
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +16 -4
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +26 -4
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +379 -140
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +140 -126
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +824 -301
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +114 -29
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +195 -191
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1042 -412
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +16 -4
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +171 -42
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +517 -202
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +61 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +333 -66
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +20 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +93 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +615 -213
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +417 -79
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +20 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +16 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +447 -157
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +98 -66
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +545 -191
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +33 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +108 -87
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +502 -149
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +42 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +24 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +110 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +64 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +20 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +118 -49
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +39 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +242 -87
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +226 -105
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +86 -53
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +475 -141
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +379 -160
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +16 -12
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +77 -16
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +50 -8
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +253 -102
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +229 -92
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +74 -55
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +494 -160
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +38 -30
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +232 -124
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +458 -351
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2879 -947
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +67 -22
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +79 -54
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +454 -133
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +21 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +16 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +38 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +33 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +89 -38
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +58 -21
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +50 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +9 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +43 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +16 -8
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +101 -38
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +167 -71
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +16 -8
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +88 -16
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +71 -17
- 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/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +184 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1091 -361
- 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/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +56 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +327 -130
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +88 -31
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +83 -56
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +472 -136
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +35 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +171 -54
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +917 -134
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +59 -25
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -33
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +205 -76
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +23 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +62 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +36 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +55 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +26 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +30 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +58 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +82 -29
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +49 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +99 -36
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +118 -44
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +120 -40
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +46 -16
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +25 -8
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +36 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +23 -6
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +477 -185
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +512 -182
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +134 -49
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +25 -9
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +183 -181
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1332 -488
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +16 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +126 -46
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +16 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +81 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +25 -9
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +89 -30
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +55 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +424 -169
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +32 -8
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +18 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +204 -76
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +63 -22
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +115 -16
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +29 -4
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +33 -8
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +26 -4
- data/src/core/ext/upb-generated/validate/validate.upb.c +264 -253
- data/src/core/ext/upb-generated/validate/validate.upb.h +1974 -709
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +115 -16
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +29 -4
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +94 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +26 -4
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +9 -2
- 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/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +50 -16
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +33 -12
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +16 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +83 -34
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +22 -4
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +14 -13
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +84 -28
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
- 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/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +309 -121
- 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/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +31 -12
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +82 -29
- 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 +3 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +16 -4
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +199 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +149 -129
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +187 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +168 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +190 -186
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +164 -137
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -129
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +82 -68
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +828 -747
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +20 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
- 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/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +483 -445
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -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/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +211 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +156 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -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 +75 -3
- data/src/core/ext/xds/certificate_provider_store.h +30 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +17 -10
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +12 -4
- data/src/core/ext/xds/upb_utils.h +3 -25
- data/src/core/ext/xds/xds_api.cc +106 -192
- data/src/core/ext/xds/xds_api.h +41 -39
- data/src/core/ext/xds/xds_bootstrap.cc +5 -537
- data/src/core/ext/xds/xds_bootstrap.h +42 -95
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +36 -25
- data/src/core/ext/xds/xds_certificate_provider.h +36 -4
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +17 -7
- data/src/core/ext/xds/xds_channel_stack_modifier.h +16 -4
- data/src/core/ext/xds/xds_client.cc +885 -1360
- data/src/core/ext/xds/xds_client.h +69 -65
- data/src/core/ext/xds/xds_client_grpc.cc +235 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +24 -25
- data/src/core/ext/xds/xds_client_stats.h +26 -24
- data/src/core/ext/xds/xds_cluster.cc +505 -247
- data/src/core/ext/xds/xds_cluster.h +69 -40
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +132 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +97 -0
- data/src/core/ext/xds/xds_common_types.cc +238 -123
- data/src/core/ext/xds/xds_common_types.h +29 -16
- data/src/core/ext/xds/xds_endpoint.cc +266 -156
- data/src/core/ext/xds/xds_endpoint.h +19 -15
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +109 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +68 -59
- data/src/core/ext/xds/xds_http_fault_filter.h +19 -25
- data/src/core/ext/xds/xds_http_filters.cc +70 -71
- data/src/core/ext/xds/xds_http_filters.h +73 -25
- data/src/core/ext/xds/xds_http_rbac_filter.cc +168 -225
- data/src/core/ext/xds/xds_http_rbac_filter.h +22 -18
- 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 +334 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
- data/src/core/ext/xds/xds_listener.cc +573 -481
- data/src/core/ext/xds/xds_listener.h +57 -51
- data/src/core/ext/xds/xds_resource_type.h +28 -22
- data/src/core/ext/xds/xds_resource_type_impl.h +18 -17
- data/src/core/ext/xds/xds_route_config.cc +638 -479
- data/src/core/ext/xds/xds_route_config.h +79 -42
- data/src/core/ext/xds/xds_routing.cc +21 -7
- data/src/core/ext/xds/xds_routing.h +17 -12
- data/src/core/ext/xds/xds_server_config_fetcher.cc +244 -200
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +52 -52
- data/src/core/lib/address_utils/parse_address.h +46 -42
- data/src/core/lib/address_utils/sockaddr_utils.cc +90 -54
- data/src/core/lib/address_utils/sockaddr_utils.h +45 -40
- data/src/core/lib/avl/avl.h +100 -13
- data/src/core/lib/backoff/backoff.cc +19 -21
- data/src/core/lib/backoff/backoff.h +21 -21
- data/src/core/lib/channel/call_finalization.h +6 -4
- data/src/core/lib/channel/call_tracer.h +27 -9
- data/src/core/lib/channel/channel_args.cc +268 -101
- data/src/core/lib/channel/channel_args.h +461 -56
- data/src/core/lib/channel/channel_args_preconditioning.cc +6 -11
- data/src/core/lib/channel/channel_args_preconditioning.h +7 -7
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +92 -52
- data/src/core/lib/channel/channel_stack.h +186 -140
- data/src/core/lib/channel/channel_stack_builder.cc +26 -104
- data/src/core/lib/channel/channel_stack_builder.h +45 -31
- data/src/core/lib/channel/channel_stack_builder_impl.cc +126 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/channel_trace.cc +29 -36
- data/src/core/lib/channel/channel_trace.h +27 -24
- data/src/core/lib/channel/channelz.cc +50 -65
- data/src/core/lib/channel/channelz.h +50 -33
- data/src/core/lib/channel/channelz_registry.cc +28 -36
- data/src/core/lib/channel/channelz_registry.h +31 -30
- data/src/core/lib/channel/connected_channel.cc +1267 -78
- data/src/core/lib/channel/connected_channel.h +22 -23
- data/src/core/lib/channel/context.h +25 -21
- data/src/core/lib/channel/promise_based_filter.cc +2155 -303
- data/src/core/lib/channel/promise_based_filter.h +636 -122
- data/src/core/lib/channel/status_util.cc +64 -17
- data/src/core/lib/channel/status_util.h +38 -24
- data/src/core/lib/compression/compression.cc +24 -19
- data/src/core/lib/compression/compression_internal.cc +89 -70
- data/src/core/lib/compression/compression_internal.h +28 -27
- data/src/core/lib/compression/message_compress.cc +28 -26
- data/src/core/lib/compression/message_compress.h +28 -29
- data/src/core/lib/config/core_configuration.cc +8 -1
- data/src/core/lib/config/core_configuration.h +86 -39
- 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/debug/histogram_view.h +37 -0
- data/src/core/lib/debug/stats.cc +48 -152
- data/src/core/lib/debug/stats.h +50 -57
- data/src/core/lib/debug/stats_data.cc +302 -649
- data/src/core/lib/debug/stats_data.h +293 -548
- data/src/core/lib/debug/trace.cc +18 -20
- data/src/core/lib/debug/trace.h +27 -48
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +16 -17
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -9
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +99 -0
- data/src/core/lib/event_engine/default_event_engine.h +73 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +24 -3
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine_factory.h} +6 -9
- data/src/core/lib/event_engine/event_engine.cc +3 -30
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/forkable.cc +106 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/handle_containers.h +74 -0
- data/src/core/lib/event_engine/memory_allocator.cc +11 -3
- data/src/core/lib/event_engine/poller.h +62 -0
- data/src/core/lib/event_engine/posix.h +158 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +899 -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/posix_engine/event_poller_posix_default.h +33 -0
- 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 +1305 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
- 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 +289 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -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 +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
- 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/{iomgr/event_engine/promise.h → event_engine/posix_engine/wakeup_fd_pipe.h} +19 -25
- 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/resolved_address.cc +23 -2
- data/src/core/lib/{iomgr/event_engine → event_engine}/resolved_address_internal.h +5 -8
- data/src/core/lib/event_engine/shim.cc +56 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- data/src/core/lib/event_engine/slice.cc +103 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool.cc +253 -0
- data/src/core/lib/event_engine/thread_pool.h +141 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/event_engine/trace.cc} +9 -13
- data/src/core/lib/event_engine/trace.h +43 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +44 -0
- data/src/core/lib/event_engine/windows/iocp.cc +140 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
- data/src/core/lib/event_engine/windows/win_socket.h +129 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
- data/src/core/lib/experiments/config.cc +161 -0
- data/src/core/lib/experiments/config.h +53 -0
- data/src/core/lib/experiments/experiments.cc +81 -0
- data/src/core/lib/experiments/experiments.h +117 -0
- data/src/core/lib/gpr/alloc.cc +19 -25
- data/src/core/lib/gpr/alloc.h +20 -20
- 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 +30 -17
- 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 -25
- data/src/core/lib/gpr/spinlock.h +20 -20
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +61 -61
- data/src/core/lib/gpr/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +25 -52
- 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 +36 -40
- data/src/core/lib/gpr/sync_posix.cc +22 -34
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +34 -30
- data/src/core/lib/gpr/time_posix.cc +41 -45
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +21 -22
- data/src/core/lib/gpr/time_windows.cc +35 -29
- data/src/core/lib/gpr/tmpfile.h +24 -24
- 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 +28 -29
- data/src/core/lib/gpr/useful.h +83 -30
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +20 -20
- data/src/core/lib/gprpp/bitset.h +47 -17
- data/src/core/lib/gprpp/chunked_vector.h +7 -3
- data/src/core/lib/gprpp/construct_destruct.h +4 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +7 -3
- 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 +60 -31
- data/src/core/lib/gprpp/dual_ref_counted.h +4 -7
- data/src/core/lib/gprpp/env.h +53 -0
- data/src/core/lib/gprpp/env_linux.cc +80 -0
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc → lib/gprpp/env_posix.cc} +25 -9
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +21 -22
- data/src/core/lib/gprpp/fork.cc +58 -53
- data/src/core/lib/gprpp/fork.h +29 -35
- data/src/core/lib/gprpp/global_config.h +22 -24
- data/src/core/lib/gprpp/global_config_custom.h +20 -20
- data/src/core/lib/gprpp/global_config_env.cc +28 -25
- data/src/core/lib/gprpp/global_config_env.h +29 -27
- data/src/core/lib/gprpp/global_config_generic.h +21 -25
- data/src/core/lib/gprpp/host_port.cc +30 -26
- data/src/core/lib/gprpp/host_port.h +32 -31
- 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 +21 -89
- data/src/core/lib/gprpp/match.h +75 -0
- data/src/core/lib/gprpp/memory.h +22 -26
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +21 -21
- data/src/core/lib/gprpp/no_destruct.h +95 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/orphanable.h +22 -25
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/ref_counted.h +24 -24
- data/src/core/lib/gprpp/ref_counted_ptr.h +42 -55
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/stat.h +3 -5
- data/src/core/lib/gprpp/stat_posix.cc +10 -4
- data/src/core/lib/gprpp/stat_windows.cc +4 -2
- data/src/core/lib/gprpp/status_helper.cc +56 -20
- data/src/core/lib/gprpp/status_helper.h +13 -5
- data/src/core/lib/gprpp/strerror.cc +43 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +26 -24
- data/src/core/lib/gprpp/table.h +22 -4
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/thd.h +25 -28
- data/src/core/lib/gprpp/thd_posix.cc +33 -32
- data/src/core/lib/gprpp/thd_windows.cc +28 -26
- data/src/core/lib/gprpp/time.cc +64 -9
- data/src/core/lib/gprpp/time.h +79 -5
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +3 -3
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +127 -0
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- data/src/core/lib/handshaker/proxy_mapper.h +53 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/format_request.cc +54 -24
- data/src/core/lib/http/format_request.h +23 -21
- data/src/core/lib/http/httpcli.cc +139 -141
- data/src/core/lib/http/httpcli.h +86 -38
- data/src/core/lib/http/httpcli_security_connector.cc +53 -45
- data/src/core/lib/http/httpcli_ssl_credentials.h +6 -4
- data/src/core/lib/http/parser.cc +144 -85
- data/src/core/lib/http/parser.h +51 -35
- data/src/core/lib/iomgr/block_annotate.h +23 -23
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +123 -101
- data/src/core/lib/iomgr/call_combiner.cc +32 -64
- data/src/core/lib/iomgr/call_combiner.h +24 -25
- data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
- data/src/core/lib/iomgr/cfstream_handle.h +25 -25
- data/src/core/lib/iomgr/{event_engine/pollset.h → closure.cc} +9 -7
- data/src/core/lib/iomgr/closure.h +95 -58
- data/src/core/lib/iomgr/combiner.cc +20 -39
- data/src/core/lib/iomgr/combiner.h +20 -20
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
- data/src/core/lib/iomgr/endpoint.cc +21 -21
- data/src/core/lib/iomgr/endpoint.h +53 -51
- data/src/core/lib/iomgr/endpoint_cfstream.cc +51 -47
- data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
- data/src/core/lib/iomgr/endpoint_pair.h +20 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +34 -27
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +30 -21
- data/src/core/lib/iomgr/error.cc +51 -834
- data/src/core/lib/iomgr/error.h +45 -317
- data/src/core/lib/iomgr/error_cfstream.cc +18 -23
- data/src/core/lib/iomgr/error_cfstream.h +21 -21
- data/src/core/lib/iomgr/ev_apple.cc +21 -21
- data/src/core/lib/iomgr/ev_apple.h +21 -21
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +263 -248
- data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +296 -271
- data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
- data/src/core/lib/iomgr/ev_posix.cc +88 -122
- data/src/core/lib/iomgr/ev_posix.h +93 -87
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/{event_engine → event_engine_shims}/closure.cc +15 -30
- data/src/core/lib/iomgr/{event_engine → event_engine_shims}/closure.h +10 -13
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.cc +34 -56
- data/src/core/lib/iomgr/exec_ctx.h +152 -177
- data/src/core/lib/iomgr/executor.cc +21 -31
- data/src/core/lib/iomgr/executor.h +27 -30
- data/src/core/lib/iomgr/fork_posix.cc +31 -28
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +20 -20
- 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 +22 -22
- 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 +41 -48
- data/src/core/lib/iomgr/internal_errqueue.h +84 -89
- data/src/core/lib/iomgr/iocp_windows.cc +23 -23
- data/src/core/lib/iomgr/iocp_windows.h +21 -21
- data/src/core/lib/iomgr/iomgr.cc +25 -20
- data/src/core/lib/iomgr/iomgr.h +35 -35
- data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +28 -28
- data/src/core/lib/iomgr/iomgr_posix.cc +21 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +21 -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 +22 -22
- data/src/core/lib/iomgr/lockfree_event.cc +114 -131
- data/src/core/lib/iomgr/lockfree_event.h +23 -23
- data/src/core/lib/iomgr/nameser.h +86 -86
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +29 -29
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +55 -55
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +26 -28
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
- data/src/core/lib/iomgr/pollset_windows.cc +32 -31
- data/src/core/lib/iomgr/pollset_windows.h +24 -24
- data/src/core/lib/iomgr/port.h +59 -39
- data/src/core/lib/iomgr/python_util.h +24 -24
- data/src/core/lib/iomgr/resolve_address.cc +34 -20
- data/src/core/lib/iomgr/resolve_address.h +73 -43
- data/src/core/lib/iomgr/resolve_address_impl.h +7 -7
- data/src/core/lib/iomgr/resolve_address_posix.cc +81 -62
- data/src/core/lib/iomgr/resolve_address_posix.h +26 -10
- data/src/core/lib/iomgr/resolve_address_windows.cc +64 -38
- data/src/core/lib/iomgr/resolve_address_windows.h +26 -10
- data/src/core/lib/iomgr/resolved_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr.h +25 -26
- data/src/core/lib/iomgr/sockaddr_posix.h +23 -21
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +20 -18
- data/src/core/lib/iomgr/sockaddr_windows.h +23 -21
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +39 -39
- data/src/core/lib/iomgr/socket_utils.h +27 -27
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +82 -101
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
- data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
- 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 +59 -61
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/iomgr/systemd_utils.h +33 -0
- data/src/core/lib/iomgr/tcp_client.cc +28 -24
- data/src/core/lib/iomgr/tcp_client.h +49 -38
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +46 -35
- data/src/core/lib/iomgr/tcp_client_posix.cc +244 -106
- data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
- data/src/core/lib/iomgr/tcp_client_windows.cc +73 -53
- data/src/core/lib/iomgr/tcp_posix.cc +562 -361
- data/src/core/lib/iomgr/tcp_posix.h +32 -30
- data/src/core/lib/iomgr/tcp_server.cc +33 -24
- data/src/core/lib/iomgr/tcp_server.h +78 -69
- data/src/core/lib/iomgr/tcp_server_posix.cc +402 -145
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +120 -82
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +46 -43
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +116 -118
- data/src/core/lib/iomgr/tcp_windows.cc +116 -98
- data/src/core/lib/iomgr/tcp_windows.h +34 -35
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +68 -68
- data/src/core/lib/iomgr/timer_generic.cc +125 -134
- data/src/core/lib/iomgr/timer_generic.h +21 -21
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +22 -22
- data/src/core/lib/iomgr/timer_manager.cc +31 -31
- data/src/core/lib/iomgr/timer_manager.h +27 -27
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +21 -21
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
- 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 +20 -20
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +33 -30
- data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
- data/src/core/lib/json/json.h +23 -27
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/json/json_args.h} +13 -10
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +217 -0
- data/src/core/lib/json/json_object_loader.h +634 -0
- data/src/core/lib/json/json_reader.cc +123 -90
- data/src/core/lib/json/json_util.cc +14 -34
- data/src/core/lib/json/json_util.h +19 -10
- data/src/core/lib/json/json_writer.cc +62 -57
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +30 -60
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +47 -62
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +57 -52
- data/src/core/lib/matchers/matchers.cc +12 -7
- data/src/core/lib/matchers/matchers.h +5 -3
- data/src/core/lib/promise/activity.cc +23 -8
- data/src/core/lib/promise/activity.h +116 -58
- data/src/core/lib/promise/arena_promise.h +115 -72
- data/src/core/lib/promise/context.h +18 -11
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +28 -33
- data/src/core/lib/promise/detail/promise_factory.h +61 -14
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +33 -4
- data/src/core/lib/promise/detail/switch.h +21 -21
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
- data/src/core/lib/promise/if.h +195 -0
- data/src/core/lib/promise/interceptor_list.h +308 -0
- data/src/core/lib/promise/intra_activity_waiter.h +55 -0
- data/src/core/lib/promise/latch.h +191 -0
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +4 -6
- data/src/core/lib/promise/pipe.h +608 -0
- data/src/core/lib/promise/poll.h +129 -11
- data/src/core/lib/promise/promise.h +5 -5
- data/src/core/lib/promise/race.h +6 -10
- data/src/core/lib/promise/seq.h +32 -14
- data/src/core/lib/promise/sleep.cc +58 -42
- data/src/core/lib/promise/sleep.h +44 -26
- data/src/core/lib/promise/trace.cc +20 -0
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/promise/trace.h} +6 -8
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +41 -23
- data/src/core/lib/resolver/resolver.cc +17 -59
- data/src/core/lib/resolver/resolver.h +21 -18
- data/src/core/lib/resolver/resolver_factory.h +11 -10
- data/src/core/lib/resolver/resolver_registry.cc +17 -9
- data/src/core/lib/resolver/resolver_registry.h +15 -5
- data/src/core/lib/resolver/server_address.cc +46 -34
- data/src/core/lib/resolver/server_address.h +36 -35
- data/src/core/lib/resource_quota/api.cc +25 -29
- data/src/core/lib/resource_quota/api.h +14 -5
- data/src/core/lib/resource_quota/arena.cc +85 -27
- data/src/core/lib/resource_quota/arena.h +197 -25
- data/src/core/lib/resource_quota/memory_quota.cc +322 -101
- data/src/core/lib/resource_quota/memory_quota.h +191 -56
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/resource_quota/resource_quota.h +20 -4
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +7 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +17 -3
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
- data/src/core/lib/security/authorization/evaluate_args.h +9 -6
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +5 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +10 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +26 -13
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +20 -10
- data/src/core/lib/security/authorization/matchers.cc +44 -30
- data/src/core/lib/security/authorization/matchers.h +10 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +6 -2
- data/src/core/lib/security/authorization/rbac_policy.h +10 -3
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +9 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/context/security_context.cc +27 -25
- data/src/core/lib/security/context/security_context.h +64 -35
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +35 -27
- data/src/core/lib/security/credentials/alts/alts_credentials.h +65 -57
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
- 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 +20 -22
- 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 +38 -39
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
- data/src/core/lib/security/credentials/call_creds_util.cc +13 -3
- data/src/core/lib/security/credentials/call_creds_util.h +6 -5
- data/src/core/lib/security/credentials/channel_creds_registry.h +10 -4
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +13 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +46 -41
- data/src/core/lib/security/credentials/composite/composite_credentials.h +51 -38
- data/src/core/lib/security/credentials/credentials.cc +23 -26
- data/src/core/lib/security/credentials/credentials.h +91 -94
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +202 -74
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +21 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +86 -68
- data/src/core/lib/security/credentials/external/external_account_credentials.h +14 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -26
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +44 -31
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +48 -48
- data/src/core/lib/security/credentials/fake/fake_credentials.h +57 -47
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +148 -112
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +35 -29
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +35 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.h +37 -23
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +32 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +40 -29
- data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +37 -30
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +41 -23
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +113 -89
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +49 -47
- data/src/core/lib/security/credentials/local/local_credentials.cc +36 -30
- data/src/core/lib/security/credentials/local/local_credentials.h +36 -26
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +107 -91
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +56 -27
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +42 -36
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +55 -29
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +48 -44
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +43 -23
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +65 -48
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +69 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +44 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +75 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +22 -23
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +69 -98
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +55 -50
- data/src/core/lib/security/credentials/tls/tls_credentials.h +33 -30
- data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +77 -81
- data/src/core/lib/security/credentials/xds/xds_credentials.h +50 -10
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +60 -54
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +49 -47
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +75 -79
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +25 -26
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +15 -6
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +26 -15
- data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +22 -20
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +43 -38
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +66 -49
- data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
- data/src/core/lib/security/security_connector/security_connector.cc +37 -35
- data/src/core/lib/security/security_connector/security_connector.h +67 -45
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +59 -48
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
- data/src/core/lib/security/security_connector/ssl_utils.cc +47 -39
- data/src/core/lib/security/security_connector/ssl_utils.h +45 -42
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +62 -58
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +48 -28
- data/src/core/lib/security/transport/auth_filters.h +59 -30
- data/src/core/lib/security/transport/client_auth_filter.cc +73 -48
- data/src/core/lib/security/transport/secure_endpoint.cc +305 -181
- data/src/core/lib/security/transport/secure_endpoint.h +29 -28
- data/src/core/lib/security/transport/security_handshaker.cc +142 -110
- data/src/core/lib/security/transport/security_handshaker.h +28 -23
- data/src/core/lib/security/transport/server_auth_filter.cc +157 -266
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +20 -20
- data/src/core/lib/security/util/json_util.cc +24 -24
- data/src/core/lib/security/util/json_util.h +21 -23
- data/src/core/lib/service_config/service_config.h +19 -12
- data/src/core/lib/service_config/service_config_call_data.h +15 -5
- data/src/core/lib/service_config/service_config_impl.cc +111 -150
- data/src/core/lib/service_config/service_config_impl.h +27 -27
- data/src/core/lib/service_config/service_config_parser.cc +16 -28
- data/src/core/lib/service_config/service_config_parser.h +18 -19
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +34 -32
- data/src/core/lib/slice/percent_encoding.cc +24 -30
- data/src/core/lib/slice/percent_encoding.h +28 -34
- data/src/core/lib/slice/slice.cc +59 -46
- data/src/core/lib/slice/slice.h +64 -20
- data/src/core/lib/slice/slice_buffer.cc +136 -76
- data/src/core/lib/slice/slice_buffer.h +168 -0
- data/src/core/lib/slice/slice_internal.h +38 -45
- data/src/core/lib/slice/slice_refcount.cc +3 -18
- data/src/core/lib/slice/slice_refcount.h +53 -19
- data/src/core/lib/slice/slice_string_helpers.cc +17 -33
- data/src/core/lib/slice/slice_string_helpers.h +23 -30
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +25 -25
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/byte_buffer.cc +26 -21
- data/src/core/lib/surface/byte_buffer_reader.cc +24 -24
- data/src/core/lib/surface/call.cc +3000 -1131
- data/src/core/lib/surface/call.h +135 -56
- data/src/core/lib/surface/call_details.cc +22 -23
- data/src/core/lib/surface/call_log_batch.cc +25 -18
- data/src/core/lib/surface/call_test_only.h +34 -31
- data/src/core/lib/surface/call_trace.cc +123 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +218 -284
- data/src/core/lib/surface/channel.h +137 -90
- data/src/core/lib/surface/channel_init.cc +19 -20
- data/src/core/lib/surface/channel_init.h +24 -26
- data/src/core/lib/surface/channel_ping.cc +26 -20
- data/src/core/lib/surface/channel_stack_type.cc +21 -19
- data/src/core/lib/surface/channel_stack_type.h +22 -22
- data/src/core/lib/surface/completion_queue.cc +200 -222
- data/src/core/lib/surface/completion_queue.h +42 -40
- data/src/core/lib/surface/completion_queue_factory.cc +34 -28
- data/src/core/lib/surface/completion_queue_factory.h +21 -23
- data/src/core/lib/surface/event_string.cc +19 -24
- data/src/core/lib/surface/event_string.h +21 -21
- data/src/core/lib/surface/init.cc +57 -114
- data/src/core/lib/surface/init.h +20 -28
- data/src/core/lib/surface/init_internally.cc +25 -0
- data/src/core/lib/surface/init_internally.h +37 -0
- data/src/core/lib/surface/lame_client.cc +87 -130
- data/src/core/lib/surface/lame_client.h +62 -24
- data/src/core/lib/surface/metadata_array.cc +18 -17
- data/src/core/lib/surface/server.cc +409 -188
- data/src/core/lib/surface/server.h +57 -26
- data/src/core/lib/surface/validate_metadata.cc +34 -48
- data/src/core/lib/surface/validate_metadata.h +24 -21
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +19 -19
- data/src/core/lib/transport/bdp_estimator.h +22 -24
- data/src/core/lib/transport/connectivity_state.cc +24 -23
- data/src/core/lib/transport/connectivity_state.h +24 -25
- data/src/core/lib/transport/error_utils.cc +57 -79
- data/src/core/lib/transport/error_utils.h +29 -25
- data/src/core/lib/{channel → transport}/handshaker.cc +75 -58
- data/src/core/lib/{channel → transport}/handshaker.h +59 -48
- data/src/core/lib/transport/handshaker_factory.h +74 -0
- data/src/core/lib/transport/handshaker_registry.cc +61 -0
- data/src/core/lib/transport/handshaker_registry.h +69 -0
- data/src/core/lib/transport/http2_errors.h +22 -22
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +78 -65
- data/src/core/lib/transport/http_connect_handshaker.h +42 -0
- data/src/core/lib/transport/metadata_batch.cc +305 -0
- data/src/core/lib/transport/metadata_batch.h +269 -302
- data/src/core/lib/transport/parsed_metadata.cc +2 -4
- data/src/core/lib/transport/parsed_metadata.h +17 -8
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +27 -27
- data/src/core/lib/transport/status_conversion.cc +23 -23
- data/src/core/lib/transport/status_conversion.h +24 -24
- data/src/core/lib/transport/tcp_connect_handshaker.cc +245 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +24 -28
- data/src/core/lib/transport/timeout_encoding.h +25 -21
- data/src/core/lib/transport/transport.cc +97 -57
- data/src/core/lib/transport/transport.h +252 -207
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +59 -48
- data/src/core/lib/transport/transport_op_string.cc +40 -39
- data/src/core/lib/uri/uri_parser.cc +12 -4
- data/src/core/lib/uri/uri_parser.h +3 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +62 -73
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +20 -39
- 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 +336 -336
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
- 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 +82 -83
- 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 +169 -169
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +117 -97
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +53 -45
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +38 -38
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +105 -104
- 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 +40 -41
- 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 +35 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
- 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 +55 -56
- 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 +141 -142
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +67 -58
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
- data/src/core/tsi/fake_transport_security.cc +146 -110
- data/src/core/tsi/fake_transport_security.h +36 -30
- data/src/core/tsi/local_transport_security.cc +43 -38
- data/src/core/tsi/local_transport_security.h +33 -33
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +23 -21
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +21 -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 +31 -22
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +27 -20
- data/src/core/tsi/ssl_transport_security.cc +356 -390
- data/src/core/tsi/ssl_transport_security.h +210 -201
- 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 +27 -27
- data/src/core/tsi/transport_security.cc +44 -32
- data/src/core/tsi/transport_security.h +49 -48
- data/src/core/tsi/transport_security_grpc.cc +23 -22
- data/src/core/tsi/transport_security_grpc.h +44 -41
- data/src/core/tsi/transport_security_interface.h +346 -332
- data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -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.gcc +1 -1
- data/src/ruby/ext/grpc/extconf.rb +98 -20
- 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 +60 -60
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -6
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/src/ruby/spec/channel_spec.rb +5 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
- data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +221 -39
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- 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/abseil-cpp/absl/container/fixed_array.h +9 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
- data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +23 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +116 -23
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -13
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +41 -11
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +1 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -2
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +3 -24
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/status.cc +193 -14
- data/third_party/abseil-cpp/absl/status/status.h +24 -14
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
- data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +19 -43
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +18 -15
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +127 -30
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +42 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -103
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
- data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -11
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +268 -169
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +31 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
- 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/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +188 -76
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +128 -57
- data/third_party/upb/upb/def.h +20 -4
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +43 -28
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +780 -0
- data/third_party/upb/upb/json_encode.h +65 -0
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +6 -68
- data/third_party/upb/upb/msg.h +2 -46
- data/third_party/upb/upb/msg_internal.h +77 -58
- data/third_party/upb/upb/port_def.inc +10 -1
- data/third_party/upb/upb/port_undef.inc +2 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +12 -8
- data/third_party/upb/upb/table_internal.h +3 -350
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +8 -167
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +975 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +183 -129
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +6 -4
- data/third_party/zlib/gzread.c +8 -12
- data/third_party/zlib/gzwrite.c +26 -14
- data/third_party/zlib/infback.c +12 -8
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +44 -10
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +85 -107
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +129 -106
- data/third_party/zlib/zutil.c +11 -9
- data/third_party/zlib/zutil.h +13 -9
- metadata +424 -135
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -42
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -48
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
- data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -186
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -179
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -456
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -386
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -67
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -57
- data/src/core/lib/channel/handshaker_factory.h +0 -50
- data/src/core/lib/channel/handshaker_registry.cc +0 -50
- data/src/core/lib/channel/handshaker_registry.h +0 -71
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gpr/env.h +0 -40
- data/src/core/lib/gpr/env_linux.cc +0 -75
- data/src/core/lib/gpr/env_posix.cc +0 -46
- data/src/core/lib/gpr/env_windows.cc +0 -74
- 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/string_windows.h +0 -32
- data/src/core/lib/gpr/tls.h +0 -157
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +0 -32
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_refcount_base.h +0 -61
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/transport/byte_stream.cc +0 -162
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -1,25 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2015 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
|
|
21
|
-
#include <grpc/impl/
|
21
|
+
#include <grpc/impl/grpc_types.h>
|
22
22
|
|
23
|
+
#include "src/core/lib/gprpp/global_config_generic.h"
|
24
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
23
25
|
#include "src/core/lib/iomgr/port.h"
|
24
26
|
|
25
27
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
@@ -47,20 +49,25 @@
|
|
47
49
|
#include <grpc/support/time.h>
|
48
50
|
|
49
51
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
50
|
-
#include "src/core/lib/
|
52
|
+
#include "src/core/lib/debug/event_log.h"
|
51
53
|
#include "src/core/lib/debug/stats.h"
|
54
|
+
#include "src/core/lib/debug/stats_data.h"
|
52
55
|
#include "src/core/lib/debug/trace.h"
|
56
|
+
#include "src/core/lib/experiments/experiments.h"
|
53
57
|
#include "src/core/lib/gpr/string.h"
|
54
58
|
#include "src/core/lib/gpr/useful.h"
|
59
|
+
#include "src/core/lib/gprpp/crash.h"
|
60
|
+
#include "src/core/lib/gprpp/strerror.h"
|
55
61
|
#include "src/core/lib/gprpp/sync.h"
|
56
62
|
#include "src/core/lib/iomgr/buffer_list.h"
|
57
63
|
#include "src/core/lib/iomgr/ev_posix.h"
|
64
|
+
#include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
|
58
65
|
#include "src/core/lib/iomgr/executor.h"
|
59
66
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
60
67
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
61
|
-
#include "src/core/lib/profiling/timers.h"
|
62
68
|
#include "src/core/lib/resource_quota/api.h"
|
63
69
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
70
|
+
#include "src/core/lib/resource_quota/trace.h"
|
64
71
|
#include "src/core/lib/slice/slice_internal.h"
|
65
72
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
66
73
|
|
@@ -104,7 +111,7 @@ class TcpZerocopySendRecord {
|
|
104
111
|
|
105
112
|
~TcpZerocopySendRecord() {
|
106
113
|
AssertEmpty();
|
107
|
-
|
114
|
+
grpc_slice_buffer_destroy(&buf_);
|
108
115
|
}
|
109
116
|
|
110
117
|
// Given the slices that we wish to send, and the current offset into the
|
@@ -172,7 +179,7 @@ class TcpZerocopySendRecord {
|
|
172
179
|
// reference to the underlying data since we no longer need it.
|
173
180
|
void AllSendsComplete() {
|
174
181
|
GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0);
|
175
|
-
|
182
|
+
grpc_slice_buffer_reset_and_unref(&buf_);
|
176
183
|
}
|
177
184
|
|
178
185
|
grpc_slice_buffer buf_;
|
@@ -231,7 +238,11 @@ class TcpZerocopySendCtx {
|
|
231
238
|
// buffers that were sent with the corresponding call to sendmsg().
|
232
239
|
void NoteSend(TcpZerocopySendRecord* record) {
|
233
240
|
record->Ref();
|
234
|
-
|
241
|
+
{
|
242
|
+
MutexLock guard(&lock_);
|
243
|
+
is_in_write_ = true;
|
244
|
+
AssociateSeqWithSendRecordLocked(last_send_, record);
|
245
|
+
}
|
235
246
|
++last_send_;
|
236
247
|
}
|
237
248
|
|
@@ -252,8 +263,8 @@ class TcpZerocopySendCtx {
|
|
252
263
|
|
253
264
|
// Simply associate this send record (and the underlying sent data buffers)
|
254
265
|
// with the implicit sequence number for this zerocopy sendmsg().
|
255
|
-
void
|
256
|
-
|
266
|
+
void AssociateSeqWithSendRecordLocked(uint32_t seq,
|
267
|
+
TcpZerocopySendRecord* record) {
|
257
268
|
ctx_lookup_.emplace(seq, record);
|
258
269
|
}
|
259
270
|
|
@@ -311,7 +322,107 @@ class TcpZerocopySendCtx {
|
|
311
322
|
// zerocopy is not useful for small transfers.
|
312
323
|
size_t threshold_bytes() const { return threshold_bytes_; }
|
313
324
|
|
325
|
+
// Expected to be called by handler reading messages from the err queue.
|
326
|
+
// It is used to indicate that some OMem meory is now available. It returns
|
327
|
+
// true to tell the caller to mark the file descriptor as immediately
|
328
|
+
// writable.
|
329
|
+
//
|
330
|
+
// If a write is currently in progress on the socket (ie. we have issued a
|
331
|
+
// sendmsg() and are about to check its return value) then we set omem state
|
332
|
+
// to CHECK to make the sending thread know that some tcp_omem was
|
333
|
+
// concurrently freed even if sendmsg() returns ENOBUFS. In this case, since
|
334
|
+
// there is already an active send thread, we do not need to mark the
|
335
|
+
// socket writeable, so we return false.
|
336
|
+
//
|
337
|
+
// If there was no write in progress on the socket, and the socket was not
|
338
|
+
// marked as FULL, then we need not mark the socket writeable now that some
|
339
|
+
// tcp_omem memory is freed since it was not considered as blocked on
|
340
|
+
// tcp_omem to begin with. So in this case, return false.
|
341
|
+
//
|
342
|
+
// But, if a write was not in progress and the omem state was FULL, then we
|
343
|
+
// need to mark the socket writeable since it is no longer blocked by
|
344
|
+
// tcp_omem. In this case, return true.
|
345
|
+
//
|
346
|
+
// Please refer to the STATE TRANSITION DIAGRAM below for more details.
|
347
|
+
//
|
348
|
+
bool UpdateZeroCopyOMemStateAfterFree() {
|
349
|
+
MutexLock guard(&lock_);
|
350
|
+
if (is_in_write_) {
|
351
|
+
zcopy_enobuf_state_ = OMemState::CHECK;
|
352
|
+
return false;
|
353
|
+
}
|
354
|
+
GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OMemState::CHECK);
|
355
|
+
if (zcopy_enobuf_state_ == OMemState::FULL) {
|
356
|
+
// A previous sendmsg attempt was blocked by ENOBUFS. Return true to
|
357
|
+
// mark the fd as writable so the next write attempt could be made.
|
358
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
359
|
+
return true;
|
360
|
+
} else if (zcopy_enobuf_state_ == OMemState::OPEN) {
|
361
|
+
// No need to mark the fd as writable because the previous write
|
362
|
+
// attempt did not encounter ENOBUFS.
|
363
|
+
return false;
|
364
|
+
} else {
|
365
|
+
// This state should never be reached because it implies that the previous
|
366
|
+
// state was CHECK and is_in_write is false. This means that after the
|
367
|
+
// previous sendmsg returned and set is_in_write to false, it did
|
368
|
+
// not update the z-copy change from CHECK to OPEN.
|
369
|
+
Crash("OMem state error!");
|
370
|
+
}
|
371
|
+
}
|
372
|
+
|
373
|
+
// Expected to be called by the thread calling sendmsg after the syscall
|
374
|
+
// invocation. is complete. If an ENOBUF is seen, it checks if the error
|
375
|
+
// handler (Tx0cp completions) has already run and free'ed up some OMem. It
|
376
|
+
// returns true indicating that the write can be attempted again immediately.
|
377
|
+
// If ENOBUFS was seen but no Tx0cp completions have been received between the
|
378
|
+
// sendmsg() and us taking this lock, then tcp_omem is still full from our
|
379
|
+
// point of view. Therefore, we do not signal that the socket is writeable
|
380
|
+
// with respect to the availability of tcp_omem. Therefore the function
|
381
|
+
// returns false. This indicates that another write should not be attempted
|
382
|
+
// immediately and the calling thread should wait until the socket is writable
|
383
|
+
// again. If ENOBUFS was not seen, then again return false because the next
|
384
|
+
// write should be attempted only when the socket is writable again.
|
385
|
+
//
|
386
|
+
// Please refer to the STATE TRANSITION DIAGRAM below for more details.
|
387
|
+
//
|
388
|
+
bool UpdateZeroCopyOMemStateAfterSend(bool seen_enobuf) {
|
389
|
+
MutexLock guard(&lock_);
|
390
|
+
is_in_write_ = false;
|
391
|
+
if (seen_enobuf) {
|
392
|
+
if (zcopy_enobuf_state_ == OMemState::CHECK) {
|
393
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
394
|
+
return true;
|
395
|
+
} else {
|
396
|
+
zcopy_enobuf_state_ = OMemState::FULL;
|
397
|
+
}
|
398
|
+
} else if (zcopy_enobuf_state_ != OMemState::OPEN) {
|
399
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
400
|
+
}
|
401
|
+
return false;
|
402
|
+
}
|
403
|
+
|
314
404
|
private:
|
405
|
+
// STATE TRANSITION DIAGRAM
|
406
|
+
//
|
407
|
+
// sendmsg succeeds Tx-zero copy succeeds and there is no active sendmsg
|
408
|
+
// ----<<--+ +------<<-------------------------------------+
|
409
|
+
// | | | |
|
410
|
+
// | | v sendmsg returns ENOBUFS |
|
411
|
+
// +-----> OPEN ------------->>-------------------------> FULL
|
412
|
+
// ^ |
|
413
|
+
// | |
|
414
|
+
// | sendmsg completes |
|
415
|
+
// +----<<---------- CHECK <-------<<-------------+
|
416
|
+
// Tx-zero copy succeeds and there is
|
417
|
+
// an active sendmsg
|
418
|
+
//
|
419
|
+
enum class OMemState : int8_t {
|
420
|
+
OPEN, // Everything is clear and omem is not full.
|
421
|
+
FULL, // The last sendmsg() has returned with an errno of ENOBUFS.
|
422
|
+
CHECK, // Error queue is read while is_in_write_ was true, so we should
|
423
|
+
// check this state after the sendmsg.
|
424
|
+
};
|
425
|
+
|
315
426
|
TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
|
316
427
|
auto iter = ctx_lookup_.find(seq);
|
317
428
|
GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
|
@@ -348,6 +459,8 @@ class TcpZerocopySendCtx {
|
|
348
459
|
size_t threshold_bytes_ = kDefaultSendBytesThreshold;
|
349
460
|
std::unordered_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_;
|
350
461
|
bool memory_limited_ = false;
|
462
|
+
bool is_in_write_ = false;
|
463
|
+
OMemState zcopy_enobuf_state_;
|
351
464
|
};
|
352
465
|
|
353
466
|
} // namespace grpc_core
|
@@ -356,15 +469,21 @@ using grpc_core::TcpZerocopySendCtx;
|
|
356
469
|
using grpc_core::TcpZerocopySendRecord;
|
357
470
|
|
358
471
|
namespace {
|
472
|
+
|
359
473
|
struct grpc_tcp {
|
360
|
-
grpc_tcp(
|
361
|
-
:
|
474
|
+
explicit grpc_tcp(const grpc_core::PosixTcpOptions& tcp_options)
|
475
|
+
: min_read_chunk_size(tcp_options.tcp_min_read_chunk_size),
|
476
|
+
max_read_chunk_size(tcp_options.tcp_max_read_chunk_size),
|
477
|
+
tcp_zerocopy_send_ctx(
|
478
|
+
tcp_options.tcp_tx_zerocopy_max_simultaneous_sends,
|
479
|
+
tcp_options.tcp_tx_zerocopy_send_bytes_threshold) {}
|
362
480
|
grpc_endpoint base;
|
363
481
|
grpc_fd* em_fd;
|
364
482
|
int fd;
|
365
|
-
|
366
|
-
|
483
|
+
// Used by the endpoint read function to distinguish the very first read call
|
484
|
+
// from the rest
|
367
485
|
bool is_first_read;
|
486
|
+
bool has_posted_reclaimer ABSL_GUARDED_BY(read_mu) = false;
|
368
487
|
double target_length;
|
369
488
|
double bytes_read_this_round;
|
370
489
|
grpc_core::RefCount refcount;
|
@@ -372,16 +491,18 @@ struct grpc_tcp {
|
|
372
491
|
|
373
492
|
int min_read_chunk_size;
|
374
493
|
int max_read_chunk_size;
|
494
|
+
int set_rcvlowat = 0;
|
375
495
|
|
376
|
-
|
496
|
+
// garbage after the last read
|
377
497
|
grpc_slice_buffer last_read_buffer;
|
378
498
|
|
379
|
-
|
380
|
-
|
381
|
-
|
499
|
+
grpc_core::Mutex read_mu;
|
500
|
+
grpc_slice_buffer* incoming_buffer ABSL_GUARDED_BY(read_mu) = nullptr;
|
501
|
+
int inq; // bytes pending on the socket from the last read.
|
502
|
+
bool inq_capable; // cache whether kernel supports inq
|
382
503
|
|
383
504
|
grpc_slice_buffer* outgoing_buffer;
|
384
|
-
|
505
|
+
// byte within outgoing_buffer->slices[0] to write next
|
385
506
|
size_t outgoing_byte_idx;
|
386
507
|
|
387
508
|
grpc_closure* read_cb;
|
@@ -399,30 +520,33 @@ struct grpc_tcp {
|
|
399
520
|
grpc_core::MemoryOwner memory_owner;
|
400
521
|
grpc_core::MemoryAllocator::Reservation self_reservation;
|
401
522
|
|
402
|
-
grpc_core::
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
* if the user wants timestamps for the write. */
|
523
|
+
grpc_core::TracedBufferList tb_list; // List of traced buffers
|
524
|
+
|
525
|
+
// grpc_endpoint_write takes an argument which if non-null means that the
|
526
|
+
// transport layer wants the TCP layer to collect timestamps for this write.
|
527
|
+
// This arg is forwarded to the timestamps callback function when the ACK
|
528
|
+
// timestamp is received from the kernel. This arg is a (void *) which allows
|
529
|
+
// users of this API to pass in a pointer to any kind of structure. This
|
530
|
+
// structure could actually be a tag or any book-keeping object that the user
|
531
|
+
// can use to distinguish between different traced writes. The only
|
532
|
+
// requirement from the TCP endpoint layer is that this arg should be non-null
|
533
|
+
// if the user wants timestamps for the write.
|
414
534
|
void* outgoing_buffer_arg;
|
415
|
-
|
416
|
-
|
417
|
-
|
535
|
+
// A counter which starts at 0. It is initialized the first time the socket
|
536
|
+
// options for collecting timestamps are set, and is incremented with each
|
537
|
+
// byte sent.
|
418
538
|
int bytes_counter;
|
419
|
-
bool socket_ts_enabled;
|
420
|
-
|
421
|
-
bool ts_capable;
|
422
|
-
gpr_atm stop_error_notification;
|
423
|
-
|
539
|
+
bool socket_ts_enabled; // True if timestamping options are set on the socket
|
540
|
+
//
|
541
|
+
bool ts_capable; // Cache whether we can set timestamping options
|
542
|
+
gpr_atm stop_error_notification; // Set to 1 if we do not want to be notified
|
543
|
+
// on errors anymore
|
424
544
|
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
|
425
545
|
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
|
546
|
+
|
547
|
+
int min_progress_size; // A hint from upper layers specifying the minimum
|
548
|
+
// number of bytes that need to be read to make
|
549
|
+
// meaningful progress
|
426
550
|
};
|
427
551
|
|
428
552
|
struct backup_poller {
|
@@ -462,14 +586,13 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
|
462
586
|
}
|
463
587
|
gpr_mu_lock(p->pollset_mu);
|
464
588
|
grpc_core::Timestamp deadline =
|
465
|
-
grpc_core::
|
466
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS();
|
589
|
+
grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(10);
|
467
590
|
GRPC_LOG_IF_ERROR(
|
468
591
|
"backup_poller:pollset_work",
|
469
592
|
grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
|
470
593
|
gpr_mu_unlock(p->pollset_mu);
|
471
594
|
g_backup_poller_mu->Lock();
|
472
|
-
|
595
|
+
// last "uncovered" notification is the ref that keeps us polling
|
473
596
|
if (g_uncovered_notifications_pending == 1) {
|
474
597
|
GPR_ASSERT(g_backup_poller == p);
|
475
598
|
g_backup_poller = nullptr;
|
@@ -486,7 +609,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
|
486
609
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
487
610
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p reschedule", p);
|
488
611
|
}
|
489
|
-
grpc_core::Executor::Run(&p->run_poller,
|
612
|
+
grpc_core::Executor::Run(&p->run_poller, absl::OkStatus(),
|
490
613
|
grpc_core::ExecutorType::DEFAULT,
|
491
614
|
grpc_core::ExecutorJobType::LONG);
|
492
615
|
}
|
@@ -524,13 +647,12 @@ static void cover_self(grpc_tcp* tcp) {
|
|
524
647
|
g_backup_poller = p;
|
525
648
|
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
|
526
649
|
g_backup_poller_mu->Unlock();
|
527
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
|
528
650
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
529
651
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p create", p);
|
530
652
|
}
|
531
653
|
grpc_core::Executor::Run(
|
532
654
|
GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, nullptr),
|
533
|
-
|
655
|
+
absl::OkStatus(), grpc_core::ExecutorType::DEFAULT,
|
534
656
|
grpc_core::ExecutorJobType::LONG);
|
535
657
|
} else {
|
536
658
|
old_count = g_uncovered_notifications_pending++;
|
@@ -565,7 +687,7 @@ static void tcp_drop_uncovered_then_handle_write(void* arg,
|
|
565
687
|
grpc_error_handle error) {
|
566
688
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
567
689
|
gpr_log(GPR_INFO, "TCP:%p got_write: %s", arg,
|
568
|
-
|
690
|
+
grpc_core::StatusToString(error).c_str());
|
569
691
|
}
|
570
692
|
drop_uncovered(static_cast<grpc_tcp*>(arg));
|
571
693
|
tcp_handle_write(arg, error);
|
@@ -576,9 +698,9 @@ static void add_to_estimate(grpc_tcp* tcp, size_t bytes) {
|
|
576
698
|
}
|
577
699
|
|
578
700
|
static void finish_estimate(grpc_tcp* tcp) {
|
579
|
-
|
580
|
-
|
581
|
-
|
701
|
+
// If we read >80% of the target buffer in one read loop, increase the size
|
702
|
+
// of the target buffer to either the amount read, or twice its previous
|
703
|
+
// value
|
582
704
|
if (tcp->bytes_read_this_round > tcp->target_length * 0.8) {
|
583
705
|
tcp->target_length =
|
584
706
|
std::max(2 * tcp->target_length, tcp->bytes_read_this_round);
|
@@ -593,11 +715,12 @@ static grpc_error_handle tcp_annotate_error(grpc_error_handle src_error,
|
|
593
715
|
grpc_tcp* tcp) {
|
594
716
|
return grpc_error_set_str(
|
595
717
|
grpc_error_set_int(
|
596
|
-
grpc_error_set_int(src_error,
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
718
|
+
grpc_error_set_int(src_error, grpc_core::StatusIntProperty::kFd,
|
719
|
+
tcp->fd),
|
720
|
+
// All tcp errors are marked with UNAVAILABLE so that application may
|
721
|
+
// choose to retry.
|
722
|
+
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE),
|
723
|
+
grpc_core::StatusStrProperty::kTargetAddress, tcp->peer_string);
|
601
724
|
}
|
602
725
|
|
603
726
|
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
|
@@ -612,15 +735,10 @@ static void tcp_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
|
612
735
|
static void tcp_free(grpc_tcp* tcp) {
|
613
736
|
grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd,
|
614
737
|
"tcp_unref_orphan");
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
grpc_core::TracedBuffer::Shutdown(
|
619
|
-
&tcp->tb_head, tcp->outgoing_buffer_arg,
|
620
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("endpoint destroyed"));
|
621
|
-
gpr_mu_unlock(&tcp->tb_mu);
|
738
|
+
grpc_slice_buffer_destroy(&tcp->last_read_buffer);
|
739
|
+
tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
|
740
|
+
GRPC_ERROR_CREATE("endpoint destroyed"));
|
622
741
|
tcp->outgoing_buffer_arg = nullptr;
|
623
|
-
gpr_mu_destroy(&tcp->tb_mu);
|
624
742
|
delete tcp;
|
625
743
|
}
|
626
744
|
|
@@ -652,7 +770,7 @@ static void tcp_ref(grpc_tcp* tcp) { tcp->refcount.Ref(); }
|
|
652
770
|
|
653
771
|
static void tcp_destroy(grpc_endpoint* ep) {
|
654
772
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
655
|
-
|
773
|
+
grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
|
656
774
|
if (grpc_event_engine_can_track_errors()) {
|
657
775
|
ZerocopyDisableAndWaitForRemaining(tcp);
|
658
776
|
gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
|
@@ -661,32 +779,103 @@ static void tcp_destroy(grpc_endpoint* ep) {
|
|
661
779
|
TCP_UNREF(tcp, "destroy");
|
662
780
|
}
|
663
781
|
|
664
|
-
static void
|
665
|
-
|
782
|
+
static void perform_reclamation(grpc_tcp* tcp)
|
783
|
+
ABSL_LOCKS_EXCLUDED(tcp->read_mu) {
|
784
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
785
|
+
gpr_log(GPR_INFO, "TCP: benign reclamation to free memory");
|
786
|
+
}
|
787
|
+
tcp->read_mu.Lock();
|
788
|
+
if (tcp->incoming_buffer != nullptr) {
|
789
|
+
grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
|
790
|
+
}
|
791
|
+
tcp->has_posted_reclaimer = false;
|
792
|
+
tcp->read_mu.Unlock();
|
793
|
+
}
|
666
794
|
|
795
|
+
static void maybe_post_reclaimer(grpc_tcp* tcp)
|
796
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
797
|
+
if (!tcp->has_posted_reclaimer) {
|
798
|
+
tcp->has_posted_reclaimer = true;
|
799
|
+
tcp->memory_owner.PostReclaimer(
|
800
|
+
grpc_core::ReclamationPass::kBenign,
|
801
|
+
[tcp](absl::optional<grpc_core::ReclamationSweep> sweep) {
|
802
|
+
if (!sweep.has_value()) return;
|
803
|
+
perform_reclamation(tcp);
|
804
|
+
});
|
805
|
+
}
|
806
|
+
}
|
807
|
+
|
808
|
+
static void tcp_trace_read(grpc_tcp* tcp, grpc_error_handle error)
|
809
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
810
|
+
grpc_closure* cb = tcp->read_cb;
|
667
811
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
668
812
|
gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
|
669
813
|
size_t i;
|
670
814
|
gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
|
671
|
-
tcp->peer_string.c_str(),
|
815
|
+
tcp->peer_string.c_str(), grpc_core::StatusToString(error).c_str());
|
672
816
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
673
817
|
for (i = 0; i < tcp->incoming_buffer->count; i++) {
|
674
818
|
char* dump = grpc_dump_slice(tcp->incoming_buffer->slices[i],
|
675
819
|
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
676
|
-
gpr_log(GPR_DEBUG, "DATA: %s", dump);
|
820
|
+
gpr_log(GPR_DEBUG, "READ DATA: %s", dump);
|
677
821
|
gpr_free(dump);
|
678
822
|
}
|
679
823
|
}
|
680
824
|
}
|
825
|
+
}
|
681
826
|
|
682
|
-
|
683
|
-
|
684
|
-
grpc_core::
|
827
|
+
static void update_rcvlowat(grpc_tcp* tcp)
|
828
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
829
|
+
if (!grpc_core::IsTcpRcvLowatEnabled()) return;
|
830
|
+
|
831
|
+
// TODO(ctiller): Check if supported by OS.
|
832
|
+
// TODO(ctiller): Allow some adjustments instead of hardcoding things.
|
833
|
+
|
834
|
+
static constexpr int kRcvLowatMax = 16 * 1024 * 1024;
|
835
|
+
static constexpr int kRcvLowatThreshold = 16 * 1024;
|
836
|
+
|
837
|
+
int remaining = std::min(static_cast<int>(tcp->incoming_buffer->length),
|
838
|
+
tcp->min_progress_size);
|
839
|
+
|
840
|
+
remaining = std::min(remaining, kRcvLowatMax);
|
841
|
+
|
842
|
+
// Setting SO_RCVLOWAT for small quantities does not save on CPU.
|
843
|
+
if (remaining < 2 * kRcvLowatThreshold) {
|
844
|
+
remaining = 0;
|
845
|
+
}
|
846
|
+
|
847
|
+
// Decrement remaining by kRcvLowatThreshold. This would have the effect of
|
848
|
+
// waking up a little early. It would help with latency because some bytes
|
849
|
+
// may arrive while we execute the recvmsg syscall after waking up.
|
850
|
+
if (remaining > 0) {
|
851
|
+
remaining -= kRcvLowatThreshold;
|
852
|
+
}
|
853
|
+
|
854
|
+
// We still do not know the RPC size. Do not set SO_RCVLOWAT.
|
855
|
+
if (tcp->set_rcvlowat <= 1 && remaining <= 1) return;
|
856
|
+
|
857
|
+
// Previous value is still valid. No change needed in SO_RCVLOWAT.
|
858
|
+
if (tcp->set_rcvlowat == remaining) {
|
859
|
+
return;
|
860
|
+
}
|
861
|
+
if (setsockopt(tcp->fd, SOL_SOCKET, SO_RCVLOWAT, &remaining,
|
862
|
+
sizeof(remaining)) != 0) {
|
863
|
+
gpr_log(GPR_ERROR, "%s",
|
864
|
+
absl::StrCat("Cannot set SO_RCVLOWAT on fd=", tcp->fd,
|
865
|
+
" err=", grpc_core::StrError(errno).c_str())
|
866
|
+
.c_str());
|
867
|
+
return;
|
868
|
+
}
|
869
|
+
tcp->set_rcvlowat = remaining;
|
685
870
|
}
|
686
871
|
|
687
|
-
|
688
|
-
|
689
|
-
|
872
|
+
// Returns true if data available to read or error other than EAGAIN.
|
873
|
+
#define MAX_READ_IOVEC 64
|
874
|
+
static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
875
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
876
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
877
|
+
gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
|
878
|
+
}
|
690
879
|
struct msghdr msg;
|
691
880
|
struct iovec iov[MAX_READ_IOVEC];
|
692
881
|
ssize_t read_bytes;
|
@@ -698,7 +887,7 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
698
887
|
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int));
|
699
888
|
#else
|
700
889
|
constexpr size_t cmsg_alloc_space = 24 /* CMSG_SPACE(sizeof(int)) */;
|
701
|
-
#endif
|
890
|
+
#endif // GRPC_LINUX_ERRQUEUE
|
702
891
|
char cmsgbuf[cmsg_alloc_space];
|
703
892
|
for (size_t i = 0; i < iov_len; i++) {
|
704
893
|
iov[i].iov_base = GRPC_SLICE_START_PTR(tcp->incoming_buffer->slices[i]);
|
@@ -706,11 +895,12 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
706
895
|
}
|
707
896
|
|
708
897
|
GPR_ASSERT(tcp->incoming_buffer->length != 0);
|
898
|
+
GPR_DEBUG_ASSERT(tcp->min_progress_size > 0);
|
709
899
|
|
710
900
|
do {
|
711
|
-
|
712
|
-
|
713
|
-
|
901
|
+
// Assume there is something on the queue. If we receive TCP_INQ from
|
902
|
+
// kernel, we will update this value, otherwise, we have to assume there is
|
903
|
+
// always something to read until we get EAGAIN.
|
714
904
|
tcp->inq = 1;
|
715
905
|
|
716
906
|
msg.msg_name = nullptr;
|
@@ -726,53 +916,49 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
726
916
|
}
|
727
917
|
msg.msg_flags = 0;
|
728
918
|
|
729
|
-
|
730
|
-
|
919
|
+
grpc_core::global_stats().IncrementTcpReadOffer(
|
920
|
+
tcp->incoming_buffer->length);
|
921
|
+
grpc_core::global_stats().IncrementTcpReadOfferIovSize(
|
922
|
+
tcp->incoming_buffer->count);
|
731
923
|
|
732
924
|
do {
|
733
|
-
|
734
|
-
GRPC_STATS_INC_SYSCALL_READ();
|
925
|
+
grpc_core::global_stats().IncrementSyscallRead();
|
735
926
|
read_bytes = recvmsg(tcp->fd, &msg, 0);
|
736
927
|
} while (read_bytes < 0 && errno == EINTR);
|
737
928
|
|
738
|
-
|
739
|
-
|
740
|
-
|
929
|
+
if (read_bytes < 0 && errno == EAGAIN) {
|
930
|
+
// NB: After calling call_read_cb a parallel call of the read handler may
|
931
|
+
// be running.
|
932
|
+
if (total_read_bytes > 0) {
|
933
|
+
break;
|
934
|
+
}
|
935
|
+
finish_estimate(tcp);
|
936
|
+
tcp->inq = 0;
|
937
|
+
return false;
|
938
|
+
}
|
939
|
+
|
940
|
+
// We have read something in previous reads. We need to deliver those
|
941
|
+
// bytes to the upper layer.
|
942
|
+
if (read_bytes <= 0 && total_read_bytes >= 1) {
|
741
943
|
tcp->inq = 1;
|
742
944
|
break;
|
743
945
|
}
|
744
946
|
|
745
|
-
if (read_bytes
|
746
|
-
|
747
|
-
|
748
|
-
if (
|
749
|
-
|
750
|
-
tcp->inq = 0;
|
751
|
-
/* We've consumed the edge, request a new one */
|
752
|
-
notify_on_read(tcp);
|
947
|
+
if (read_bytes <= 0) {
|
948
|
+
// 0 read size ==> end of stream
|
949
|
+
grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
|
950
|
+
if (read_bytes == 0) {
|
951
|
+
*error = tcp_annotate_error(absl::InternalError("Socket closed"), tcp);
|
753
952
|
} else {
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
953
|
+
*error =
|
954
|
+
tcp_annotate_error(absl::InternalError(absl::StrCat(
|
955
|
+
"recvmsg:", grpc_core::StrError(errno))),
|
956
|
+
tcp);
|
758
957
|
}
|
759
|
-
return;
|
760
|
-
}
|
761
|
-
if (read_bytes == 0) {
|
762
|
-
/* 0 read size ==> end of stream
|
763
|
-
*
|
764
|
-
* We may have read something, i.e., total_read_bytes > 0, but
|
765
|
-
* since the connection is closed we will drop the data here, because we
|
766
|
-
* can't call the callback multiple times. */
|
767
|
-
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
768
|
-
call_read_cb(
|
769
|
-
tcp, tcp_annotate_error(
|
770
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp));
|
771
|
-
TCP_UNREF(tcp, "read");
|
772
|
-
return;
|
958
|
+
return true;
|
773
959
|
}
|
774
960
|
|
775
|
-
|
961
|
+
grpc_core::global_stats().IncrementTcpReadSize(read_bytes);
|
776
962
|
add_to_estimate(tcp, static_cast<size_t>(read_bytes));
|
777
963
|
GPR_DEBUG_ASSERT((size_t)read_bytes <=
|
778
964
|
tcp->incoming_buffer->length - total_read_bytes);
|
@@ -789,15 +975,15 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
789
975
|
}
|
790
976
|
}
|
791
977
|
}
|
792
|
-
#endif
|
978
|
+
#endif // GRPC_HAVE_TCP_INQ
|
793
979
|
|
794
980
|
total_read_bytes += read_bytes;
|
795
981
|
if (tcp->inq == 0 || total_read_bytes == tcp->incoming_buffer->length) {
|
796
982
|
break;
|
797
983
|
}
|
798
984
|
|
799
|
-
|
800
|
-
|
985
|
+
// We had a partial read, and still have space to read more data.
|
986
|
+
// So, adjust IOVs and try to read more.
|
801
987
|
size_t remaining = read_bytes;
|
802
988
|
size_t j = 0;
|
803
989
|
for (size_t i = 0; i < iov_len; i++) {
|
@@ -823,113 +1009,179 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
823
1009
|
}
|
824
1010
|
|
825
1011
|
GPR_DEBUG_ASSERT(total_read_bytes > 0);
|
1012
|
+
*error = absl::OkStatus();
|
1013
|
+
if (grpc_core::IsTcpFrameSizeTuningEnabled()) {
|
1014
|
+
// Update min progress size based on the total number of bytes read in
|
1015
|
+
// this round.
|
1016
|
+
tcp->min_progress_size -= total_read_bytes;
|
1017
|
+
if (tcp->min_progress_size > 0) {
|
1018
|
+
// There is still some bytes left to be read before we can signal
|
1019
|
+
// the read as complete. Append the bytes read so far into
|
1020
|
+
// last_read_buffer which serves as a staging buffer. Return false
|
1021
|
+
// to indicate tcp_handle_read needs to be scheduled again.
|
1022
|
+
grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
|
1023
|
+
&tcp->last_read_buffer);
|
1024
|
+
return false;
|
1025
|
+
} else {
|
1026
|
+
// The required number of bytes have been read. Append the bytes
|
1027
|
+
// read in this round into last_read_buffer. Then swap last_read_buffer
|
1028
|
+
// and incoming_buffer. Now incoming buffer contains all the bytes
|
1029
|
+
// read since the start of the last tcp_read operation. last_read_buffer
|
1030
|
+
// would contain any spare space left in the incoming buffer. This
|
1031
|
+
// space will be used in the next tcp_read operation.
|
1032
|
+
tcp->min_progress_size = 1;
|
1033
|
+
grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
|
1034
|
+
&tcp->last_read_buffer);
|
1035
|
+
grpc_slice_buffer_swap(&tcp->last_read_buffer, tcp->incoming_buffer);
|
1036
|
+
return true;
|
1037
|
+
}
|
1038
|
+
}
|
826
1039
|
if (total_read_bytes < tcp->incoming_buffer->length) {
|
827
1040
|
grpc_slice_buffer_trim_end(tcp->incoming_buffer,
|
828
1041
|
tcp->incoming_buffer->length - total_read_bytes,
|
829
1042
|
&tcp->last_read_buffer);
|
830
1043
|
}
|
831
|
-
|
832
|
-
TCP_UNREF(tcp, "read");
|
1044
|
+
return true;
|
833
1045
|
}
|
834
1046
|
|
835
|
-
static void
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
1047
|
+
static void maybe_make_read_slices(grpc_tcp* tcp)
|
1048
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
1049
|
+
static const int kBigAlloc = 64 * 1024;
|
1050
|
+
static const int kSmallAlloc = 8 * 1024;
|
1051
|
+
if (tcp->incoming_buffer->length <
|
1052
|
+
static_cast<size_t>(tcp->min_progress_size)) {
|
1053
|
+
size_t allocate_length = tcp->min_progress_size;
|
1054
|
+
const size_t target_length = static_cast<size_t>(tcp->target_length);
|
1055
|
+
// If memory pressure is low and we think there will be more than
|
1056
|
+
// min_progress_size bytes to read, allocate a bit more.
|
1057
|
+
const bool low_memory_pressure =
|
1058
|
+
tcp->memory_owner.GetPressureInfo().pressure_control_value < 0.8;
|
1059
|
+
if (low_memory_pressure && target_length > allocate_length) {
|
1060
|
+
allocate_length = target_length;
|
844
1061
|
}
|
845
|
-
int target_length = static_cast<int>(tcp->target_length);
|
846
1062
|
int extra_wanted =
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
1063
|
+
allocate_length - static_cast<int>(tcp->incoming_buffer->length);
|
1064
|
+
if (extra_wanted >=
|
1065
|
+
(low_memory_pressure ? kSmallAlloc * 3 / 2 : kBigAlloc)) {
|
1066
|
+
while (extra_wanted > 0) {
|
1067
|
+
extra_wanted -= kBigAlloc;
|
1068
|
+
grpc_slice_buffer_add_indexed(tcp->incoming_buffer,
|
1069
|
+
tcp->memory_owner.MakeSlice(kBigAlloc));
|
1070
|
+
grpc_core::global_stats().IncrementTcpReadAlloc64k();
|
1071
|
+
}
|
1072
|
+
} else {
|
1073
|
+
while (extra_wanted > 0) {
|
1074
|
+
extra_wanted -= kSmallAlloc;
|
1075
|
+
grpc_slice_buffer_add_indexed(tcp->incoming_buffer,
|
1076
|
+
tcp->memory_owner.MakeSlice(kSmallAlloc));
|
1077
|
+
grpc_core::global_stats().IncrementTcpReadAlloc8k();
|
1078
|
+
}
|
1079
|
+
}
|
1080
|
+
maybe_post_reclaimer(tcp);
|
857
1081
|
}
|
858
|
-
tcp_do_read(tcp);
|
859
1082
|
}
|
860
1083
|
|
861
1084
|
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
862
1085
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
863
1086
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
864
1087
|
gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp,
|
865
|
-
|
866
|
-
}
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
1088
|
+
grpc_core::StatusToString(error).c_str());
|
1089
|
+
}
|
1090
|
+
tcp->read_mu.Lock();
|
1091
|
+
grpc_error_handle tcp_read_error;
|
1092
|
+
if (GPR_LIKELY(error.ok())) {
|
1093
|
+
maybe_make_read_slices(tcp);
|
1094
|
+
if (!tcp_do_read(tcp, &tcp_read_error)) {
|
1095
|
+
// Maybe update rcv lowat value based on the number of bytes read in this
|
1096
|
+
// round.
|
1097
|
+
update_rcvlowat(tcp);
|
1098
|
+
tcp->read_mu.Unlock();
|
1099
|
+
// We've consumed the edge, request a new one
|
1100
|
+
notify_on_read(tcp);
|
1101
|
+
return;
|
1102
|
+
}
|
1103
|
+
tcp_trace_read(tcp, tcp_read_error);
|
873
1104
|
} else {
|
874
|
-
|
875
|
-
|
1105
|
+
tcp_read_error = error;
|
1106
|
+
grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
|
1107
|
+
grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
|
1108
|
+
}
|
1109
|
+
// Update rcv lowat needs to be called at the end of the current read
|
1110
|
+
// operation to ensure the right SO_RCVLOWAT value is set for the next read.
|
1111
|
+
// Otherwise the next endpoint read operation may get stuck indefinitely
|
1112
|
+
// because the previously set rcv lowat value will persist and the socket may
|
1113
|
+
// erroneously considered to not be ready for read.
|
1114
|
+
update_rcvlowat(tcp);
|
1115
|
+
grpc_closure* cb = tcp->read_cb;
|
1116
|
+
tcp->read_cb = nullptr;
|
1117
|
+
tcp->incoming_buffer = nullptr;
|
1118
|
+
tcp->read_mu.Unlock();
|
1119
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, tcp_read_error);
|
1120
|
+
TCP_UNREF(tcp, "read");
|
876
1121
|
}
|
877
1122
|
|
878
1123
|
static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
879
|
-
grpc_closure* cb, bool urgent) {
|
1124
|
+
grpc_closure* cb, bool urgent, int min_progress_size) {
|
880
1125
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
881
1126
|
GPR_ASSERT(tcp->read_cb == nullptr);
|
882
1127
|
tcp->read_cb = cb;
|
1128
|
+
tcp->read_mu.Lock();
|
883
1129
|
tcp->incoming_buffer = incoming_buffer;
|
884
|
-
|
1130
|
+
tcp->min_progress_size = grpc_core::IsTcpFrameSizeTuningEnabled()
|
1131
|
+
? std::max(min_progress_size, 1)
|
1132
|
+
: 1;
|
1133
|
+
grpc_slice_buffer_reset_and_unref(incoming_buffer);
|
885
1134
|
grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
|
886
1135
|
TCP_REF(tcp, "read");
|
887
1136
|
if (tcp->is_first_read) {
|
888
|
-
|
889
|
-
|
1137
|
+
tcp->read_mu.Unlock();
|
1138
|
+
// Endpoint read called for the very first time. Register read callback with
|
1139
|
+
// the polling engine
|
890
1140
|
tcp->is_first_read = false;
|
891
1141
|
notify_on_read(tcp);
|
892
1142
|
} else if (!urgent && tcp->inq == 0) {
|
893
|
-
|
894
|
-
|
895
|
-
|
1143
|
+
tcp->read_mu.Unlock();
|
1144
|
+
// Upper layer asked to read more but we know there is no pending data
|
1145
|
+
// to read from previous reads. So, wait for POLLIN.
|
1146
|
+
//
|
896
1147
|
notify_on_read(tcp);
|
897
1148
|
} else {
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
1149
|
+
tcp->read_mu.Unlock();
|
1150
|
+
// Not the first time. We may or may not have more bytes available. In any
|
1151
|
+
// case call tcp->read_done_closure (i.e tcp_handle_read()) which does the
|
1152
|
+
// right thing (i.e calls tcp_do_read() which either reads the available
|
1153
|
+
// bytes or calls notify_on_read() to be notified when new bytes become
|
1154
|
+
// available
|
903
1155
|
grpc_core::Closure::Run(DEBUG_LOCATION, &tcp->read_done_closure,
|
904
|
-
|
1156
|
+
absl::OkStatus());
|
905
1157
|
}
|
906
1158
|
}
|
907
1159
|
|
908
|
-
|
909
|
-
|
910
|
-
ssize_t tcp_send(int fd, const struct msghdr* msg, int
|
911
|
-
|
1160
|
+
// A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
|
1161
|
+
// of bytes sent.
|
1162
|
+
ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
|
1163
|
+
int additional_flags = 0) {
|
912
1164
|
ssize_t sent_length;
|
913
1165
|
do {
|
914
|
-
|
915
|
-
|
1166
|
+
// TODO(klempner): Cork if this is a partial write
|
1167
|
+
grpc_core::global_stats().IncrementSyscallWrite();
|
916
1168
|
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
|
917
|
-
} while (sent_length < 0 && errno == EINTR);
|
1169
|
+
} while (sent_length < 0 && (*saved_errno = errno) == EINTR);
|
918
1170
|
return sent_length;
|
919
1171
|
}
|
920
1172
|
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
1173
|
+
/// This is to be called if outgoing_buffer_arg is not null. On linux platforms,
|
1174
|
+
/// this will call sendmsg with socket options set to collect timestamps inside
|
1175
|
+
/// the kernel. On return, sent_length is set to the return value of the sendmsg
|
1176
|
+
/// call. Returns false if setting the socket options failed. This is not
|
1177
|
+
/// implemented for non-linux platforms currently, and crashes out.
|
1178
|
+
///
|
927
1179
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
928
1180
|
size_t sending_length,
|
929
|
-
ssize_t* sent_length,
|
1181
|
+
ssize_t* sent_length, int* saved_errno,
|
930
1182
|
int additional_flags = 0);
|
931
1183
|
|
932
|
-
|
1184
|
+
/// The callback function to be invoked when we get an error on the socket.
|
933
1185
|
static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error_handle error);
|
934
1186
|
|
935
1187
|
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
@@ -970,7 +1222,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {
|
|
970
1222
|
|
971
1223
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
972
1224
|
size_t sending_length,
|
973
|
-
ssize_t* sent_length,
|
1225
|
+
ssize_t* sent_length, int* saved_errno,
|
974
1226
|
int additional_flags) {
|
975
1227
|
if (!tcp->socket_ts_enabled) {
|
976
1228
|
uint32_t opt = grpc_core::kTimestampingSocketOptions;
|
@@ -984,7 +1236,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
984
1236
|
tcp->bytes_counter = -1;
|
985
1237
|
tcp->socket_ts_enabled = true;
|
986
1238
|
}
|
987
|
-
|
1239
|
+
// Set control message to indicate that you want timestamps.
|
988
1240
|
union {
|
989
1241
|
char cmsg_buf[CMSG_SPACE(sizeof(uint32_t))];
|
990
1242
|
struct cmsghdr align;
|
@@ -998,16 +1250,13 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
998
1250
|
msg->msg_control = u.cmsg_buf;
|
999
1251
|
msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
|
1000
1252
|
|
1001
|
-
|
1002
|
-
ssize_t length = tcp_send(tcp->fd, msg, additional_flags);
|
1253
|
+
// If there was an error on sendmsg the logic in tcp_flush will handle it.
|
1254
|
+
ssize_t length = tcp_send(tcp->fd, msg, saved_errno, additional_flags);
|
1003
1255
|
*sent_length = length;
|
1004
|
-
|
1256
|
+
// Only save timestamps if all the bytes were taken by sendmsg.
|
1005
1257
|
if (sending_length == static_cast<size_t>(length)) {
|
1006
|
-
|
1007
|
-
|
1008
|
-
&tcp->tb_head, static_cast<uint32_t>(tcp->bytes_counter + length),
|
1009
|
-
tcp->fd, tcp->outgoing_buffer_arg);
|
1010
|
-
gpr_mu_unlock(&tcp->tb_mu);
|
1258
|
+
tcp->tb_list.AddNewEntry(static_cast<uint32_t>(tcp->bytes_counter + length),
|
1259
|
+
tcp->fd, tcp->outgoing_buffer_arg);
|
1011
1260
|
tcp->outgoing_buffer_arg = nullptr;
|
1012
1261
|
}
|
1013
1262
|
return true;
|
@@ -1034,6 +1283,9 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
|
|
1034
1283
|
GPR_DEBUG_ASSERT(record);
|
1035
1284
|
UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
|
1036
1285
|
}
|
1286
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) {
|
1287
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1288
|
+
}
|
1037
1289
|
}
|
1038
1290
|
|
1039
1291
|
// Whether the cmsg received from error queue is of the IPv4 or IPv6 levels.
|
@@ -1050,13 +1302,13 @@ static bool CmsgIsZeroCopy(const cmsghdr& cmsg) {
|
|
1050
1302
|
return serr->ee_errno == 0 && serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY;
|
1051
1303
|
}
|
1052
1304
|
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1305
|
+
/// Reads \a cmsg to derive timestamps from the control messages. If a valid
|
1306
|
+
/// timestamp is found, the traced buffer list is updated with this timestamp.
|
1307
|
+
/// The caller of this function should be looping on the control messages found
|
1308
|
+
/// in \a msg. \a cmsg should point to the control message that the caller wants
|
1309
|
+
/// processed.
|
1310
|
+
/// On return, a pointer to a control message is returned. On the next
|
1311
|
+
/// iteration, CMSG_NXTHDR(msg, ret_val) should be passed as \a cmsg.
|
1060
1312
|
struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
1061
1313
|
struct cmsghdr* cmsg) {
|
1062
1314
|
auto next_cmsg = CMSG_NXTHDR(msg, cmsg);
|
@@ -1068,7 +1320,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
|
1068
1320
|
return cmsg;
|
1069
1321
|
}
|
1070
1322
|
|
1071
|
-
|
1323
|
+
// Check if next_cmsg is an OPT_STATS msg
|
1072
1324
|
if (next_cmsg->cmsg_level == SOL_SOCKET &&
|
1073
1325
|
next_cmsg->cmsg_type == SCM_TIMESTAMPING_OPT_STATS) {
|
1074
1326
|
opt_stats = next_cmsg;
|
@@ -1098,19 +1350,13 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
|
1098
1350
|
gpr_log(GPR_ERROR, "Unexpected control message");
|
1099
1351
|
return cmsg;
|
1100
1352
|
}
|
1101
|
-
|
1102
|
-
* to protect the traced buffer list. A lock free list might be better. Using
|
1103
|
-
* a simple mutex for now. */
|
1104
|
-
gpr_mu_lock(&tcp->tb_mu);
|
1105
|
-
grpc_core::TracedBuffer::ProcessTimestamp(&tcp->tb_head, serr, opt_stats,
|
1106
|
-
tss);
|
1107
|
-
gpr_mu_unlock(&tcp->tb_mu);
|
1353
|
+
tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss);
|
1108
1354
|
return next_cmsg;
|
1109
1355
|
}
|
1110
1356
|
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1357
|
+
/// For linux platforms, reads the socket's error queue and processes error
|
1358
|
+
/// messages from the queue.
|
1359
|
+
///
|
1114
1360
|
static bool process_errors(grpc_tcp* tcp) {
|
1115
1361
|
bool processed_err = false;
|
1116
1362
|
struct iovec iov;
|
@@ -1122,13 +1368,13 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1122
1368
|
msg.msg_iov = &iov;
|
1123
1369
|
msg.msg_iovlen = 0;
|
1124
1370
|
msg.msg_flags = 0;
|
1125
|
-
|
1126
|
-
|
1371
|
+
// Allocate enough space so we don't need to keep increasing this as size
|
1372
|
+
// of OPT_STATS increase
|
1127
1373
|
constexpr size_t cmsg_alloc_space =
|
1128
1374
|
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) +
|
1129
1375
|
CMSG_SPACE(sizeof(sock_extended_err) + sizeof(sockaddr_in)) +
|
1130
1376
|
CMSG_SPACE(32 * NLA_ALIGN(NLA_HDRLEN + sizeof(uint64_t)));
|
1131
|
-
|
1377
|
+
// Allocate aligned space for cmsgs received along with timestamps
|
1132
1378
|
union {
|
1133
1379
|
char rbuf[cmsg_alloc_space];
|
1134
1380
|
struct cmsghdr align;
|
@@ -1143,7 +1389,7 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1143
1389
|
} while (r < 0 && saved_errno == EINTR);
|
1144
1390
|
|
1145
1391
|
if (r == -1 && saved_errno == EAGAIN) {
|
1146
|
-
return processed_err;
|
1392
|
+
return processed_err; // No more errors to process
|
1147
1393
|
}
|
1148
1394
|
if (r == -1) {
|
1149
1395
|
return processed_err;
|
@@ -1153,7 +1399,7 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1153
1399
|
}
|
1154
1400
|
|
1155
1401
|
if (msg.msg_controllen == 0) {
|
1156
|
-
|
1402
|
+
// There was no control message found. It was probably spurious.
|
1157
1403
|
return processed_err;
|
1158
1404
|
}
|
1159
1405
|
bool seen = false;
|
@@ -1169,8 +1415,8 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1169
1415
|
seen = true;
|
1170
1416
|
processed_err = true;
|
1171
1417
|
} else {
|
1172
|
-
|
1173
|
-
|
1418
|
+
// Got a control message that is not a timestamp or zerocopy. Don't know
|
1419
|
+
// how to handle this.
|
1174
1420
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1175
1421
|
gpr_log(GPR_INFO,
|
1176
1422
|
"unknown control message cmsg_level:%d cmsg_type:%d",
|
@@ -1190,22 +1436,22 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
|
|
1190
1436
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1191
1437
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1192
1438
|
gpr_log(GPR_INFO, "TCP:%p got_error: %s", tcp,
|
1193
|
-
|
1439
|
+
grpc_core::StatusToString(error).c_str());
|
1194
1440
|
}
|
1195
1441
|
|
1196
|
-
if (error
|
1442
|
+
if (!error.ok() ||
|
1197
1443
|
static_cast<bool>(gpr_atm_acq_load(&tcp->stop_error_notification))) {
|
1198
|
-
|
1199
|
-
|
1444
|
+
// We aren't going to register to hear on error anymore, so it is safe to
|
1445
|
+
// unref.
|
1200
1446
|
TCP_UNREF(tcp, "error-tracking");
|
1201
1447
|
return;
|
1202
1448
|
}
|
1203
1449
|
|
1204
|
-
|
1205
|
-
|
1450
|
+
// We are still interested in collecting timestamps, so let's try reading
|
1451
|
+
// them.
|
1206
1452
|
bool processed = process_errors(tcp);
|
1207
|
-
|
1208
|
-
|
1453
|
+
// This might not a timestamps error. Set the read and write closures to be
|
1454
|
+
// ready.
|
1209
1455
|
if (!processed) {
|
1210
1456
|
grpc_fd_set_readable(tcp->em_fd);
|
1211
1457
|
grpc_fd_set_writable(tcp->em_fd);
|
@@ -1213,7 +1459,7 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
|
|
1213
1459
|
grpc_fd_notify_on_error(tcp->em_fd, &tcp->error_closure);
|
1214
1460
|
}
|
1215
1461
|
|
1216
|
-
#else
|
1462
|
+
#else // GRPC_LINUX_ERRQUEUE
|
1217
1463
|
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
1218
1464
|
grpc_tcp* /*tcp*/, grpc_slice_buffer* /*buf*/) {
|
1219
1465
|
return nullptr;
|
@@ -1224,6 +1470,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* /*tcp*/) {}
|
|
1224
1470
|
static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
|
1225
1471
|
size_t /*sending_length*/,
|
1226
1472
|
ssize_t* /*sent_length*/,
|
1473
|
+
int* /* saved_errno */,
|
1227
1474
|
int /*additional_flags*/) {
|
1228
1475
|
gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform");
|
1229
1476
|
GPR_ASSERT(0);
|
@@ -1235,17 +1482,14 @@ static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */,
|
|
1235
1482
|
gpr_log(GPR_ERROR, "Error handling is not supported for this platform");
|
1236
1483
|
GPR_ASSERT(0);
|
1237
1484
|
}
|
1238
|
-
#endif
|
1485
|
+
#endif // GRPC_LINUX_ERRQUEUE
|
1239
1486
|
|
1240
|
-
|
1241
|
-
|
1487
|
+
// If outgoing_buffer_arg is filled, shuts down the list early, so that any
|
1488
|
+
// release operations needed can be performed on the arg
|
1242
1489
|
void tcp_shutdown_buffer_list(grpc_tcp* tcp) {
|
1243
1490
|
if (tcp->outgoing_buffer_arg) {
|
1244
|
-
|
1245
|
-
|
1246
|
-
&tcp->tb_head, tcp->outgoing_buffer_arg,
|
1247
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("TracedBuffer list shutdown"));
|
1248
|
-
gpr_mu_unlock(&tcp->tb_mu);
|
1491
|
+
tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
|
1492
|
+
GRPC_ERROR_CREATE("TracedBuffer list shutdown"));
|
1249
1493
|
tcp->outgoing_buffer_arg = nullptr;
|
1250
1494
|
}
|
1251
1495
|
}
|
@@ -1304,6 +1548,7 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1304
1548
|
size_t unwind_slice_idx;
|
1305
1549
|
size_t unwind_byte_idx;
|
1306
1550
|
bool tried_sending_message;
|
1551
|
+
int saved_errno;
|
1307
1552
|
msghdr msg;
|
1308
1553
|
// iov consumes a large space. Keep it as the last item on the stack to
|
1309
1554
|
// improve locality. After all, we expect only the first elements of it being
|
@@ -1322,12 +1567,13 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1322
1567
|
// Before calling sendmsg (with or without timestamps): we
|
1323
1568
|
// take a single ref on the zerocopy send record.
|
1324
1569
|
tcp->tcp_zerocopy_send_ctx.NoteSend(record);
|
1570
|
+
saved_errno = 0;
|
1325
1571
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1326
1572
|
if (!tcp->ts_capable ||
|
1327
1573
|
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1328
|
-
MSG_ZEROCOPY)) {
|
1329
|
-
|
1330
|
-
|
1574
|
+
&saved_errno, MSG_ZEROCOPY)) {
|
1575
|
+
// We could not set socket options to collect Fathom timestamps.
|
1576
|
+
// Fallback on writing without timestamps.
|
1331
1577
|
tcp->ts_capable = false;
|
1332
1578
|
tcp_shutdown_buffer_list(tcp);
|
1333
1579
|
} else {
|
@@ -1337,31 +1583,36 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1337
1583
|
if (!tried_sending_message) {
|
1338
1584
|
msg.msg_control = nullptr;
|
1339
1585
|
msg.msg_controllen = 0;
|
1340
|
-
|
1341
|
-
|
1342
|
-
sent_length = tcp_send(tcp->fd, &msg, MSG_ZEROCOPY);
|
1586
|
+
grpc_core::global_stats().IncrementTcpWriteSize(sending_length);
|
1587
|
+
grpc_core::global_stats().IncrementTcpWriteIovSize(iov_size);
|
1588
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno, MSG_ZEROCOPY);
|
1589
|
+
}
|
1590
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterSend(
|
1591
|
+
saved_errno == ENOBUFS)) {
|
1592
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1343
1593
|
}
|
1344
1594
|
if (sent_length < 0) {
|
1345
1595
|
// If this particular send failed, drop ref taken earlier in this method.
|
1346
1596
|
tcp->tcp_zerocopy_send_ctx.UndoSend();
|
1347
|
-
if (
|
1597
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1348
1598
|
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
|
1349
1599
|
return false;
|
1350
|
-
} else if (
|
1351
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1600
|
+
} else if (saved_errno == EPIPE) {
|
1601
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1352
1602
|
tcp_shutdown_buffer_list(tcp);
|
1353
1603
|
return true;
|
1354
1604
|
} else {
|
1355
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1605
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1356
1606
|
tcp_shutdown_buffer_list(tcp);
|
1357
1607
|
return true;
|
1358
1608
|
}
|
1359
1609
|
}
|
1610
|
+
grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
|
1360
1611
|
tcp->bytes_counter += sent_length;
|
1361
1612
|
record->UpdateOffsetForBytesSent(sending_length,
|
1362
1613
|
static_cast<size_t>(sent_length));
|
1363
1614
|
if (record->AllSlicesSent()) {
|
1364
|
-
*error =
|
1615
|
+
*error = absl::OkStatus();
|
1365
1616
|
return true;
|
1366
1617
|
}
|
1367
1618
|
}
|
@@ -1396,6 +1647,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1396
1647
|
size_t trailing;
|
1397
1648
|
size_t unwind_slice_idx;
|
1398
1649
|
size_t unwind_byte_idx;
|
1650
|
+
int saved_errno;
|
1399
1651
|
|
1400
1652
|
// We always start at zero, because we eagerly unref and trim the slice
|
1401
1653
|
// buffer as we write
|
@@ -1427,11 +1679,13 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1427
1679
|
msg.msg_iovlen = iov_size;
|
1428
1680
|
msg.msg_flags = 0;
|
1429
1681
|
bool tried_sending_message = false;
|
1682
|
+
saved_errno = 0;
|
1430
1683
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1431
1684
|
if (!tcp->ts_capable ||
|
1432
|
-
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length
|
1433
|
-
|
1434
|
-
|
1685
|
+
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1686
|
+
&saved_errno)) {
|
1687
|
+
// We could not set socket options to collect Fathom timestamps.
|
1688
|
+
// Fallback on writing without timestamps.
|
1435
1689
|
tcp->ts_capable = false;
|
1436
1690
|
tcp_shutdown_buffer_list(tcp);
|
1437
1691
|
} else {
|
@@ -1442,14 +1696,14 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1442
1696
|
msg.msg_control = nullptr;
|
1443
1697
|
msg.msg_controllen = 0;
|
1444
1698
|
|
1445
|
-
|
1446
|
-
|
1699
|
+
grpc_core::global_stats().IncrementTcpWriteSize(sending_length);
|
1700
|
+
grpc_core::global_stats().IncrementTcpWriteIovSize(iov_size);
|
1447
1701
|
|
1448
|
-
sent_length = tcp_send(tcp->fd, &msg);
|
1702
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno);
|
1449
1703
|
}
|
1450
1704
|
|
1451
1705
|
if (sent_length < 0) {
|
1452
|
-
if (
|
1706
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1453
1707
|
tcp->outgoing_byte_idx = unwind_byte_idx;
|
1454
1708
|
// unref all and forget about all slices that have been written to this
|
1455
1709
|
// point
|
@@ -1457,20 +1711,21 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1457
1711
|
grpc_slice_buffer_remove_first(tcp->outgoing_buffer);
|
1458
1712
|
}
|
1459
1713
|
return false;
|
1460
|
-
} else if (
|
1461
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1462
|
-
|
1714
|
+
} else if (saved_errno == EPIPE) {
|
1715
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1716
|
+
grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
|
1463
1717
|
tcp_shutdown_buffer_list(tcp);
|
1464
1718
|
return true;
|
1465
1719
|
} else {
|
1466
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1467
|
-
|
1720
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1721
|
+
grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
|
1468
1722
|
tcp_shutdown_buffer_list(tcp);
|
1469
1723
|
return true;
|
1470
1724
|
}
|
1471
1725
|
}
|
1472
1726
|
|
1473
1727
|
GPR_ASSERT(tcp->outgoing_byte_idx == 0);
|
1728
|
+
grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
|
1474
1729
|
tcp->bytes_counter += sent_length;
|
1475
1730
|
trailing = sending_length - static_cast<size_t>(sent_length);
|
1476
1731
|
while (trailing > 0) {
|
@@ -1487,8 +1742,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1487
1742
|
}
|
1488
1743
|
}
|
1489
1744
|
if (outgoing_slice_idx == tcp->outgoing_buffer->count) {
|
1490
|
-
*error =
|
1491
|
-
|
1745
|
+
*error = absl::OkStatus();
|
1746
|
+
grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
|
1492
1747
|
return true;
|
1493
1748
|
}
|
1494
1749
|
}
|
@@ -1499,7 +1754,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1499
1754
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1500
1755
|
grpc_closure* cb;
|
1501
1756
|
|
1502
|
-
if (error
|
1757
|
+
if (!error.ok()) {
|
1503
1758
|
cb = tcp->write_cb;
|
1504
1759
|
tcp->write_cb = nullptr;
|
1505
1760
|
if (tcp->current_zerocopy_send != nullptr) {
|
@@ -1507,11 +1762,10 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1507
1762
|
"handle_write_err");
|
1508
1763
|
tcp->current_zerocopy_send = nullptr;
|
1509
1764
|
}
|
1510
|
-
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
1765
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1511
1766
|
TCP_UNREF(tcp, "write");
|
1512
1767
|
return;
|
1513
1768
|
}
|
1514
|
-
|
1515
1769
|
bool flush_result =
|
1516
1770
|
tcp->current_zerocopy_send != nullptr
|
1517
1771
|
? tcp_flush_zerocopy(tcp, tcp->current_zerocopy_send, &error)
|
@@ -1522,13 +1776,13 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1522
1776
|
}
|
1523
1777
|
notify_on_write(tcp);
|
1524
1778
|
// tcp_flush does not populate error if it has returned false.
|
1525
|
-
GPR_DEBUG_ASSERT(error
|
1779
|
+
GPR_DEBUG_ASSERT(error.ok());
|
1526
1780
|
} else {
|
1527
1781
|
cb = tcp->write_cb;
|
1528
1782
|
tcp->write_cb = nullptr;
|
1529
1783
|
tcp->current_zerocopy_send = nullptr;
|
1530
1784
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1531
|
-
gpr_log(GPR_INFO, "write: %s",
|
1785
|
+
gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str());
|
1532
1786
|
}
|
1533
1787
|
// No need to take a ref on error since tcp_flush provides a ref.
|
1534
1788
|
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
@@ -1537,12 +1791,13 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1537
1791
|
}
|
1538
1792
|
|
1539
1793
|
static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
1540
|
-
grpc_closure* cb, void* arg) {
|
1541
|
-
GPR_TIMER_SCOPE("tcp_write", 0);
|
1794
|
+
grpc_closure* cb, void* arg, int /*max_frame_size*/) {
|
1542
1795
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1543
|
-
grpc_error_handle error
|
1796
|
+
grpc_error_handle error;
|
1544
1797
|
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
1545
1798
|
|
1799
|
+
grpc_core::EventLog::Append("tcp-write-outstanding", buf->length);
|
1800
|
+
|
1546
1801
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1547
1802
|
size_t i;
|
1548
1803
|
|
@@ -1551,7 +1806,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1551
1806
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
1552
1807
|
char* data =
|
1553
1808
|
grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
1554
|
-
gpr_log(GPR_DEBUG, "DATA: %s", data);
|
1809
|
+
gpr_log(GPR_DEBUG, "WRITE DATA: %s", data);
|
1555
1810
|
gpr_free(data);
|
1556
1811
|
}
|
1557
1812
|
}
|
@@ -1564,9 +1819,8 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1564
1819
|
grpc_core::Closure::Run(
|
1565
1820
|
DEBUG_LOCATION, cb,
|
1566
1821
|
grpc_fd_is_shutdown(tcp->em_fd)
|
1567
|
-
? tcp_annotate_error(
|
1568
|
-
|
1569
|
-
: GRPC_ERROR_NONE);
|
1822
|
+
? tcp_annotate_error(GRPC_ERROR_CREATE("EOF"), tcp)
|
1823
|
+
: absl::OkStatus());
|
1570
1824
|
tcp_shutdown_buffer_list(tcp);
|
1571
1825
|
return;
|
1572
1826
|
}
|
@@ -1596,7 +1850,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1596
1850
|
notify_on_write(tcp);
|
1597
1851
|
} else {
|
1598
1852
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1599
|
-
gpr_log(GPR_INFO, "write: %s",
|
1853
|
+
gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str());
|
1600
1854
|
}
|
1601
1855
|
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1602
1856
|
}
|
@@ -1659,100 +1913,45 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
|
|
1659
1913
|
tcp_get_fd,
|
1660
1914
|
tcp_can_track_err};
|
1661
1915
|
|
1662
|
-
#define MAX_CHUNK_SIZE (32 * 1024 * 1024)
|
1663
|
-
|
1664
1916
|
grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
1665
|
-
const
|
1917
|
+
const grpc_core::PosixTcpOptions& options,
|
1666
1918
|
absl::string_view peer_string) {
|
1667
|
-
|
1668
|
-
int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE;
|
1669
|
-
int tcp_max_read_chunk_size = 4 * 1024 * 1024;
|
1670
|
-
int tcp_min_read_chunk_size = 256;
|
1671
|
-
bool tcp_tx_zerocopy_enabled = kZerocpTxEnabledDefault;
|
1672
|
-
int tcp_tx_zerocopy_send_bytes_thresh =
|
1673
|
-
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold;
|
1674
|
-
int tcp_tx_zerocopy_max_simult_sends =
|
1675
|
-
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends;
|
1676
|
-
if (channel_args != nullptr) {
|
1677
|
-
for (size_t i = 0; i < channel_args->num_args; i++) {
|
1678
|
-
if (0 ==
|
1679
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_TCP_READ_CHUNK_SIZE)) {
|
1680
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1681
|
-
tcp_read_chunk_size =
|
1682
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1683
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1684
|
-
GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE)) {
|
1685
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1686
|
-
tcp_min_read_chunk_size =
|
1687
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1688
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1689
|
-
GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE)) {
|
1690
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1691
|
-
tcp_max_read_chunk_size =
|
1692
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1693
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1694
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED)) {
|
1695
|
-
tcp_tx_zerocopy_enabled = grpc_channel_arg_get_bool(
|
1696
|
-
&channel_args->args[i], kZerocpTxEnabledDefault);
|
1697
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1698
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD)) {
|
1699
|
-
grpc_integer_options options = {
|
1700
|
-
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold, 0,
|
1701
|
-
INT_MAX};
|
1702
|
-
tcp_tx_zerocopy_send_bytes_thresh =
|
1703
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1704
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1705
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_MAX_SIMULT_SENDS)) {
|
1706
|
-
grpc_integer_options options = {
|
1707
|
-
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends, 0, INT_MAX};
|
1708
|
-
tcp_tx_zerocopy_max_simult_sends =
|
1709
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1710
|
-
}
|
1711
|
-
}
|
1712
|
-
}
|
1713
|
-
|
1714
|
-
if (tcp_min_read_chunk_size > tcp_max_read_chunk_size) {
|
1715
|
-
tcp_min_read_chunk_size = tcp_max_read_chunk_size;
|
1716
|
-
}
|
1717
|
-
tcp_read_chunk_size = grpc_core::Clamp(
|
1718
|
-
tcp_read_chunk_size, tcp_min_read_chunk_size, tcp_max_read_chunk_size);
|
1719
|
-
|
1720
|
-
grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
|
1721
|
-
tcp_tx_zerocopy_send_bytes_thresh);
|
1919
|
+
grpc_tcp* tcp = new grpc_tcp(options);
|
1722
1920
|
tcp->base.vtable = &vtable;
|
1723
1921
|
tcp->peer_string = std::string(peer_string);
|
1724
1922
|
tcp->fd = grpc_fd_wrapped_fd(em_fd);
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1923
|
+
GPR_ASSERT(options.resource_quota != nullptr);
|
1924
|
+
tcp->memory_owner =
|
1925
|
+
options.resource_quota->memory_quota()->CreateMemoryOwner(peer_string);
|
1728
1926
|
tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp));
|
1729
1927
|
grpc_resolved_address resolved_local_addr;
|
1730
1928
|
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
|
1731
1929
|
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
1930
|
+
absl::StatusOr<std::string> addr_uri;
|
1732
1931
|
if (getsockname(tcp->fd,
|
1733
1932
|
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
1734
|
-
&resolved_local_addr.len) < 0
|
1933
|
+
&resolved_local_addr.len) < 0 ||
|
1934
|
+
!(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
|
1735
1935
|
tcp->local_address = "";
|
1736
1936
|
} else {
|
1737
|
-
tcp->local_address =
|
1937
|
+
tcp->local_address = addr_uri.value();
|
1738
1938
|
}
|
1739
1939
|
tcp->read_cb = nullptr;
|
1740
1940
|
tcp->write_cb = nullptr;
|
1741
1941
|
tcp->current_zerocopy_send = nullptr;
|
1742
1942
|
tcp->release_fd_cb = nullptr;
|
1743
1943
|
tcp->release_fd = nullptr;
|
1744
|
-
tcp->
|
1745
|
-
tcp->target_length = static_cast<double>(tcp_read_chunk_size);
|
1746
|
-
tcp->min_read_chunk_size = tcp_min_read_chunk_size;
|
1747
|
-
tcp->max_read_chunk_size = tcp_max_read_chunk_size;
|
1944
|
+
tcp->target_length = static_cast<double>(options.tcp_read_chunk_size);
|
1748
1945
|
tcp->bytes_read_this_round = 0;
|
1749
|
-
|
1946
|
+
// Will be set to false by the very first endpoint read function
|
1750
1947
|
tcp->is_first_read = true;
|
1751
1948
|
tcp->bytes_counter = -1;
|
1752
1949
|
tcp->socket_ts_enabled = false;
|
1753
1950
|
tcp->ts_capable = true;
|
1754
1951
|
tcp->outgoing_buffer_arg = nullptr;
|
1755
|
-
|
1952
|
+
tcp->min_progress_size = 1;
|
1953
|
+
if (options.tcp_tx_zero_copy_enabled &&
|
1954
|
+
!tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1756
1955
|
#ifdef GRPC_LINUX_ERRQUEUE
|
1757
1956
|
const int enable = 1;
|
1758
1957
|
auto err =
|
@@ -1764,14 +1963,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1764
1963
|
}
|
1765
1964
|
#endif
|
1766
1965
|
}
|
1767
|
-
|
1966
|
+
// paired with unref in grpc_tcp_destroy
|
1768
1967
|
new (&tcp->refcount) grpc_core::RefCount(
|
1769
1968
|
1, GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) ? "tcp" : nullptr);
|
1770
1969
|
gpr_atm_no_barrier_store(&tcp->shutdown_count, 0);
|
1771
1970
|
tcp->em_fd = em_fd;
|
1772
1971
|
grpc_slice_buffer_init(&tcp->last_read_buffer);
|
1773
|
-
gpr_mu_init(&tcp->tb_mu);
|
1774
|
-
tcp->tb_head = nullptr;
|
1775
1972
|
GRPC_CLOSURE_INIT(&tcp->read_done_closure, tcp_handle_read, tcp,
|
1776
1973
|
grpc_schedule_on_exec_ctx);
|
1777
1974
|
if (grpc_event_engine_run_in_background()) {
|
@@ -1784,7 +1981,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1784
1981
|
tcp_drop_uncovered_then_handle_write, tcp,
|
1785
1982
|
grpc_schedule_on_exec_ctx);
|
1786
1983
|
}
|
1787
|
-
|
1984
|
+
// Always assume there is something on the queue to read.
|
1788
1985
|
tcp->inq = 1;
|
1789
1986
|
#ifdef GRPC_HAVE_TCP_INQ
|
1790
1987
|
int one = 1;
|
@@ -1796,12 +1993,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1796
1993
|
}
|
1797
1994
|
#else
|
1798
1995
|
tcp->inq_capable = false;
|
1799
|
-
#endif
|
1800
|
-
|
1996
|
+
#endif // GRPC_HAVE_TCP_INQ
|
1997
|
+
// Start being notified on errors if event engine can track errors.
|
1801
1998
|
if (grpc_event_engine_can_track_errors()) {
|
1802
|
-
|
1803
|
-
|
1804
|
-
|
1999
|
+
// Grab a ref to tcp so that we can safely access the tcp struct when
|
2000
|
+
// processing errors. We unref when we no longer want to track errors
|
2001
|
+
// separately.
|
1805
2002
|
TCP_REF(tcp, "error-tracking");
|
1806
2003
|
gpr_atm_rel_store(&tcp->stop_error_notification, 0);
|
1807
2004
|
GRPC_CLOSURE_INIT(&tcp->error_closure, tcp_handle_error, tcp,
|
@@ -1820,13 +2017,17 @@ int grpc_tcp_fd(grpc_endpoint* ep) {
|
|
1820
2017
|
|
1821
2018
|
void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
|
1822
2019
|
grpc_closure* done) {
|
2020
|
+
if (grpc_event_engine::experimental::grpc_is_event_engine_endpoint(ep)) {
|
2021
|
+
return grpc_event_engine::experimental::
|
2022
|
+
grpc_event_engine_endpoint_destroy_and_release_fd(ep, fd, done);
|
2023
|
+
}
|
1823
2024
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1824
2025
|
GPR_ASSERT(ep->vtable == &vtable);
|
1825
2026
|
tcp->release_fd = fd;
|
1826
2027
|
tcp->release_fd_cb = done;
|
1827
|
-
|
2028
|
+
grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
|
1828
2029
|
if (grpc_event_engine_can_track_errors()) {
|
1829
|
-
|
2030
|
+
// Stop errors notification.
|
1830
2031
|
ZerocopyDisableAndWaitForRemaining(tcp);
|
1831
2032
|
gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
|
1832
2033
|
grpc_fd_set_error(tcp->em_fd);
|
@@ -1841,4 +2042,4 @@ void grpc_tcp_posix_shutdown() {
|
|
1841
2042
|
g_backup_poller_mu = nullptr;
|
1842
2043
|
}
|
1843
2044
|
|
1844
|
-
#endif
|
2045
|
+
#endif // GRPC_POSIX_SOCKET_TCP
|