grpc 1.46.3 → 1.53.1
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 +419 -241
- 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 -791
- 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 +836 -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 +67 -61
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +26 -6
- data/src/core/ext/filters/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 +401 -451
- data/src/core/ext/filters/client_channel/client_channel.h +68 -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 +16 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +100 -112
- data/src/core/ext/filters/client_channel/http_proxy.h +38 -31
- 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 +366 -407
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +491 -405
- 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 +619 -634
- 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 +223 -220
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +214 -153
- 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 +199 -210
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +382 -368
- 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 +531 -163
- 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 +54 -22
- 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 +136 -68
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +29 -14
- 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 +368 -305
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +166 -163
- 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 +332 -384
- 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 +34 -108
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +20 -12
- 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 +44 -22
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +20 -11
- 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 +76 -54
- data/src/core/ext/filters/http/client/http_client_filter.h +36 -23
- data/src/core/ext/filters/http/client_authority_filter.cc +33 -38
- data/src/core/ext/filters/http/client_authority_filter.h +27 -24
- data/src/core/ext/filters/http/http_filters_plugin.cc +46 -55
- 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 -271
- 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 +28 -12
- 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 +185 -241
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +38 -30
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +204 -211
- 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 +43 -38
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +35 -31
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +801 -1067
- 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 +44 -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 +221 -372
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +338 -158
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +6 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +16 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +516 -751
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +38 -27
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +86 -76
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +79 -49
- 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 +248 -296
- data/src/core/ext/transport/chttp2/transport/parsing.cc +363 -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 +121 -94
- 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 +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +33 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- 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 +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +25 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +168 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -43
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +195 -116
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +35 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +179 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +23 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +137 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +132 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +67 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +15 -9
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +73 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +39 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +194 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +28 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +26 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +124 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +19 -15
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +78 -69
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +168 -82
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +887 -166
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- 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 +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- 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 +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +27 -14
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +29 -2
- 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 +38 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +207 -52
- 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 +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +73 -23
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- 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 +133 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +656 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- 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 +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- 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 +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -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 +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- 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 +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -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 +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -2
- 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 +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- 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 +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- 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 +1 -2
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- 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/cluster.upbdefs.c +232 -222
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
- 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/health_check.upbdefs.c +81 -75
- 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/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 -74
- 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 +740 -667
- 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 +485 -467
- 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 +149 -145
- 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/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 +69 -5
- data/src/core/ext/xds/certificate_provider_store.h +22 -5
- 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 +90 -196
- 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 +41 -96
- 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 +35 -26
- data/src/core/ext/xds/xds_certificate_provider.h +29 -5
- 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 +849 -1316
- data/src/core/ext/xds/xds_client.h +57 -61
- 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 +67 -77
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +47 -29
- 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 +265 -162
- 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 +67 -58
- 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 +592 -570
- data/src/core/ext/xds/xds_route_config.h +74 -40
- 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 +227 -178
- 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 +57 -33
- data/src/core/lib/backoff/backoff.cc +19 -21
- data/src/core/lib/backoff/backoff.h +21 -21
- data/src/core/lib/backoff/random_early_detection.cc +31 -0
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +6 -4
- data/src/core/lib/channel/call_tracer.h +23 -8
- data/src/core/lib/channel/channel_args.cc +149 -61
- data/src/core/lib/channel/channel_args.h +308 -104
- data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +6 -5
- 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 +184 -135
- data/src/core/lib/channel/channel_stack_builder.cc +26 -39
- data/src/core/lib/channel/channel_stack_builder.h +33 -40
- data/src/core/lib/channel/channel_stack_builder_impl.cc +84 -60
- data/src/core/lib/channel/channel_stack_builder_impl.h +9 -9
- 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 +21 -23
- data/src/core/lib/channel/context.h +25 -21
- data/src/core/lib/channel/promise_based_filter.cc +1896 -377
- data/src/core/lib/channel/promise_based_filter.h +592 -92
- 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 +88 -63
- 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 -645
- data/src/core/lib/debug/stats_data.h +293 -545
- 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/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.cc} +9 -17
- 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 +35 -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 +3 -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 +5 -3
- 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 +3 -3
- 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 +22 -24
- data/src/core/lib/gprpp/ref_counted_ptr.h +42 -55
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- 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 +55 -35
- 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 +52 -9
- data/src/core/lib/gprpp/time.h +78 -4
- 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 +53 -22
- 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 +50 -42
- data/src/core/lib/http/httpcli_ssl_credentials.h +6 -4
- data/src/core/lib/http/parser.cc +78 -90
- data/src/core/lib/http/parser.h +38 -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 +22 -22
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +36 -29
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +31 -22
- 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 -121
- 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 +30 -27
- 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 -37
- 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 +243 -105
- 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 +505 -362
- 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 +381 -133
- 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 +17 -8
- 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 +31 -3
- 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 +9 -3
- data/src/core/lib/promise/latch.h +109 -22
- 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/lib/promise/trace.h +24 -0
- 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 +23 -2
- data/src/core/lib/resource_quota/api.h +13 -4
- 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 +12 -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 +10 -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 +19 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +16 -5
- 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 +56 -34
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +31 -24
- data/src/core/lib/security/credentials/alts/alts_credentials.h +63 -59
- 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 +10 -0
- data/src/core/lib/security/credentials/call_creds_util.h +4 -3
- 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 +34 -34
- data/src/core/lib/security/credentials/composite/composite_credentials.h +45 -33
- data/src/core/lib/security/credentials/credentials.cc +23 -26
- data/src/core/lib/security/credentials/credentials.h +79 -65
- 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 +43 -39
- data/src/core/lib/security/credentials/fake/fake_credentials.h +51 -44
- 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 +146 -114
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +33 -27
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +31 -21
- data/src/core/lib/security/credentials/iam/iam_credentials.h +33 -23
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +15 -5
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +14 -10
- 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 +32 -29
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +37 -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 +32 -26
- data/src/core/lib/security/credentials/local/local_credentials.h +34 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +95 -87
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +46 -25
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +35 -31
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +48 -24
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +44 -42
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +39 -27
- 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 +27 -16
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +36 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +37 -14
- 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 +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +46 -44
- data/src/core/lib/security/credentials/tls/tls_credentials.h +30 -27
- 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 +33 -35
- data/src/core/lib/security/credentials/xds/xds_credentials.h +24 -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 +64 -47
- 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 +58 -45
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +55 -46
- 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 +58 -56
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +48 -28
- data/src/core/lib/security/transport/auth_filters.h +53 -24
- data/src/core/lib/security/transport/client_auth_filter.cc +57 -40
- data/src/core/lib/security/transport/secure_endpoint.cc +130 -75
- data/src/core/lib/security/transport/secure_endpoint.h +28 -27
- data/src/core/lib/security/transport/security_handshaker.cc +144 -114
- 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 +2232 -483
- data/src/core/lib/surface/call.h +135 -42
- 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/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/surface/call_trace.h} +12 -10
- data/src/core/lib/surface/channel.cc +217 -284
- data/src/core/lib/surface/channel.h +137 -90
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +22 -20
- 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 +406 -174
- data/src/core/lib/surface/server.h +56 -24
- data/src/core/lib/surface/validate_metadata.cc +64 -77
- data/src/core/lib/surface/validate_metadata.h +33 -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 +405 -304
- data/src/core/lib/transport/parsed_metadata.cc +2 -4
- data/src/core/lib/transport/parsed_metadata.h +33 -14
- 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 +243 -213
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +55 -45
- 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 +60 -69
- 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 +51 -43
- 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 +299 -370
- data/src/core/tsi/ssl_transport_security.h +206 -203
- 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 +344 -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/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +0 -6
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -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/third_party/utf8_range/utf8_range.h +1 -1
- 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 +161 -65
- 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 +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- 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 +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- 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 +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -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 +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- 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 +7 -196
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +372 -102
- 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/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/server_config_selector/server_config_selector.cc +0 -61
- 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 -158
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/error_internal.h +0 -66
- 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/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/promise/call_push_pull.h +0 -144
- 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 -164
- 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,18 +49,22 @@
|
|
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"
|
64
70
|
#include "src/core/lib/resource_quota/trace.h"
|
@@ -105,7 +111,7 @@ class TcpZerocopySendRecord {
|
|
105
111
|
|
106
112
|
~TcpZerocopySendRecord() {
|
107
113
|
AssertEmpty();
|
108
|
-
|
114
|
+
grpc_slice_buffer_destroy(&buf_);
|
109
115
|
}
|
110
116
|
|
111
117
|
// Given the slices that we wish to send, and the current offset into the
|
@@ -173,7 +179,7 @@ class TcpZerocopySendRecord {
|
|
173
179
|
// reference to the underlying data since we no longer need it.
|
174
180
|
void AllSendsComplete() {
|
175
181
|
GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0);
|
176
|
-
|
182
|
+
grpc_slice_buffer_reset_and_unref(&buf_);
|
177
183
|
}
|
178
184
|
|
179
185
|
grpc_slice_buffer buf_;
|
@@ -232,7 +238,11 @@ class TcpZerocopySendCtx {
|
|
232
238
|
// buffers that were sent with the corresponding call to sendmsg().
|
233
239
|
void NoteSend(TcpZerocopySendRecord* record) {
|
234
240
|
record->Ref();
|
235
|
-
|
241
|
+
{
|
242
|
+
MutexLock guard(&lock_);
|
243
|
+
is_in_write_ = true;
|
244
|
+
AssociateSeqWithSendRecordLocked(last_send_, record);
|
245
|
+
}
|
236
246
|
++last_send_;
|
237
247
|
}
|
238
248
|
|
@@ -253,8 +263,8 @@ class TcpZerocopySendCtx {
|
|
253
263
|
|
254
264
|
// Simply associate this send record (and the underlying sent data buffers)
|
255
265
|
// with the implicit sequence number for this zerocopy sendmsg().
|
256
|
-
void
|
257
|
-
|
266
|
+
void AssociateSeqWithSendRecordLocked(uint32_t seq,
|
267
|
+
TcpZerocopySendRecord* record) {
|
258
268
|
ctx_lookup_.emplace(seq, record);
|
259
269
|
}
|
260
270
|
|
@@ -312,7 +322,107 @@ class TcpZerocopySendCtx {
|
|
312
322
|
// zerocopy is not useful for small transfers.
|
313
323
|
size_t threshold_bytes() const { return threshold_bytes_; }
|
314
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
|
+
|
315
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
|
+
|
316
426
|
TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
|
317
427
|
auto iter = ctx_lookup_.find(seq);
|
318
428
|
GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
|
@@ -349,6 +459,8 @@ class TcpZerocopySendCtx {
|
|
349
459
|
size_t threshold_bytes_ = kDefaultSendBytesThreshold;
|
350
460
|
std::unordered_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_;
|
351
461
|
bool memory_limited_ = false;
|
462
|
+
bool is_in_write_ = false;
|
463
|
+
OMemState zcopy_enobuf_state_;
|
352
464
|
};
|
353
465
|
|
354
466
|
} // namespace grpc_core
|
@@ -357,16 +469,21 @@ using grpc_core::TcpZerocopySendCtx;
|
|
357
469
|
using grpc_core::TcpZerocopySendRecord;
|
358
470
|
|
359
471
|
namespace {
|
472
|
+
|
360
473
|
struct grpc_tcp {
|
361
|
-
grpc_tcp(
|
362
|
-
:
|
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) {}
|
363
480
|
grpc_endpoint base;
|
364
481
|
grpc_fd* em_fd;
|
365
482
|
int fd;
|
366
|
-
|
367
|
-
|
483
|
+
// Used by the endpoint read function to distinguish the very first read call
|
484
|
+
// from the rest
|
368
485
|
bool is_first_read;
|
369
|
-
bool has_posted_reclaimer;
|
486
|
+
bool has_posted_reclaimer ABSL_GUARDED_BY(read_mu) = false;
|
370
487
|
double target_length;
|
371
488
|
double bytes_read_this_round;
|
372
489
|
grpc_core::RefCount refcount;
|
@@ -374,17 +491,18 @@ struct grpc_tcp {
|
|
374
491
|
|
375
492
|
int min_read_chunk_size;
|
376
493
|
int max_read_chunk_size;
|
494
|
+
int set_rcvlowat = 0;
|
377
495
|
|
378
|
-
|
496
|
+
// garbage after the last read
|
379
497
|
grpc_slice_buffer last_read_buffer;
|
380
498
|
|
381
|
-
|
499
|
+
grpc_core::Mutex read_mu;
|
382
500
|
grpc_slice_buffer* incoming_buffer ABSL_GUARDED_BY(read_mu) = nullptr;
|
383
|
-
int inq;
|
384
|
-
bool inq_capable;
|
501
|
+
int inq; // bytes pending on the socket from the last read.
|
502
|
+
bool inq_capable; // cache whether kernel supports inq
|
385
503
|
|
386
504
|
grpc_slice_buffer* outgoing_buffer;
|
387
|
-
|
505
|
+
// byte within outgoing_buffer->slices[0] to write next
|
388
506
|
size_t outgoing_byte_idx;
|
389
507
|
|
390
508
|
grpc_closure* read_cb;
|
@@ -402,33 +520,33 @@ struct grpc_tcp {
|
|
402
520
|
grpc_core::MemoryOwner memory_owner;
|
403
521
|
grpc_core::MemoryAllocator::Reservation self_reservation;
|
404
522
|
|
405
|
-
grpc_core::
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
* 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.
|
417
534
|
void* outgoing_buffer_arg;
|
418
|
-
|
419
|
-
|
420
|
-
|
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.
|
421
538
|
int bytes_counter;
|
422
|
-
bool socket_ts_enabled;
|
423
|
-
|
424
|
-
bool ts_capable;
|
425
|
-
gpr_atm stop_error_notification;
|
426
|
-
|
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
|
427
544
|
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
|
428
545
|
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
|
429
546
|
|
430
|
-
|
431
|
-
|
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
|
432
550
|
};
|
433
551
|
|
434
552
|
struct backup_poller {
|
@@ -468,14 +586,13 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
|
468
586
|
}
|
469
587
|
gpr_mu_lock(p->pollset_mu);
|
470
588
|
grpc_core::Timestamp deadline =
|
471
|
-
grpc_core::
|
472
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS();
|
589
|
+
grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(10);
|
473
590
|
GRPC_LOG_IF_ERROR(
|
474
591
|
"backup_poller:pollset_work",
|
475
592
|
grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
|
476
593
|
gpr_mu_unlock(p->pollset_mu);
|
477
594
|
g_backup_poller_mu->Lock();
|
478
|
-
|
595
|
+
// last "uncovered" notification is the ref that keeps us polling
|
479
596
|
if (g_uncovered_notifications_pending == 1) {
|
480
597
|
GPR_ASSERT(g_backup_poller == p);
|
481
598
|
g_backup_poller = nullptr;
|
@@ -492,7 +609,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
|
492
609
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
493
610
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p reschedule", p);
|
494
611
|
}
|
495
|
-
grpc_core::Executor::Run(&p->run_poller,
|
612
|
+
grpc_core::Executor::Run(&p->run_poller, absl::OkStatus(),
|
496
613
|
grpc_core::ExecutorType::DEFAULT,
|
497
614
|
grpc_core::ExecutorJobType::LONG);
|
498
615
|
}
|
@@ -530,13 +647,12 @@ static void cover_self(grpc_tcp* tcp) {
|
|
530
647
|
g_backup_poller = p;
|
531
648
|
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
|
532
649
|
g_backup_poller_mu->Unlock();
|
533
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
|
534
650
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
535
651
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p create", p);
|
536
652
|
}
|
537
653
|
grpc_core::Executor::Run(
|
538
654
|
GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, nullptr),
|
539
|
-
|
655
|
+
absl::OkStatus(), grpc_core::ExecutorType::DEFAULT,
|
540
656
|
grpc_core::ExecutorJobType::LONG);
|
541
657
|
} else {
|
542
658
|
old_count = g_uncovered_notifications_pending++;
|
@@ -571,7 +687,7 @@ static void tcp_drop_uncovered_then_handle_write(void* arg,
|
|
571
687
|
grpc_error_handle error) {
|
572
688
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
573
689
|
gpr_log(GPR_INFO, "TCP:%p got_write: %s", arg,
|
574
|
-
|
690
|
+
grpc_core::StatusToString(error).c_str());
|
575
691
|
}
|
576
692
|
drop_uncovered(static_cast<grpc_tcp*>(arg));
|
577
693
|
tcp_handle_write(arg, error);
|
@@ -582,9 +698,9 @@ static void add_to_estimate(grpc_tcp* tcp, size_t bytes) {
|
|
582
698
|
}
|
583
699
|
|
584
700
|
static void finish_estimate(grpc_tcp* tcp) {
|
585
|
-
|
586
|
-
|
587
|
-
|
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
|
588
704
|
if (tcp->bytes_read_this_round > tcp->target_length * 0.8) {
|
589
705
|
tcp->target_length =
|
590
706
|
std::max(2 * tcp->target_length, tcp->bytes_read_this_round);
|
@@ -599,11 +715,12 @@ static grpc_error_handle tcp_annotate_error(grpc_error_handle src_error,
|
|
599
715
|
grpc_tcp* tcp) {
|
600
716
|
return grpc_error_set_str(
|
601
717
|
grpc_error_set_int(
|
602
|
-
grpc_error_set_int(src_error,
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
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);
|
607
724
|
}
|
608
725
|
|
609
726
|
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
|
@@ -618,15 +735,10 @@ static void tcp_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
|
618
735
|
static void tcp_free(grpc_tcp* tcp) {
|
619
736
|
grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd,
|
620
737
|
"tcp_unref_orphan");
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
grpc_core::TracedBuffer::Shutdown(
|
625
|
-
&tcp->tb_head, tcp->outgoing_buffer_arg,
|
626
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("endpoint destroyed"));
|
627
|
-
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"));
|
628
741
|
tcp->outgoing_buffer_arg = nullptr;
|
629
|
-
gpr_mu_destroy(&tcp->tb_mu);
|
630
742
|
delete tcp;
|
631
743
|
}
|
632
744
|
|
@@ -658,7 +770,7 @@ static void tcp_ref(grpc_tcp* tcp) { tcp->refcount.Ref(); }
|
|
658
770
|
|
659
771
|
static void tcp_destroy(grpc_endpoint* ep) {
|
660
772
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
661
|
-
|
773
|
+
grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
|
662
774
|
if (grpc_event_engine_can_track_errors()) {
|
663
775
|
ZerocopyDisableAndWaitForRemaining(tcp);
|
664
776
|
gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
|
@@ -674,10 +786,10 @@ static void perform_reclamation(grpc_tcp* tcp)
|
|
674
786
|
}
|
675
787
|
tcp->read_mu.Lock();
|
676
788
|
if (tcp->incoming_buffer != nullptr) {
|
677
|
-
|
789
|
+
grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
|
678
790
|
}
|
679
|
-
tcp->read_mu.Unlock();
|
680
791
|
tcp->has_posted_reclaimer = false;
|
792
|
+
tcp->read_mu.Unlock();
|
681
793
|
}
|
682
794
|
|
683
795
|
static void maybe_post_reclaimer(grpc_tcp* tcp)
|
@@ -700,23 +812,67 @@ static void tcp_trace_read(grpc_tcp* tcp, grpc_error_handle error)
|
|
700
812
|
gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
|
701
813
|
size_t i;
|
702
814
|
gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
|
703
|
-
tcp->peer_string.c_str(),
|
815
|
+
tcp->peer_string.c_str(), grpc_core::StatusToString(error).c_str());
|
704
816
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
705
817
|
for (i = 0; i < tcp->incoming_buffer->count; i++) {
|
706
818
|
char* dump = grpc_dump_slice(tcp->incoming_buffer->slices[i],
|
707
819
|
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
708
|
-
gpr_log(GPR_DEBUG, "DATA: %s", dump);
|
820
|
+
gpr_log(GPR_DEBUG, "READ DATA: %s", dump);
|
709
821
|
gpr_free(dump);
|
710
822
|
}
|
711
823
|
}
|
712
824
|
}
|
713
825
|
}
|
714
826
|
|
715
|
-
|
716
|
-
|
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;
|
870
|
+
}
|
871
|
+
|
872
|
+
// Returns true if data available to read or error other than EAGAIN.
|
873
|
+
#define MAX_READ_IOVEC 64
|
717
874
|
static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
718
875
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
719
|
-
GPR_TIMER_SCOPE("tcp_do_read", 0);
|
720
876
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
721
877
|
gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
|
722
878
|
}
|
@@ -731,7 +887,7 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
731
887
|
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int));
|
732
888
|
#else
|
733
889
|
constexpr size_t cmsg_alloc_space = 24 /* CMSG_SPACE(sizeof(int)) */;
|
734
|
-
#endif
|
890
|
+
#endif // GRPC_LINUX_ERRQUEUE
|
735
891
|
char cmsgbuf[cmsg_alloc_space];
|
736
892
|
for (size_t i = 0; i < iov_len; i++) {
|
737
893
|
iov[i].iov_base = GRPC_SLICE_START_PTR(tcp->incoming_buffer->slices[i]);
|
@@ -739,11 +895,12 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
739
895
|
}
|
740
896
|
|
741
897
|
GPR_ASSERT(tcp->incoming_buffer->length != 0);
|
898
|
+
GPR_DEBUG_ASSERT(tcp->min_progress_size > 0);
|
742
899
|
|
743
900
|
do {
|
744
|
-
|
745
|
-
|
746
|
-
|
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.
|
747
904
|
tcp->inq = 1;
|
748
905
|
|
749
906
|
msg.msg_name = nullptr;
|
@@ -759,51 +916,49 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
759
916
|
}
|
760
917
|
msg.msg_flags = 0;
|
761
918
|
|
762
|
-
|
763
|
-
|
919
|
+
grpc_core::global_stats().IncrementTcpReadOffer(
|
920
|
+
tcp->incoming_buffer->length);
|
921
|
+
grpc_core::global_stats().IncrementTcpReadOfferIovSize(
|
922
|
+
tcp->incoming_buffer->count);
|
764
923
|
|
765
924
|
do {
|
766
|
-
|
767
|
-
GRPC_STATS_INC_SYSCALL_READ();
|
925
|
+
grpc_core::global_stats().IncrementSyscallRead();
|
768
926
|
read_bytes = recvmsg(tcp->fd, &msg, 0);
|
769
927
|
} while (read_bytes < 0 && errno == EINTR);
|
770
928
|
|
771
|
-
|
772
|
-
|
773
|
-
|
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) {
|
774
943
|
tcp->inq = 1;
|
775
944
|
break;
|
776
945
|
}
|
777
946
|
|
778
|
-
if (read_bytes
|
779
|
-
|
780
|
-
|
781
|
-
if (
|
782
|
-
|
783
|
-
finish_estimate(tcp);
|
784
|
-
tcp->inq = 0;
|
785
|
-
return false;
|
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);
|
786
952
|
} else {
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
953
|
+
*error =
|
954
|
+
tcp_annotate_error(absl::InternalError(absl::StrCat(
|
955
|
+
"recvmsg:", grpc_core::StrError(errno))),
|
956
|
+
tcp);
|
791
957
|
}
|
792
|
-
}
|
793
|
-
if (read_bytes == 0) {
|
794
|
-
/* 0 read size ==> end of stream
|
795
|
-
*
|
796
|
-
* We may have read something, i.e., total_read_bytes > 0, but
|
797
|
-
* since the connection is closed we will drop the data here, because we
|
798
|
-
* can't call the callback multiple times. */
|
799
|
-
tcp->curr_read_completed = true;
|
800
|
-
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
801
|
-
*error = tcp_annotate_error(
|
802
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp);
|
803
958
|
return true;
|
804
959
|
}
|
805
960
|
|
806
|
-
|
961
|
+
grpc_core::global_stats().IncrementTcpReadSize(read_bytes);
|
807
962
|
add_to_estimate(tcp, static_cast<size_t>(read_bytes));
|
808
963
|
GPR_DEBUG_ASSERT((size_t)read_bytes <=
|
809
964
|
tcp->incoming_buffer->length - total_read_bytes);
|
@@ -820,15 +975,15 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
820
975
|
}
|
821
976
|
}
|
822
977
|
}
|
823
|
-
#endif
|
978
|
+
#endif // GRPC_HAVE_TCP_INQ
|
824
979
|
|
825
980
|
total_read_bytes += read_bytes;
|
826
981
|
if (tcp->inq == 0 || total_read_bytes == tcp->incoming_buffer->length) {
|
827
982
|
break;
|
828
983
|
}
|
829
984
|
|
830
|
-
|
831
|
-
|
985
|
+
// We had a partial read, and still have space to read more data.
|
986
|
+
// So, adjust IOVs and try to read more.
|
832
987
|
size_t remaining = read_bytes;
|
833
988
|
size_t j = 0;
|
834
989
|
for (size_t i = 0; i < iov_len; i++) {
|
@@ -853,48 +1008,75 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
853
1008
|
finish_estimate(tcp);
|
854
1009
|
}
|
855
1010
|
|
856
|
-
// There may be more data to be read because recvmsg did not return EAGAIN.
|
857
|
-
tcp->curr_read_completed = false;
|
858
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
|
+
}
|
859
1039
|
if (total_read_bytes < tcp->incoming_buffer->length) {
|
860
1040
|
grpc_slice_buffer_trim_end(tcp->incoming_buffer,
|
861
1041
|
tcp->incoming_buffer->length - total_read_bytes,
|
862
1042
|
&tcp->last_read_buffer);
|
863
1043
|
}
|
864
|
-
*error = GRPC_ERROR_NONE;
|
865
1044
|
return true;
|
866
1045
|
}
|
867
1046
|
|
868
1047
|
static void maybe_make_read_slices(grpc_tcp* tcp)
|
869
1048
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
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;
|
878
1061
|
}
|
879
|
-
int target_length = static_cast<int>(tcp->target_length);
|
880
1062
|
int extra_wanted =
|
881
|
-
|
882
|
-
if (
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
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
|
+
}
|
887
1072
|
} else {
|
888
|
-
|
889
|
-
|
890
|
-
|
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
|
+
}
|
891
1079
|
}
|
892
|
-
grpc_slice_buffer_add_indexed(
|
893
|
-
tcp->incoming_buffer,
|
894
|
-
tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
|
895
|
-
tcp->curr_min_read_chunk_size,
|
896
|
-
grpc_core::Clamp(extra_wanted, tcp->curr_min_read_chunk_size,
|
897
|
-
tcp->max_read_chunk_size))));
|
898
1080
|
maybe_post_reclaimer(tcp);
|
899
1081
|
}
|
900
1082
|
}
|
@@ -903,24 +1085,33 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
903
1085
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
904
1086
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
905
1087
|
gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp,
|
906
|
-
|
1088
|
+
grpc_core::StatusToString(error).c_str());
|
907
1089
|
}
|
908
1090
|
tcp->read_mu.Lock();
|
909
1091
|
grpc_error_handle tcp_read_error;
|
910
|
-
if (GPR_LIKELY(error
|
1092
|
+
if (GPR_LIKELY(error.ok())) {
|
911
1093
|
maybe_make_read_slices(tcp);
|
912
1094
|
if (!tcp_do_read(tcp, &tcp_read_error)) {
|
913
|
-
|
1095
|
+
// Maybe update rcv lowat value based on the number of bytes read in this
|
1096
|
+
// round.
|
1097
|
+
update_rcvlowat(tcp);
|
914
1098
|
tcp->read_mu.Unlock();
|
1099
|
+
// We've consumed the edge, request a new one
|
915
1100
|
notify_on_read(tcp);
|
916
1101
|
return;
|
917
1102
|
}
|
918
1103
|
tcp_trace_read(tcp, tcp_read_error);
|
919
1104
|
} else {
|
920
|
-
tcp_read_error =
|
921
|
-
|
922
|
-
|
923
|
-
}
|
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);
|
924
1115
|
grpc_closure* cb = tcp->read_cb;
|
925
1116
|
tcp->read_cb = nullptr;
|
926
1117
|
tcp->incoming_buffer = nullptr;
|
@@ -930,62 +1121,67 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
930
1121
|
}
|
931
1122
|
|
932
1123
|
static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
933
|
-
grpc_closure* cb, bool urgent) {
|
1124
|
+
grpc_closure* cb, bool urgent, int min_progress_size) {
|
934
1125
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
935
1126
|
GPR_ASSERT(tcp->read_cb == nullptr);
|
936
1127
|
tcp->read_cb = cb;
|
937
1128
|
tcp->read_mu.Lock();
|
938
1129
|
tcp->incoming_buffer = incoming_buffer;
|
939
|
-
|
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);
|
940
1134
|
grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
|
941
|
-
tcp->read_mu.Unlock();
|
942
1135
|
TCP_REF(tcp, "read");
|
943
1136
|
if (tcp->is_first_read) {
|
944
|
-
|
945
|
-
|
1137
|
+
tcp->read_mu.Unlock();
|
1138
|
+
// Endpoint read called for the very first time. Register read callback with
|
1139
|
+
// the polling engine
|
946
1140
|
tcp->is_first_read = false;
|
947
1141
|
notify_on_read(tcp);
|
948
1142
|
} else if (!urgent && tcp->inq == 0) {
|
949
|
-
|
950
|
-
|
951
|
-
|
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
|
+
//
|
952
1147
|
notify_on_read(tcp);
|
953
1148
|
} else {
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
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
|
959
1155
|
grpc_core::Closure::Run(DEBUG_LOCATION, &tcp->read_done_closure,
|
960
|
-
|
1156
|
+
absl::OkStatus());
|
961
1157
|
}
|
962
1158
|
}
|
963
1159
|
|
964
|
-
|
965
|
-
|
966
|
-
ssize_t tcp_send(int fd, const struct msghdr* msg, int
|
967
|
-
|
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) {
|
968
1164
|
ssize_t sent_length;
|
969
1165
|
do {
|
970
|
-
|
971
|
-
|
1166
|
+
// TODO(klempner): Cork if this is a partial write
|
1167
|
+
grpc_core::global_stats().IncrementSyscallWrite();
|
972
1168
|
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
|
973
|
-
} while (sent_length < 0 && errno == EINTR);
|
1169
|
+
} while (sent_length < 0 && (*saved_errno = errno) == EINTR);
|
974
1170
|
return sent_length;
|
975
1171
|
}
|
976
1172
|
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
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
|
+
///
|
983
1179
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
984
1180
|
size_t sending_length,
|
985
|
-
ssize_t* sent_length,
|
1181
|
+
ssize_t* sent_length, int* saved_errno,
|
986
1182
|
int additional_flags = 0);
|
987
1183
|
|
988
|
-
|
1184
|
+
/// The callback function to be invoked when we get an error on the socket.
|
989
1185
|
static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error_handle error);
|
990
1186
|
|
991
1187
|
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
@@ -1026,7 +1222,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {
|
|
1026
1222
|
|
1027
1223
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
1028
1224
|
size_t sending_length,
|
1029
|
-
ssize_t* sent_length,
|
1225
|
+
ssize_t* sent_length, int* saved_errno,
|
1030
1226
|
int additional_flags) {
|
1031
1227
|
if (!tcp->socket_ts_enabled) {
|
1032
1228
|
uint32_t opt = grpc_core::kTimestampingSocketOptions;
|
@@ -1040,7 +1236,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
1040
1236
|
tcp->bytes_counter = -1;
|
1041
1237
|
tcp->socket_ts_enabled = true;
|
1042
1238
|
}
|
1043
|
-
|
1239
|
+
// Set control message to indicate that you want timestamps.
|
1044
1240
|
union {
|
1045
1241
|
char cmsg_buf[CMSG_SPACE(sizeof(uint32_t))];
|
1046
1242
|
struct cmsghdr align;
|
@@ -1054,16 +1250,13 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
1054
1250
|
msg->msg_control = u.cmsg_buf;
|
1055
1251
|
msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
|
1056
1252
|
|
1057
|
-
|
1058
|
-
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);
|
1059
1255
|
*sent_length = length;
|
1060
|
-
|
1256
|
+
// Only save timestamps if all the bytes were taken by sendmsg.
|
1061
1257
|
if (sending_length == static_cast<size_t>(length)) {
|
1062
|
-
|
1063
|
-
|
1064
|
-
&tcp->tb_head, static_cast<uint32_t>(tcp->bytes_counter + length),
|
1065
|
-
tcp->fd, tcp->outgoing_buffer_arg);
|
1066
|
-
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);
|
1067
1260
|
tcp->outgoing_buffer_arg = nullptr;
|
1068
1261
|
}
|
1069
1262
|
return true;
|
@@ -1090,6 +1283,9 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
|
|
1090
1283
|
GPR_DEBUG_ASSERT(record);
|
1091
1284
|
UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
|
1092
1285
|
}
|
1286
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) {
|
1287
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1288
|
+
}
|
1093
1289
|
}
|
1094
1290
|
|
1095
1291
|
// Whether the cmsg received from error queue is of the IPv4 or IPv6 levels.
|
@@ -1106,13 +1302,13 @@ static bool CmsgIsZeroCopy(const cmsghdr& cmsg) {
|
|
1106
1302
|
return serr->ee_errno == 0 && serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY;
|
1107
1303
|
}
|
1108
1304
|
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
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.
|
1116
1312
|
struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
1117
1313
|
struct cmsghdr* cmsg) {
|
1118
1314
|
auto next_cmsg = CMSG_NXTHDR(msg, cmsg);
|
@@ -1124,7 +1320,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
|
1124
1320
|
return cmsg;
|
1125
1321
|
}
|
1126
1322
|
|
1127
|
-
|
1323
|
+
// Check if next_cmsg is an OPT_STATS msg
|
1128
1324
|
if (next_cmsg->cmsg_level == SOL_SOCKET &&
|
1129
1325
|
next_cmsg->cmsg_type == SCM_TIMESTAMPING_OPT_STATS) {
|
1130
1326
|
opt_stats = next_cmsg;
|
@@ -1154,19 +1350,13 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
|
1154
1350
|
gpr_log(GPR_ERROR, "Unexpected control message");
|
1155
1351
|
return cmsg;
|
1156
1352
|
}
|
1157
|
-
|
1158
|
-
* to protect the traced buffer list. A lock free list might be better. Using
|
1159
|
-
* a simple mutex for now. */
|
1160
|
-
gpr_mu_lock(&tcp->tb_mu);
|
1161
|
-
grpc_core::TracedBuffer::ProcessTimestamp(&tcp->tb_head, serr, opt_stats,
|
1162
|
-
tss);
|
1163
|
-
gpr_mu_unlock(&tcp->tb_mu);
|
1353
|
+
tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss);
|
1164
1354
|
return next_cmsg;
|
1165
1355
|
}
|
1166
1356
|
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1357
|
+
/// For linux platforms, reads the socket's error queue and processes error
|
1358
|
+
/// messages from the queue.
|
1359
|
+
///
|
1170
1360
|
static bool process_errors(grpc_tcp* tcp) {
|
1171
1361
|
bool processed_err = false;
|
1172
1362
|
struct iovec iov;
|
@@ -1178,13 +1368,13 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1178
1368
|
msg.msg_iov = &iov;
|
1179
1369
|
msg.msg_iovlen = 0;
|
1180
1370
|
msg.msg_flags = 0;
|
1181
|
-
|
1182
|
-
|
1371
|
+
// Allocate enough space so we don't need to keep increasing this as size
|
1372
|
+
// of OPT_STATS increase
|
1183
1373
|
constexpr size_t cmsg_alloc_space =
|
1184
1374
|
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) +
|
1185
1375
|
CMSG_SPACE(sizeof(sock_extended_err) + sizeof(sockaddr_in)) +
|
1186
1376
|
CMSG_SPACE(32 * NLA_ALIGN(NLA_HDRLEN + sizeof(uint64_t)));
|
1187
|
-
|
1377
|
+
// Allocate aligned space for cmsgs received along with timestamps
|
1188
1378
|
union {
|
1189
1379
|
char rbuf[cmsg_alloc_space];
|
1190
1380
|
struct cmsghdr align;
|
@@ -1199,7 +1389,7 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1199
1389
|
} while (r < 0 && saved_errno == EINTR);
|
1200
1390
|
|
1201
1391
|
if (r == -1 && saved_errno == EAGAIN) {
|
1202
|
-
return processed_err;
|
1392
|
+
return processed_err; // No more errors to process
|
1203
1393
|
}
|
1204
1394
|
if (r == -1) {
|
1205
1395
|
return processed_err;
|
@@ -1209,7 +1399,7 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1209
1399
|
}
|
1210
1400
|
|
1211
1401
|
if (msg.msg_controllen == 0) {
|
1212
|
-
|
1402
|
+
// There was no control message found. It was probably spurious.
|
1213
1403
|
return processed_err;
|
1214
1404
|
}
|
1215
1405
|
bool seen = false;
|
@@ -1225,8 +1415,8 @@ static bool process_errors(grpc_tcp* tcp) {
|
|
1225
1415
|
seen = true;
|
1226
1416
|
processed_err = true;
|
1227
1417
|
} else {
|
1228
|
-
|
1229
|
-
|
1418
|
+
// Got a control message that is not a timestamp or zerocopy. Don't know
|
1419
|
+
// how to handle this.
|
1230
1420
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1231
1421
|
gpr_log(GPR_INFO,
|
1232
1422
|
"unknown control message cmsg_level:%d cmsg_type:%d",
|
@@ -1246,22 +1436,22 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
|
|
1246
1436
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1247
1437
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1248
1438
|
gpr_log(GPR_INFO, "TCP:%p got_error: %s", tcp,
|
1249
|
-
|
1439
|
+
grpc_core::StatusToString(error).c_str());
|
1250
1440
|
}
|
1251
1441
|
|
1252
|
-
if (error
|
1442
|
+
if (!error.ok() ||
|
1253
1443
|
static_cast<bool>(gpr_atm_acq_load(&tcp->stop_error_notification))) {
|
1254
|
-
|
1255
|
-
|
1444
|
+
// We aren't going to register to hear on error anymore, so it is safe to
|
1445
|
+
// unref.
|
1256
1446
|
TCP_UNREF(tcp, "error-tracking");
|
1257
1447
|
return;
|
1258
1448
|
}
|
1259
1449
|
|
1260
|
-
|
1261
|
-
|
1450
|
+
// We are still interested in collecting timestamps, so let's try reading
|
1451
|
+
// them.
|
1262
1452
|
bool processed = process_errors(tcp);
|
1263
|
-
|
1264
|
-
|
1453
|
+
// This might not a timestamps error. Set the read and write closures to be
|
1454
|
+
// ready.
|
1265
1455
|
if (!processed) {
|
1266
1456
|
grpc_fd_set_readable(tcp->em_fd);
|
1267
1457
|
grpc_fd_set_writable(tcp->em_fd);
|
@@ -1269,7 +1459,7 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
|
|
1269
1459
|
grpc_fd_notify_on_error(tcp->em_fd, &tcp->error_closure);
|
1270
1460
|
}
|
1271
1461
|
|
1272
|
-
#else
|
1462
|
+
#else // GRPC_LINUX_ERRQUEUE
|
1273
1463
|
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
1274
1464
|
grpc_tcp* /*tcp*/, grpc_slice_buffer* /*buf*/) {
|
1275
1465
|
return nullptr;
|
@@ -1280,6 +1470,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* /*tcp*/) {}
|
|
1280
1470
|
static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
|
1281
1471
|
size_t /*sending_length*/,
|
1282
1472
|
ssize_t* /*sent_length*/,
|
1473
|
+
int* /* saved_errno */,
|
1283
1474
|
int /*additional_flags*/) {
|
1284
1475
|
gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform");
|
1285
1476
|
GPR_ASSERT(0);
|
@@ -1291,17 +1482,14 @@ static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */,
|
|
1291
1482
|
gpr_log(GPR_ERROR, "Error handling is not supported for this platform");
|
1292
1483
|
GPR_ASSERT(0);
|
1293
1484
|
}
|
1294
|
-
#endif
|
1485
|
+
#endif // GRPC_LINUX_ERRQUEUE
|
1295
1486
|
|
1296
|
-
|
1297
|
-
|
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
|
1298
1489
|
void tcp_shutdown_buffer_list(grpc_tcp* tcp) {
|
1299
1490
|
if (tcp->outgoing_buffer_arg) {
|
1300
|
-
|
1301
|
-
|
1302
|
-
&tcp->tb_head, tcp->outgoing_buffer_arg,
|
1303
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("TracedBuffer list shutdown"));
|
1304
|
-
gpr_mu_unlock(&tcp->tb_mu);
|
1491
|
+
tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
|
1492
|
+
GRPC_ERROR_CREATE("TracedBuffer list shutdown"));
|
1305
1493
|
tcp->outgoing_buffer_arg = nullptr;
|
1306
1494
|
}
|
1307
1495
|
}
|
@@ -1360,6 +1548,7 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1360
1548
|
size_t unwind_slice_idx;
|
1361
1549
|
size_t unwind_byte_idx;
|
1362
1550
|
bool tried_sending_message;
|
1551
|
+
int saved_errno;
|
1363
1552
|
msghdr msg;
|
1364
1553
|
// iov consumes a large space. Keep it as the last item on the stack to
|
1365
1554
|
// improve locality. After all, we expect only the first elements of it being
|
@@ -1378,12 +1567,13 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1378
1567
|
// Before calling sendmsg (with or without timestamps): we
|
1379
1568
|
// take a single ref on the zerocopy send record.
|
1380
1569
|
tcp->tcp_zerocopy_send_ctx.NoteSend(record);
|
1570
|
+
saved_errno = 0;
|
1381
1571
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1382
1572
|
if (!tcp->ts_capable ||
|
1383
1573
|
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1384
|
-
MSG_ZEROCOPY)) {
|
1385
|
-
|
1386
|
-
|
1574
|
+
&saved_errno, MSG_ZEROCOPY)) {
|
1575
|
+
// We could not set socket options to collect Fathom timestamps.
|
1576
|
+
// Fallback on writing without timestamps.
|
1387
1577
|
tcp->ts_capable = false;
|
1388
1578
|
tcp_shutdown_buffer_list(tcp);
|
1389
1579
|
} else {
|
@@ -1393,31 +1583,36 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1393
1583
|
if (!tried_sending_message) {
|
1394
1584
|
msg.msg_control = nullptr;
|
1395
1585
|
msg.msg_controllen = 0;
|
1396
|
-
|
1397
|
-
|
1398
|
-
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);
|
1399
1593
|
}
|
1400
1594
|
if (sent_length < 0) {
|
1401
1595
|
// If this particular send failed, drop ref taken earlier in this method.
|
1402
1596
|
tcp->tcp_zerocopy_send_ctx.UndoSend();
|
1403
|
-
if (
|
1597
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1404
1598
|
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
|
1405
1599
|
return false;
|
1406
|
-
} else if (
|
1407
|
-
*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);
|
1408
1602
|
tcp_shutdown_buffer_list(tcp);
|
1409
1603
|
return true;
|
1410
1604
|
} else {
|
1411
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1605
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1412
1606
|
tcp_shutdown_buffer_list(tcp);
|
1413
1607
|
return true;
|
1414
1608
|
}
|
1415
1609
|
}
|
1610
|
+
grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
|
1416
1611
|
tcp->bytes_counter += sent_length;
|
1417
1612
|
record->UpdateOffsetForBytesSent(sending_length,
|
1418
1613
|
static_cast<size_t>(sent_length));
|
1419
1614
|
if (record->AllSlicesSent()) {
|
1420
|
-
*error =
|
1615
|
+
*error = absl::OkStatus();
|
1421
1616
|
return true;
|
1422
1617
|
}
|
1423
1618
|
}
|
@@ -1452,6 +1647,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1452
1647
|
size_t trailing;
|
1453
1648
|
size_t unwind_slice_idx;
|
1454
1649
|
size_t unwind_byte_idx;
|
1650
|
+
int saved_errno;
|
1455
1651
|
|
1456
1652
|
// We always start at zero, because we eagerly unref and trim the slice
|
1457
1653
|
// buffer as we write
|
@@ -1483,11 +1679,13 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1483
1679
|
msg.msg_iovlen = iov_size;
|
1484
1680
|
msg.msg_flags = 0;
|
1485
1681
|
bool tried_sending_message = false;
|
1682
|
+
saved_errno = 0;
|
1486
1683
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1487
1684
|
if (!tcp->ts_capable ||
|
1488
|
-
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length
|
1489
|
-
|
1490
|
-
|
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.
|
1491
1689
|
tcp->ts_capable = false;
|
1492
1690
|
tcp_shutdown_buffer_list(tcp);
|
1493
1691
|
} else {
|
@@ -1498,14 +1696,14 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1498
1696
|
msg.msg_control = nullptr;
|
1499
1697
|
msg.msg_controllen = 0;
|
1500
1698
|
|
1501
|
-
|
1502
|
-
|
1699
|
+
grpc_core::global_stats().IncrementTcpWriteSize(sending_length);
|
1700
|
+
grpc_core::global_stats().IncrementTcpWriteIovSize(iov_size);
|
1503
1701
|
|
1504
|
-
sent_length = tcp_send(tcp->fd, &msg);
|
1702
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno);
|
1505
1703
|
}
|
1506
1704
|
|
1507
1705
|
if (sent_length < 0) {
|
1508
|
-
if (
|
1706
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1509
1707
|
tcp->outgoing_byte_idx = unwind_byte_idx;
|
1510
1708
|
// unref all and forget about all slices that have been written to this
|
1511
1709
|
// point
|
@@ -1513,20 +1711,21 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1513
1711
|
grpc_slice_buffer_remove_first(tcp->outgoing_buffer);
|
1514
1712
|
}
|
1515
1713
|
return false;
|
1516
|
-
} else if (
|
1517
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1518
|
-
|
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);
|
1519
1717
|
tcp_shutdown_buffer_list(tcp);
|
1520
1718
|
return true;
|
1521
1719
|
} else {
|
1522
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1523
|
-
|
1720
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1721
|
+
grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
|
1524
1722
|
tcp_shutdown_buffer_list(tcp);
|
1525
1723
|
return true;
|
1526
1724
|
}
|
1527
1725
|
}
|
1528
1726
|
|
1529
1727
|
GPR_ASSERT(tcp->outgoing_byte_idx == 0);
|
1728
|
+
grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
|
1530
1729
|
tcp->bytes_counter += sent_length;
|
1531
1730
|
trailing = sending_length - static_cast<size_t>(sent_length);
|
1532
1731
|
while (trailing > 0) {
|
@@ -1543,8 +1742,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1543
1742
|
}
|
1544
1743
|
}
|
1545
1744
|
if (outgoing_slice_idx == tcp->outgoing_buffer->count) {
|
1546
|
-
*error =
|
1547
|
-
|
1745
|
+
*error = absl::OkStatus();
|
1746
|
+
grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
|
1548
1747
|
return true;
|
1549
1748
|
}
|
1550
1749
|
}
|
@@ -1555,7 +1754,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1555
1754
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1556
1755
|
grpc_closure* cb;
|
1557
1756
|
|
1558
|
-
if (error
|
1757
|
+
if (!error.ok()) {
|
1559
1758
|
cb = tcp->write_cb;
|
1560
1759
|
tcp->write_cb = nullptr;
|
1561
1760
|
if (tcp->current_zerocopy_send != nullptr) {
|
@@ -1563,11 +1762,10 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1563
1762
|
"handle_write_err");
|
1564
1763
|
tcp->current_zerocopy_send = nullptr;
|
1565
1764
|
}
|
1566
|
-
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
1765
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1567
1766
|
TCP_UNREF(tcp, "write");
|
1568
1767
|
return;
|
1569
1768
|
}
|
1570
|
-
|
1571
1769
|
bool flush_result =
|
1572
1770
|
tcp->current_zerocopy_send != nullptr
|
1573
1771
|
? tcp_flush_zerocopy(tcp, tcp->current_zerocopy_send, &error)
|
@@ -1578,13 +1776,13 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1578
1776
|
}
|
1579
1777
|
notify_on_write(tcp);
|
1580
1778
|
// tcp_flush does not populate error if it has returned false.
|
1581
|
-
GPR_DEBUG_ASSERT(error
|
1779
|
+
GPR_DEBUG_ASSERT(error.ok());
|
1582
1780
|
} else {
|
1583
1781
|
cb = tcp->write_cb;
|
1584
1782
|
tcp->write_cb = nullptr;
|
1585
1783
|
tcp->current_zerocopy_send = nullptr;
|
1586
1784
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1587
|
-
gpr_log(GPR_INFO, "write: %s",
|
1785
|
+
gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str());
|
1588
1786
|
}
|
1589
1787
|
// No need to take a ref on error since tcp_flush provides a ref.
|
1590
1788
|
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
@@ -1593,12 +1791,13 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1593
1791
|
}
|
1594
1792
|
|
1595
1793
|
static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
1596
|
-
grpc_closure* cb, void* arg) {
|
1597
|
-
GPR_TIMER_SCOPE("tcp_write", 0);
|
1794
|
+
grpc_closure* cb, void* arg, int /*max_frame_size*/) {
|
1598
1795
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1599
|
-
grpc_error_handle error
|
1796
|
+
grpc_error_handle error;
|
1600
1797
|
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
1601
1798
|
|
1799
|
+
grpc_core::EventLog::Append("tcp-write-outstanding", buf->length);
|
1800
|
+
|
1602
1801
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1603
1802
|
size_t i;
|
1604
1803
|
|
@@ -1607,7 +1806,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1607
1806
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
1608
1807
|
char* data =
|
1609
1808
|
grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
1610
|
-
gpr_log(GPR_DEBUG, "DATA: %s", data);
|
1809
|
+
gpr_log(GPR_DEBUG, "WRITE DATA: %s", data);
|
1611
1810
|
gpr_free(data);
|
1612
1811
|
}
|
1613
1812
|
}
|
@@ -1620,9 +1819,8 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1620
1819
|
grpc_core::Closure::Run(
|
1621
1820
|
DEBUG_LOCATION, cb,
|
1622
1821
|
grpc_fd_is_shutdown(tcp->em_fd)
|
1623
|
-
? tcp_annotate_error(
|
1624
|
-
|
1625
|
-
: GRPC_ERROR_NONE);
|
1822
|
+
? tcp_annotate_error(GRPC_ERROR_CREATE("EOF"), tcp)
|
1823
|
+
: absl::OkStatus());
|
1626
1824
|
tcp_shutdown_buffer_list(tcp);
|
1627
1825
|
return;
|
1628
1826
|
}
|
@@ -1652,7 +1850,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1652
1850
|
notify_on_write(tcp);
|
1653
1851
|
} else {
|
1654
1852
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1655
|
-
gpr_log(GPR_INFO, "write: %s",
|
1853
|
+
gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str());
|
1656
1854
|
}
|
1657
1855
|
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1658
1856
|
}
|
@@ -1715,102 +1913,45 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
|
|
1715
1913
|
tcp_get_fd,
|
1716
1914
|
tcp_can_track_err};
|
1717
1915
|
|
1718
|
-
#define MAX_CHUNK_SIZE (32 * 1024 * 1024)
|
1719
|
-
|
1720
1916
|
grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
1721
|
-
const
|
1917
|
+
const grpc_core::PosixTcpOptions& options,
|
1722
1918
|
absl::string_view peer_string) {
|
1723
|
-
|
1724
|
-
int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE;
|
1725
|
-
int tcp_max_read_chunk_size = 4 * 1024 * 1024;
|
1726
|
-
int tcp_min_read_chunk_size = 256;
|
1727
|
-
bool tcp_tx_zerocopy_enabled = kZerocpTxEnabledDefault;
|
1728
|
-
int tcp_tx_zerocopy_send_bytes_thresh =
|
1729
|
-
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold;
|
1730
|
-
int tcp_tx_zerocopy_max_simult_sends =
|
1731
|
-
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends;
|
1732
|
-
if (channel_args != nullptr) {
|
1733
|
-
for (size_t i = 0; i < channel_args->num_args; i++) {
|
1734
|
-
if (0 ==
|
1735
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_TCP_READ_CHUNK_SIZE)) {
|
1736
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1737
|
-
tcp_read_chunk_size =
|
1738
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1739
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1740
|
-
GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE)) {
|
1741
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1742
|
-
tcp_min_read_chunk_size =
|
1743
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1744
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1745
|
-
GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE)) {
|
1746
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1747
|
-
tcp_max_read_chunk_size =
|
1748
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1749
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1750
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED)) {
|
1751
|
-
tcp_tx_zerocopy_enabled = grpc_channel_arg_get_bool(
|
1752
|
-
&channel_args->args[i], kZerocpTxEnabledDefault);
|
1753
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1754
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD)) {
|
1755
|
-
grpc_integer_options options = {
|
1756
|
-
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold, 0,
|
1757
|
-
INT_MAX};
|
1758
|
-
tcp_tx_zerocopy_send_bytes_thresh =
|
1759
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1760
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1761
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_MAX_SIMULT_SENDS)) {
|
1762
|
-
grpc_integer_options options = {
|
1763
|
-
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends, 0, INT_MAX};
|
1764
|
-
tcp_tx_zerocopy_max_simult_sends =
|
1765
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1766
|
-
}
|
1767
|
-
}
|
1768
|
-
}
|
1769
|
-
|
1770
|
-
if (tcp_min_read_chunk_size > tcp_max_read_chunk_size) {
|
1771
|
-
tcp_min_read_chunk_size = tcp_max_read_chunk_size;
|
1772
|
-
}
|
1773
|
-
tcp_read_chunk_size = grpc_core::Clamp(
|
1774
|
-
tcp_read_chunk_size, tcp_min_read_chunk_size, tcp_max_read_chunk_size);
|
1775
|
-
|
1776
|
-
grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
|
1777
|
-
tcp_tx_zerocopy_send_bytes_thresh);
|
1919
|
+
grpc_tcp* tcp = new grpc_tcp(options);
|
1778
1920
|
tcp->base.vtable = &vtable;
|
1779
1921
|
tcp->peer_string = std::string(peer_string);
|
1780
1922
|
tcp->fd = grpc_fd_wrapped_fd(em_fd);
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1923
|
+
GPR_ASSERT(options.resource_quota != nullptr);
|
1924
|
+
tcp->memory_owner =
|
1925
|
+
options.resource_quota->memory_quota()->CreateMemoryOwner(peer_string);
|
1784
1926
|
tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp));
|
1785
1927
|
grpc_resolved_address resolved_local_addr;
|
1786
1928
|
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
|
1787
1929
|
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
1930
|
+
absl::StatusOr<std::string> addr_uri;
|
1788
1931
|
if (getsockname(tcp->fd,
|
1789
1932
|
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
1790
|
-
&resolved_local_addr.len) < 0
|
1933
|
+
&resolved_local_addr.len) < 0 ||
|
1934
|
+
!(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
|
1791
1935
|
tcp->local_address = "";
|
1792
1936
|
} else {
|
1793
|
-
tcp->local_address =
|
1937
|
+
tcp->local_address = addr_uri.value();
|
1794
1938
|
}
|
1795
1939
|
tcp->read_cb = nullptr;
|
1796
1940
|
tcp->write_cb = nullptr;
|
1797
1941
|
tcp->current_zerocopy_send = nullptr;
|
1798
1942
|
tcp->release_fd_cb = nullptr;
|
1799
1943
|
tcp->release_fd = nullptr;
|
1800
|
-
tcp->target_length = static_cast<double>(tcp_read_chunk_size);
|
1801
|
-
tcp->min_read_chunk_size = tcp_min_read_chunk_size;
|
1802
|
-
tcp->max_read_chunk_size = tcp_max_read_chunk_size;
|
1944
|
+
tcp->target_length = static_cast<double>(options.tcp_read_chunk_size);
|
1803
1945
|
tcp->bytes_read_this_round = 0;
|
1804
|
-
|
1946
|
+
// Will be set to false by the very first endpoint read function
|
1805
1947
|
tcp->is_first_read = true;
|
1806
|
-
tcp->has_posted_reclaimer = false;
|
1807
1948
|
tcp->bytes_counter = -1;
|
1808
1949
|
tcp->socket_ts_enabled = false;
|
1809
1950
|
tcp->ts_capable = true;
|
1810
1951
|
tcp->outgoing_buffer_arg = nullptr;
|
1811
|
-
tcp->
|
1812
|
-
|
1813
|
-
|
1952
|
+
tcp->min_progress_size = 1;
|
1953
|
+
if (options.tcp_tx_zero_copy_enabled &&
|
1954
|
+
!tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1814
1955
|
#ifdef GRPC_LINUX_ERRQUEUE
|
1815
1956
|
const int enable = 1;
|
1816
1957
|
auto err =
|
@@ -1822,14 +1963,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1822
1963
|
}
|
1823
1964
|
#endif
|
1824
1965
|
}
|
1825
|
-
|
1966
|
+
// paired with unref in grpc_tcp_destroy
|
1826
1967
|
new (&tcp->refcount) grpc_core::RefCount(
|
1827
1968
|
1, GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) ? "tcp" : nullptr);
|
1828
1969
|
gpr_atm_no_barrier_store(&tcp->shutdown_count, 0);
|
1829
1970
|
tcp->em_fd = em_fd;
|
1830
1971
|
grpc_slice_buffer_init(&tcp->last_read_buffer);
|
1831
|
-
gpr_mu_init(&tcp->tb_mu);
|
1832
|
-
tcp->tb_head = nullptr;
|
1833
1972
|
GRPC_CLOSURE_INIT(&tcp->read_done_closure, tcp_handle_read, tcp,
|
1834
1973
|
grpc_schedule_on_exec_ctx);
|
1835
1974
|
if (grpc_event_engine_run_in_background()) {
|
@@ -1842,7 +1981,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1842
1981
|
tcp_drop_uncovered_then_handle_write, tcp,
|
1843
1982
|
grpc_schedule_on_exec_ctx);
|
1844
1983
|
}
|
1845
|
-
|
1984
|
+
// Always assume there is something on the queue to read.
|
1846
1985
|
tcp->inq = 1;
|
1847
1986
|
#ifdef GRPC_HAVE_TCP_INQ
|
1848
1987
|
int one = 1;
|
@@ -1854,12 +1993,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1854
1993
|
}
|
1855
1994
|
#else
|
1856
1995
|
tcp->inq_capable = false;
|
1857
|
-
#endif
|
1858
|
-
|
1996
|
+
#endif // GRPC_HAVE_TCP_INQ
|
1997
|
+
// Start being notified on errors if event engine can track errors.
|
1859
1998
|
if (grpc_event_engine_can_track_errors()) {
|
1860
|
-
|
1861
|
-
|
1862
|
-
|
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.
|
1863
2002
|
TCP_REF(tcp, "error-tracking");
|
1864
2003
|
gpr_atm_rel_store(&tcp->stop_error_notification, 0);
|
1865
2004
|
GRPC_CLOSURE_INIT(&tcp->error_closure, tcp_handle_error, tcp,
|
@@ -1878,13 +2017,17 @@ int grpc_tcp_fd(grpc_endpoint* ep) {
|
|
1878
2017
|
|
1879
2018
|
void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
|
1880
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
|
+
}
|
1881
2024
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1882
2025
|
GPR_ASSERT(ep->vtable == &vtable);
|
1883
2026
|
tcp->release_fd = fd;
|
1884
2027
|
tcp->release_fd_cb = done;
|
1885
|
-
|
2028
|
+
grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
|
1886
2029
|
if (grpc_event_engine_can_track_errors()) {
|
1887
|
-
|
2030
|
+
// Stop errors notification.
|
1888
2031
|
ZerocopyDisableAndWaitForRemaining(tcp);
|
1889
2032
|
gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
|
1890
2033
|
grpc_fd_set_error(tcp->em_fd);
|
@@ -1899,4 +2042,4 @@ void grpc_tcp_posix_shutdown() {
|
|
1899
2042
|
g_backup_poller_mu = nullptr;
|
1900
2043
|
}
|
1901
2044
|
|
1902
|
-
#endif
|
2045
|
+
#endif // GRPC_POSIX_SOCKET_TCP
|