grpc 1.53.0 → 1.56.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +218 -143
- data/include/grpc/event_engine/event_engine.h +34 -17
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/grpc_types.h +13 -2
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +17 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +10 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +911 -898
- data/src/core/ext/filters/client_channel/client_channel.h +145 -177
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +20 -19
- data/src/core/ext/filters/client_channel/client_channel_internal.h +77 -0
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +2 -2
- data/src/core/ext/filters/client_channel/config_selector.h +13 -39
- data/src/core/ext/filters/client_channel/http_proxy.cc +35 -2
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +24 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +56 -24
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +3 -11
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +150 -158
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +54 -66
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +20 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +83 -53
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +17 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +54 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +12 -13
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +18 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +48 -51
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +12 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +16 -22
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +46 -153
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/{dns_resolver_selection.h → dns_resolver_plugin.h} +10 -12
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +549 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +19 -36
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -207
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +160 -68
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +117 -156
- data/src/core/ext/filters/client_channel/retry_service_config.cc +9 -8
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -200
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +30 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +168 -75
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +10 -9
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/gcp/metadata_query.cc +137 -0
- data/src/core/ext/gcp/metadata_query.h +87 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +5 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +226 -82
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +21 -0
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +51 -97
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +0 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +118 -222
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +296 -113
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +466 -273
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +15 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +9 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +21 -21
- data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +414 -181
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -60
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +481 -224
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +90 -55
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +415 -188
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +357 -210
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1572 -729
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +144 -47
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -21
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -62
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +78 -38
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +566 -244
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +733 -404
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -262
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1850 -888
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +286 -148
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +531 -334
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2017 -1131
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +347 -232
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +888 -476
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +139 -80
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +527 -274
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -221
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1168 -611
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +666 -292
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +37 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +144 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +789 -440
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +228 -137
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1100 -501
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +60 -37
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -209
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1083 -635
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +44 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +175 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +118 -56
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +148 -64
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +143 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -37
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +265 -127
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +145 -88
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +438 -241
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +559 -227
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +187 -109
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +956 -421
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +864 -374
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +49 -25
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -100
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +39 -18
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +74 -56
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +71 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +489 -249
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +505 -245
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +256 -129
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +996 -397
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +80 -49
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +616 -201
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1283 -774
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5430 -2509
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +164 -84
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +228 -141
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +738 -399
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +70 -49
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +110 -43
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +259 -100
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +21 -13
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +45 -30
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +108 -70
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +110 -75
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +95 -50
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +150 -108
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +357 -167
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +44 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +114 -80
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +245 -82
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +73 -51
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +474 -292
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2144 -1055
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +34 -19
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +125 -67
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +72 -45
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +193 -138
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +34 -19
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +131 -66
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +35 -26
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -96
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +907 -360
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -101
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -111
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +816 -419
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +109 -53
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +18 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +300 -177
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1284 -522
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +188 -75
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +130 -83
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +510 -238
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +55 -34
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -68
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +47 -30
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +60 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +130 -51
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +133 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +91 -40
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +50 -32
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +37 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +101 -70
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +13 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +25 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +161 -75
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +114 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +139 -91
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +200 -121
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +208 -131
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +74 -53
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +28 -18
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +55 -34
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +91 -53
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +92 -57
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +13 -8
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -26
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +61 -41
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +934 -450
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +946 -483
- data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
- data/src/core/ext/upb-generated/google/api/http.upb.h +284 -120
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +95 -37
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1018 -424
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3851 -1412
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +38 -22
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +18 -14
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +207 -102
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +38 -22
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +157 -107
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +95 -37
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +154 -92
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +919 -415
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -51
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +45 -30
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +405 -217
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +153 -61
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +855 -298
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +155 -104
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -34
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -34
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +45 -30
- data/src/core/ext/upb-generated/validate/validate.upb.c +845 -455
- data/src/core/ext/upb-generated/validate/validate.upb.h +4347 -1908
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +155 -104
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +55 -34
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +137 -91
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +45 -30
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +28 -18
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +21 -12
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +45 -30
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +96 -63
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +52 -29
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +45 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +62 -42
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +169 -79
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +65 -38
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +86 -31
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +218 -58
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -12
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +89 -34
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +18 -11
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +35 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +32 -19
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +150 -54
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +10 -7
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +18 -14
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +34 -21
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +161 -63
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +501 -293
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +85 -52
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +430 -164
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +53 -37
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +161 -75
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +37 -22
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +92 -66
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +43 -22
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +91 -53
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -12
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +45 -30
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +251 -248
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +140 -137
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +32 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +55 -46
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +142 -120
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +16 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +101 -98
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +126 -115
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +118 -118
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -273
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +6 -5
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
- data/src/core/ext/xds/certificate_provider_store.cc +8 -13
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/upb_utils.h +1 -1
- data/src/core/ext/xds/xds_api.cc +41 -18
- data/src/core/ext/xds/xds_api.h +5 -4
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap.cc +3 -3
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +35 -23
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client.cc +29 -7
- data/src/core/ext/xds/xds_client.h +1 -1
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_cluster.cc +44 -51
- data/src/core/ext/xds/xds_cluster.h +1 -2
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +15 -11
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -2
- data/src/core/ext/xds/xds_common_types.cc +8 -5
- data/src/core/ext/xds/xds_endpoint.cc +10 -4
- data/src/core/ext/xds/xds_endpoint.h +10 -2
- data/src/core/ext/xds/xds_http_fault_filter.cc +18 -15
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -2
- data/src/core/ext/xds/xds_http_filters.h +7 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +159 -74
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -2
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +17 -13
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +3 -2
- data/src/core/ext/xds/xds_lb_policy_registry.cc +36 -35
- data/src/core/ext/xds/xds_listener.cc +11 -4
- data/src/core/ext/xds/xds_listener.h +1 -1
- data/src/core/ext/xds/xds_resource_type.h +2 -2
- data/src/core/ext/xds/xds_route_config.cc +48 -8
- data/src/core/ext/xds/xds_route_config.h +1 -1
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -2
- data/src/core/lib/avl/avl.h +5 -0
- 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 +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +163 -135
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +24 -20
- data/src/core/lib/channel/connected_channel.cc +542 -1043
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +100 -46
- data/src/core/lib/channel/promise_based_filter.h +29 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +153 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +79 -0
- data/src/core/lib/config/load_config.h +55 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +38 -61
- data/src/core/lib/debug/trace.h +14 -9
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +17 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +47 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +9 -6
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +9 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/trace.cc +1 -0
- data/src/core/lib/event_engine/trace.h +6 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -7
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +135 -87
- data/src/core/lib/event_engine/windows/windows_endpoint.h +23 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +55 -32
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -7
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +156 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +41 -17
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +74 -17
- data/src/core/lib/experiments/experiments.h +35 -18
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +5 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +33 -4
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/status_helper.cc +2 -2
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +2 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/validation_errors.cc +8 -3
- data/src/core/lib/gprpp/validation_errors.h +16 -9
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/buffer_list.h +0 -1
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +14 -10
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +118 -77
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +20 -5
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -0
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +150 -120
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/iomgr/timer_generic.cc +17 -16
- data/src/core/lib/json/json.h +2 -218
- data/src/core/lib/json/json_object_loader.cc +24 -25
- data/src/core/lib/json/json_object_loader.h +30 -18
- data/src/core/lib/json/json_reader.cc +69 -42
- data/src/core/{ext/filters/client_channel/lb_call_state_internal.h → lib/json/json_reader.h} +7 -12
- data/src/core/lib/json/json_util.cc +10 -15
- data/src/core/lib/json/json_util.h +5 -4
- data/src/core/lib/json/json_writer.cc +24 -25
- data/src/core/lib/{security/security_connector/ssl_utils_config.h → json/json_writer.h} +14 -10
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +17 -2
- data/src/core/lib/load_balancing/lb_policy_registry.cc +9 -8
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +27 -6
- data/src/core/lib/promise/activity.h +71 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +5 -1
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +304 -0
- data/src/core/lib/promise/party.h +508 -0
- data/src/core/lib/promise/pipe.h +213 -59
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +8 -8
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +66 -84
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +64 -64
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +23 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +29 -27
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +5 -61
- data/src/core/lib/security/credentials/jwt/json_token.cc +19 -16
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -5
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +40 -38
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +28 -21
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/security/util/json_util.cc +6 -5
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +13 -6
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/slice/slice.h +2 -0
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +1011 -1049
- data/src/core/lib/surface/call.h +11 -5
- data/src/core/lib/surface/completion_queue.cc +8 -3
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/server.cc +47 -19
- data/src/core/lib/surface/validate_metadata.cc +43 -42
- data/src/core/lib/surface/validate_metadata.h +9 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +182 -0
- data/src/core/lib/transport/batch_builder.h +480 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +9 -6
- data/src/core/lib/transport/metadata_batch.h +124 -31
- data/src/core/lib/transport/metadata_compression_traits.h +67 -0
- data/src/core/lib/transport/parsed_metadata.h +19 -9
- data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +73 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -8
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +177 -196
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +135 -90
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +797 -793
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +529 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +17 -11
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +37 -51
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +13 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +22 -19
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +40 -27
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +34 -37
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +22 -11
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-ppc64le.c → cpu_arm_openbsd.c} +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +22 -31
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +43 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +229 -102
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +31 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +36 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +24 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +49 -49
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +92 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +108 -86
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +55 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +55 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +72 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +62 -51
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +12 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +44 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +3 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +170 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +69 -61
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +22 -68
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +43 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +42 -314
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +244 -139
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +144 -205
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +593 -421
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +52 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +192 -18
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +391 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +91 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +204 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +833 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +633 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/{asn1/a_print.c → rsa_extra/internal.h} +15 -21
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +128 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +418 -133
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +116 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +701 -87
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +63 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +285 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +68 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +132 -151
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +790 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +220 -254
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +136 -270
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +528 -616
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +164 -181
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +186 -203
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1864 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +380 -480
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +266 -265
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +329 -416
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +79 -171
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +294 -344
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +342 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +120 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +228 -265
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +130 -135
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +652 -691
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +90 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1063 -1145
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +217 -191
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +50 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +29 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +69 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +7 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -18
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +98 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +18 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +285 -92
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +381 -287
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +9 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +57 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2075 -1407
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +241 -212
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +45 -26
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -35
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +53 -34
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +200 -121
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +47 -12
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +47 -69
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +217 -226
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +78 -101
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +106 -142
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +244 -35
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +167 -64
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +41 -32
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +7 -44
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -23
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +25 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
- data/third_party/upb/upb/arena.h +4 -193
- data/third_party/upb/upb/array.h +4 -51
- data/third_party/upb/upb/base/descriptor_constants.h +104 -0
- data/third_party/upb/upb/base/log2.h +57 -0
- data/third_party/upb/upb/{status.c → base/status.c} +2 -7
- data/third_party/upb/upb/base/status.h +66 -0
- data/third_party/upb/upb/base/string_view.h +75 -0
- data/third_party/upb/upb/{array.c → collections/array.c} +67 -36
- data/third_party/upb/upb/collections/array.h +85 -0
- data/third_party/upb/upb/collections/array_internal.h +135 -0
- data/third_party/upb/upb/{map.c → collections/map.c} +53 -26
- data/third_party/upb/upb/collections/map.h +135 -0
- data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
- data/third_party/upb/upb/collections/map_internal.h +170 -0
- data/third_party/upb/upb/collections/map_sorter.c +166 -0
- data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
- data/third_party/upb/upb/{message_value.h → collections/message_value.h} +12 -13
- data/third_party/upb/upb/decode.h +3 -62
- data/third_party/upb/upb/def.h +4 -384
- data/third_party/upb/upb/def.hpp +3 -411
- data/third_party/upb/upb/encode.h +3 -48
- data/third_party/upb/upb/extension_registry.h +3 -52
- data/third_party/upb/upb/{table.c → hash/common.c} +52 -110
- data/third_party/upb/upb/hash/common.h +199 -0
- data/third_party/upb/upb/hash/int_table.h +102 -0
- data/third_party/upb/upb/hash/str_table.h +161 -0
- data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
- data/third_party/upb/upb/json/decode.h +52 -0
- data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
- data/third_party/upb/upb/json/encode.h +70 -0
- data/third_party/upb/upb/json_decode.h +4 -15
- data/third_party/upb/upb/json_encode.h +4 -33
- data/third_party/upb/upb/lex/atoi.c +68 -0
- data/third_party/upb/upb/lex/atoi.h +53 -0
- data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
- data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
- data/third_party/upb/upb/lex/strtod.c +97 -0
- data/third_party/upb/upb/lex/strtod.h +46 -0
- data/third_party/upb/upb/lex/unicode.c +57 -0
- data/third_party/upb/upb/lex/unicode.h +77 -0
- data/third_party/upb/upb/map.h +4 -85
- data/third_party/upb/upb/mem/alloc.c +47 -0
- data/third_party/upb/upb/mem/alloc.h +98 -0
- data/third_party/upb/upb/mem/arena.c +367 -0
- data/third_party/upb/upb/mem/arena.h +160 -0
- data/third_party/upb/upb/mem/arena_internal.h +114 -0
- data/third_party/upb/upb/message/accessors.c +68 -0
- data/third_party/upb/upb/message/accessors.h +379 -0
- data/third_party/upb/upb/message/accessors_internal.h +325 -0
- data/third_party/upb/upb/message/extension_internal.h +83 -0
- data/third_party/upb/upb/message/internal.h +135 -0
- data/third_party/upb/upb/message/message.c +180 -0
- data/third_party/upb/upb/message/message.h +69 -0
- data/third_party/upb/upb/mini_table/common.c +128 -0
- data/third_party/upb/upb/mini_table/common.h +170 -0
- data/third_party/upb/upb/mini_table/common_internal.h +111 -0
- data/third_party/upb/upb/{mini_table.c → mini_table/decode.c} +513 -533
- data/third_party/upb/upb/mini_table/decode.h +179 -0
- data/third_party/upb/upb/mini_table/encode.c +300 -0
- data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
- data/third_party/upb/upb/{mini_table.hpp → mini_table/encode_internal.hpp} +32 -8
- data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
- data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
- data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
- data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
- data/third_party/upb/upb/mini_table/field_internal.h +192 -0
- data/third_party/upb/upb/mini_table/file_internal.h +47 -0
- data/third_party/upb/upb/mini_table/message_internal.h +136 -0
- data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
- data/third_party/upb/upb/mini_table/types.h +40 -0
- data/third_party/upb/upb/mini_table.h +4 -157
- data/third_party/upb/upb/msg.h +3 -38
- data/third_party/upb/upb/port/atomic.h +101 -0
- data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
- data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
- data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
- data/third_party/upb/upb/reflection/common.h +67 -0
- data/third_party/upb/upb/reflection/def.h +42 -0
- data/third_party/upb/upb/reflection/def.hpp +610 -0
- data/third_party/upb/upb/reflection/def_builder.c +357 -0
- data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
- data/third_party/upb/upb/reflection/def_pool.c +462 -0
- data/third_party/upb/upb/reflection/def_pool.h +108 -0
- data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
- data/third_party/upb/upb/reflection/def_type.c +50 -0
- data/third_party/upb/upb/reflection/def_type.h +81 -0
- data/third_party/upb/upb/reflection/desc_state.c +53 -0
- data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
- data/third_party/upb/upb/reflection/enum_def.c +310 -0
- data/third_party/upb/upb/reflection/enum_def.h +80 -0
- data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
- data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
- data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
- data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
- data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
- data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
- data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/extension_range.c +93 -0
- data/third_party/upb/upb/reflection/extension_range.h +55 -0
- data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
- data/third_party/upb/upb/reflection/field_def.c +930 -0
- data/third_party/upb/upb/reflection/field_def.h +91 -0
- data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
- data/third_party/upb/upb/reflection/file_def.c +370 -0
- data/third_party/upb/upb/reflection/file_def.h +77 -0
- data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/message.c +233 -0
- data/third_party/upb/upb/reflection/message.h +102 -0
- data/third_party/upb/upb/reflection/message.hpp +37 -0
- data/third_party/upb/upb/reflection/message_def.c +718 -0
- data/third_party/upb/upb/reflection/message_def.h +174 -0
- data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
- data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
- data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
- data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
- data/third_party/upb/upb/reflection/method_def.c +124 -0
- data/third_party/upb/upb/reflection/method_def.h +59 -0
- data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
- data/third_party/upb/upb/reflection/oneof_def.c +226 -0
- data/third_party/upb/upb/reflection/oneof_def.h +66 -0
- data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
- data/third_party/upb/upb/reflection/service_def.c +128 -0
- data/third_party/upb/upb/reflection/service_def.h +60 -0
- data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
- data/third_party/upb/upb/reflection.h +4 -78
- data/third_party/upb/upb/reflection.hpp +3 -7
- data/third_party/upb/upb/status.h +4 -34
- data/third_party/upb/upb/{collections.h → string_view.h} +7 -7
- data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
- data/third_party/upb/upb/text/encode.h +69 -0
- data/third_party/upb/upb/text_encode.h +4 -32
- data/third_party/upb/upb/upb.h +6 -151
- data/third_party/upb/upb/upb.hpp +10 -18
- data/third_party/upb/upb/wire/common.h +44 -0
- data/third_party/upb/upb/wire/common_internal.h +50 -0
- data/third_party/upb/upb/wire/decode.c +1343 -0
- data/third_party/upb/upb/wire/decode.h +108 -0
- data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
- data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
- data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
- data/third_party/upb/upb/{encode.c → wire/encode.c} +114 -95
- data/third_party/upb/upb/wire/encode.h +92 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
- data/third_party/upb/upb/wire/reader.c +67 -0
- data/third_party/upb/upb/wire/reader.h +227 -0
- data/third_party/upb/upb/wire/swap_internal.h +63 -0
- data/third_party/upb/upb/wire/types.h +41 -0
- data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
- data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
- metadata +302 -116
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
- data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
- data/third_party/upb/upb/arena.c +0 -277
- data/third_party/upb/upb/decode.c +0 -1221
- data/third_party/upb/upb/def.c +0 -3269
- data/third_party/upb/upb/internal/table.h +0 -385
- data/third_party/upb/upb/msg.c +0 -368
- data/third_party/upb/upb/msg_internal.h +0 -837
- data/third_party/upb/upb/reflection.c +0 -323
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
- /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
- /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <inttypes.h>
|
24
24
|
#include <limits.h>
|
25
25
|
#include <stdlib.h>
|
26
|
+
#include <string.h>
|
26
27
|
|
27
28
|
#include <algorithm>
|
28
29
|
#include <atomic>
|
@@ -35,14 +36,12 @@
|
|
35
36
|
#include <vector>
|
36
37
|
|
37
38
|
#include "absl/base/thread_annotations.h"
|
38
|
-
#include "absl/cleanup/cleanup.h"
|
39
39
|
#include "absl/meta/type_traits.h"
|
40
40
|
#include "absl/status/status.h"
|
41
41
|
#include "absl/strings/str_cat.h"
|
42
42
|
#include "absl/strings/str_format.h"
|
43
43
|
#include "absl/strings/str_join.h"
|
44
44
|
#include "absl/strings/string_view.h"
|
45
|
-
#include "absl/types/variant.h"
|
46
45
|
|
47
46
|
#include <grpc/byte_buffer.h>
|
48
47
|
#include <grpc/compression.h>
|
@@ -59,6 +58,8 @@
|
|
59
58
|
#include <grpc/support/time.h>
|
60
59
|
|
61
60
|
#include "src/core/lib/channel/call_finalization.h"
|
61
|
+
#include "src/core/lib/channel/call_tracer.h"
|
62
|
+
#include "src/core/lib/channel/channel_args.h"
|
62
63
|
#include "src/core/lib/channel/channel_stack.h"
|
63
64
|
#include "src/core/lib/channel/channelz.h"
|
64
65
|
#include "src/core/lib/channel/context.h"
|
@@ -85,8 +86,13 @@
|
|
85
86
|
#include "src/core/lib/promise/arena_promise.h"
|
86
87
|
#include "src/core/lib/promise/context.h"
|
87
88
|
#include "src/core/lib/promise/detail/basic_seq.h"
|
89
|
+
#include "src/core/lib/promise/latch.h"
|
90
|
+
#include "src/core/lib/promise/map.h"
|
91
|
+
#include "src/core/lib/promise/party.h"
|
88
92
|
#include "src/core/lib/promise/pipe.h"
|
89
93
|
#include "src/core/lib/promise/poll.h"
|
94
|
+
#include "src/core/lib/promise/race.h"
|
95
|
+
#include "src/core/lib/promise/seq.h"
|
90
96
|
#include "src/core/lib/resource_quota/arena.h"
|
91
97
|
#include "src/core/lib/slice/slice_buffer.h"
|
92
98
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -96,6 +102,7 @@
|
|
96
102
|
#include "src/core/lib/surface/completion_queue.h"
|
97
103
|
#include "src/core/lib/surface/server.h"
|
98
104
|
#include "src/core/lib/surface/validate_metadata.h"
|
105
|
+
#include "src/core/lib/transport/batch_builder.h"
|
99
106
|
#include "src/core/lib/transport/error_utils.h"
|
100
107
|
#include "src/core/lib/transport/metadata_batch.h"
|
101
108
|
#include "src/core/lib/transport/transport.h"
|
@@ -134,18 +141,18 @@ class Call : public CppImplOf<Call, grpc_call> {
|
|
134
141
|
virtual void InternalRef(const char* reason) = 0;
|
135
142
|
virtual void InternalUnref(const char* reason) = 0;
|
136
143
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
144
|
+
grpc_compression_algorithm test_only_compression_algorithm() {
|
145
|
+
return incoming_compression_algorithm_;
|
146
|
+
}
|
147
|
+
uint32_t test_only_message_flags() { return test_only_last_message_flags_; }
|
148
|
+
CompressionAlgorithmSet encodings_accepted_by_peer() {
|
149
|
+
return encodings_accepted_by_peer_;
|
150
|
+
}
|
142
151
|
|
143
152
|
// This should return nullptr for the promise stack (and alternative means
|
144
153
|
// for that functionality be invented)
|
145
154
|
virtual grpc_call_stack* call_stack() = 0;
|
146
155
|
|
147
|
-
gpr_atm* peer_string_atm_ptr() { return &peer_string_; }
|
148
|
-
|
149
156
|
protected:
|
150
157
|
// The maximum number of concurrent batches possible.
|
151
158
|
// Based upon the maximum number of individually queueable ops in the batch
|
@@ -188,7 +195,7 @@ class Call : public CppImplOf<Call, grpc_call> {
|
|
188
195
|
|
189
196
|
ParentCall* GetOrCreateParentCall();
|
190
197
|
ParentCall* parent_call();
|
191
|
-
Channel* channel() {
|
198
|
+
Channel* channel() const {
|
192
199
|
GPR_DEBUG_ASSERT(channel_ != nullptr);
|
193
200
|
return channel_.get();
|
194
201
|
}
|
@@ -203,7 +210,39 @@ class Call : public CppImplOf<Call, grpc_call> {
|
|
203
210
|
send_deadline_ = send_deadline;
|
204
211
|
}
|
205
212
|
|
206
|
-
|
213
|
+
Slice GetPeerString() const {
|
214
|
+
MutexLock lock(&peer_mu_);
|
215
|
+
return peer_string_.Ref();
|
216
|
+
}
|
217
|
+
|
218
|
+
void SetPeerString(Slice peer_string) {
|
219
|
+
MutexLock lock(&peer_mu_);
|
220
|
+
peer_string_ = std::move(peer_string);
|
221
|
+
}
|
222
|
+
|
223
|
+
void ClearPeerString() { SetPeerString(Slice(grpc_empty_slice())); }
|
224
|
+
|
225
|
+
// TODO(ctiller): cancel_func is for cancellation of the call - filter stack
|
226
|
+
// holds no mutexes here, promise stack does, and so locking is different.
|
227
|
+
// Remove this and cancel directly once promise conversion is done.
|
228
|
+
void ProcessIncomingInitialMetadata(grpc_metadata_batch& md);
|
229
|
+
// Fixup outgoing metadata before sending - adds compression, protects
|
230
|
+
// internal headers against external modification.
|
231
|
+
void PrepareOutgoingInitialMetadata(const grpc_op& op,
|
232
|
+
grpc_metadata_batch& md);
|
233
|
+
void NoteLastMessageFlags(uint32_t flags) {
|
234
|
+
test_only_last_message_flags_ = flags;
|
235
|
+
}
|
236
|
+
grpc_compression_algorithm incoming_compression_algorithm() const {
|
237
|
+
return incoming_compression_algorithm_;
|
238
|
+
}
|
239
|
+
|
240
|
+
void HandleCompressionAlgorithmDisabled(
|
241
|
+
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
|
242
|
+
void HandleCompressionAlgorithmNotAccepted(
|
243
|
+
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
|
244
|
+
|
245
|
+
gpr_cycle_counter start_time() const { return start_time_; }
|
207
246
|
|
208
247
|
private:
|
209
248
|
RefCountedPtr<Channel> channel_;
|
@@ -214,8 +253,19 @@ class Call : public CppImplOf<Call, grpc_call> {
|
|
214
253
|
const bool is_client_;
|
215
254
|
// flag indicating that cancellation is inherited
|
216
255
|
bool cancellation_is_inherited_ = false;
|
217
|
-
//
|
218
|
-
|
256
|
+
// Compression algorithm for *incoming* data
|
257
|
+
grpc_compression_algorithm incoming_compression_algorithm_ =
|
258
|
+
GRPC_COMPRESS_NONE;
|
259
|
+
// Supported encodings (compression algorithms), a bitset.
|
260
|
+
// Always support no compression.
|
261
|
+
CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
|
262
|
+
uint32_t test_only_last_message_flags_ = 0;
|
263
|
+
// Peer name is protected by a mutex because it can be accessed by the
|
264
|
+
// application at the same moment as it is being set by the completion
|
265
|
+
// of the recv_initial_metadata op. The mutex should be mostly uncontended.
|
266
|
+
mutable Mutex peer_mu_;
|
267
|
+
Slice peer_string_;
|
268
|
+
gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
|
219
269
|
};
|
220
270
|
|
221
271
|
Call::ParentCall* Call::GetOrCreateParentCall() {
|
@@ -310,9 +360,13 @@ void Call::MaybeUnpublishFromParent() {
|
|
310
360
|
void Call::CancelWithStatus(grpc_status_code status, const char* description) {
|
311
361
|
// copying 'description' is needed to ensure the grpc_call_cancel_with_status
|
312
362
|
// guarantee that can be short-lived.
|
363
|
+
// TODO(ctiller): change to
|
364
|
+
// absl::Status(static_cast<absl::StatusCode>(status), description)
|
365
|
+
// (ie remove the set_int, set_str).
|
313
366
|
CancelWithError(grpc_error_set_int(
|
314
|
-
grpc_error_set_str(
|
315
|
-
|
367
|
+
grpc_error_set_str(
|
368
|
+
absl::Status(static_cast<absl::StatusCode>(status), description),
|
369
|
+
StatusStrProperty::kGrpcMessage, description),
|
316
370
|
StatusIntProperty::kRpcStatus, status));
|
317
371
|
}
|
318
372
|
|
@@ -337,9 +391,16 @@ void Call::PropagateCancellationToChildren() {
|
|
337
391
|
}
|
338
392
|
|
339
393
|
char* Call::GetPeer() {
|
340
|
-
|
341
|
-
if (
|
342
|
-
|
394
|
+
Slice peer_slice = GetPeerString();
|
395
|
+
if (!peer_slice.empty()) {
|
396
|
+
absl::string_view peer_string_view = peer_slice.as_string_view();
|
397
|
+
char* peer_string =
|
398
|
+
static_cast<char*>(gpr_malloc(peer_string_view.size() + 1));
|
399
|
+
memcpy(peer_string, peer_string_view.data(), peer_string_view.size());
|
400
|
+
peer_string[peer_string_view.size()] = '\0';
|
401
|
+
return peer_string;
|
402
|
+
}
|
403
|
+
char* peer_string = grpc_channel_get_target(channel_->c_ptr());
|
343
404
|
if (peer_string != nullptr) return peer_string;
|
344
405
|
return gpr_strdup("unknown");
|
345
406
|
}
|
@@ -352,6 +413,94 @@ void Call::DeleteThis() {
|
|
352
413
|
arena->Destroy();
|
353
414
|
}
|
354
415
|
|
416
|
+
void Call::PrepareOutgoingInitialMetadata(const grpc_op& op,
|
417
|
+
grpc_metadata_batch& md) {
|
418
|
+
// TODO(juanlishen): If the user has already specified a compression
|
419
|
+
// algorithm by setting the initial metadata with key of
|
420
|
+
// GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
|
421
|
+
// with the compression algorithm mapped from compression level.
|
422
|
+
// process compression level
|
423
|
+
grpc_compression_level effective_compression_level = GRPC_COMPRESS_LEVEL_NONE;
|
424
|
+
bool level_set = false;
|
425
|
+
if (op.data.send_initial_metadata.maybe_compression_level.is_set) {
|
426
|
+
effective_compression_level =
|
427
|
+
op.data.send_initial_metadata.maybe_compression_level.level;
|
428
|
+
level_set = true;
|
429
|
+
} else {
|
430
|
+
const grpc_compression_options copts = channel()->compression_options();
|
431
|
+
if (copts.default_level.is_set) {
|
432
|
+
level_set = true;
|
433
|
+
effective_compression_level = copts.default_level.level;
|
434
|
+
}
|
435
|
+
}
|
436
|
+
// Currently, only server side supports compression level setting.
|
437
|
+
if (level_set && !is_client()) {
|
438
|
+
const grpc_compression_algorithm calgo =
|
439
|
+
encodings_accepted_by_peer().CompressionAlgorithmForLevel(
|
440
|
+
effective_compression_level);
|
441
|
+
// The following metadata will be checked and removed by the message
|
442
|
+
// compression filter. It will be used as the call's compression
|
443
|
+
// algorithm.
|
444
|
+
md.Set(GrpcInternalEncodingRequest(), calgo);
|
445
|
+
}
|
446
|
+
// Ignore any te metadata key value pairs specified.
|
447
|
+
md.Remove(TeMetadata());
|
448
|
+
// Should never come from applications
|
449
|
+
md.Remove(GrpcLbClientStatsMetadata());
|
450
|
+
}
|
451
|
+
|
452
|
+
void Call::ProcessIncomingInitialMetadata(grpc_metadata_batch& md) {
|
453
|
+
Slice* peer_string = md.get_pointer(PeerString());
|
454
|
+
if (peer_string != nullptr) SetPeerString(peer_string->Ref());
|
455
|
+
|
456
|
+
incoming_compression_algorithm_ =
|
457
|
+
md.Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
|
458
|
+
encodings_accepted_by_peer_ =
|
459
|
+
md.Take(GrpcAcceptEncodingMetadata())
|
460
|
+
.value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
|
461
|
+
|
462
|
+
const grpc_compression_options compression_options =
|
463
|
+
channel_->compression_options();
|
464
|
+
const grpc_compression_algorithm compression_algorithm =
|
465
|
+
incoming_compression_algorithm_;
|
466
|
+
if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32(
|
467
|
+
compression_options.enabled_algorithms_bitset)
|
468
|
+
.IsSet(compression_algorithm))) {
|
469
|
+
// check if algorithm is supported by current channel config
|
470
|
+
HandleCompressionAlgorithmDisabled(compression_algorithm);
|
471
|
+
}
|
472
|
+
// GRPC_COMPRESS_NONE is always set.
|
473
|
+
GPR_DEBUG_ASSERT(encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
|
474
|
+
if (GPR_UNLIKELY(!encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
|
475
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
476
|
+
HandleCompressionAlgorithmNotAccepted(compression_algorithm);
|
477
|
+
}
|
478
|
+
}
|
479
|
+
}
|
480
|
+
|
481
|
+
void Call::HandleCompressionAlgorithmNotAccepted(
|
482
|
+
grpc_compression_algorithm compression_algorithm) {
|
483
|
+
const char* algo_name = nullptr;
|
484
|
+
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
485
|
+
gpr_log(GPR_ERROR,
|
486
|
+
"Compression algorithm ('%s') not present in the "
|
487
|
+
"accepted encodings (%s)",
|
488
|
+
algo_name,
|
489
|
+
std::string(encodings_accepted_by_peer_.ToString()).c_str());
|
490
|
+
}
|
491
|
+
|
492
|
+
void Call::HandleCompressionAlgorithmDisabled(
|
493
|
+
grpc_compression_algorithm compression_algorithm) {
|
494
|
+
const char* algo_name = nullptr;
|
495
|
+
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
496
|
+
std::string error_msg =
|
497
|
+
absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
|
498
|
+
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
499
|
+
CancelWithError(grpc_error_set_int(absl::UnimplementedError(error_msg),
|
500
|
+
StatusIntProperty::kRpcStatus,
|
501
|
+
GRPC_STATUS_UNIMPLEMENTED));
|
502
|
+
}
|
503
|
+
|
355
504
|
///////////////////////////////////////////////////////////////////////////////
|
356
505
|
// FilterStackCall
|
357
506
|
// To be removed once promise conversion is complete
|
@@ -410,11 +559,6 @@ class FilterStackCall final : public Call {
|
|
410
559
|
return context_[elem].value;
|
411
560
|
}
|
412
561
|
|
413
|
-
grpc_compression_algorithm compression_for_level(
|
414
|
-
grpc_compression_level level) override {
|
415
|
-
return encodings_accepted_by_peer_.CompressionAlgorithmForLevel(level);
|
416
|
-
}
|
417
|
-
|
418
562
|
bool is_trailers_only() const override {
|
419
563
|
bool result = is_trailers_only_;
|
420
564
|
GPR_DEBUG_ASSERT(!result || recv_initial_metadata_.TransportSize() == 0);
|
@@ -432,18 +576,6 @@ class FilterStackCall final : public Call {
|
|
432
576
|
return authority_metadata->as_string_view();
|
433
577
|
}
|
434
578
|
|
435
|
-
grpc_compression_algorithm test_only_compression_algorithm() override {
|
436
|
-
return incoming_compression_algorithm_;
|
437
|
-
}
|
438
|
-
|
439
|
-
uint32_t test_only_message_flags() override {
|
440
|
-
return test_only_last_message_flags_;
|
441
|
-
}
|
442
|
-
|
443
|
-
uint32_t test_only_encodings_accepted_by_peer() override {
|
444
|
-
return encodings_accepted_by_peer_.ToLegacyBitmask();
|
445
|
-
}
|
446
|
-
|
447
579
|
static size_t InitialSizeEstimate() {
|
448
580
|
return sizeof(FilterStackCall) +
|
449
581
|
sizeof(BatchControl) * kMaxConcurrentBatches;
|
@@ -480,6 +612,7 @@ class FilterStackCall final : public Call {
|
|
480
612
|
}
|
481
613
|
struct BatchControl {
|
482
614
|
FilterStackCall* call_ = nullptr;
|
615
|
+
CallTracerAnnotationInterface* call_tracer_ = nullptr;
|
483
616
|
grpc_transport_stream_op_batch op_;
|
484
617
|
// Share memory for cq_completion and notify_tag as they are never needed
|
485
618
|
// simultaneously. Each byte used in this data structure count as six bytes
|
@@ -509,12 +642,31 @@ class FilterStackCall final : public Call {
|
|
509
642
|
}
|
510
643
|
bool completed_batch_step(PendingOp op) {
|
511
644
|
auto mask = PendingOpMask(op);
|
645
|
+
// Acquire call tracer before ops_pending_.fetch_sub to avoid races with
|
646
|
+
// call_ being set to nullptr in PostCompletion method. Store the
|
647
|
+
// call_tracer_ and call_ variables locally as well because they could be
|
648
|
+
// modified by another thread after the fetch_sub operation.
|
649
|
+
CallTracerAnnotationInterface* call_tracer = call_tracer_;
|
650
|
+
FilterStackCall* call = call_;
|
651
|
+
bool is_call_trace_enabled = grpc_call_trace.enabled();
|
652
|
+
bool is_call_ops_annotate_enabled =
|
653
|
+
(IsTraceRecordCallopsEnabled() && call_tracer != nullptr);
|
654
|
+
if (is_call_ops_annotate_enabled) {
|
655
|
+
call->InternalRef("Call ops annotate");
|
656
|
+
}
|
512
657
|
auto r = ops_pending_.fetch_sub(mask, std::memory_order_acq_rel);
|
513
|
-
if (
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
658
|
+
if (is_call_trace_enabled || is_call_ops_annotate_enabled) {
|
659
|
+
std::string trace_string = absl::StrFormat(
|
660
|
+
"BATCH:%p COMPLETE:%s REMAINING:%s (tag:%p)", this,
|
661
|
+
PendingOpString(mask).c_str(), PendingOpString(r & ~mask).c_str(),
|
662
|
+
completion_data_.notify_tag.tag);
|
663
|
+
if (is_call_trace_enabled) {
|
664
|
+
gpr_log(GPR_DEBUG, "%s", trace_string.c_str());
|
665
|
+
}
|
666
|
+
if (is_call_ops_annotate_enabled) {
|
667
|
+
call_tracer->RecordAnnotation(trace_string);
|
668
|
+
call->InternalUnref("Call ops annotate");
|
669
|
+
}
|
518
670
|
}
|
519
671
|
GPR_ASSERT((r & mask) != 0);
|
520
672
|
return r == mask;
|
@@ -524,7 +676,6 @@ class FilterStackCall final : public Call {
|
|
524
676
|
void FinishStep(PendingOp op);
|
525
677
|
void ProcessDataAfterMetadata();
|
526
678
|
void ReceivingStreamReady(grpc_error_handle error);
|
527
|
-
void ValidateFilteredMetadata();
|
528
679
|
void ReceivingInitialMetadataReady(grpc_error_handle error);
|
529
680
|
void ReceivingTrailingMetadataReady(grpc_error_handle error);
|
530
681
|
void FinishBatch(grpc_error_handle error);
|
@@ -549,10 +700,6 @@ class FilterStackCall final : public Call {
|
|
549
700
|
grpc_closure* start_batch_closure);
|
550
701
|
void SetFinalStatus(grpc_error_handle error);
|
551
702
|
BatchControl* ReuseOrAllocateBatchControl(const grpc_op* ops);
|
552
|
-
void HandleCompressionAlgorithmDisabled(
|
553
|
-
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
|
554
|
-
void HandleCompressionAlgorithmNotAccepted(
|
555
|
-
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
|
556
703
|
bool PrepareApplicationMetadata(size_t count, grpc_metadata* metadata,
|
557
704
|
bool is_trailing);
|
558
705
|
void PublishAppMetadata(grpc_metadata_batch* b, bool is_trailing);
|
@@ -564,7 +711,6 @@ class FilterStackCall final : public Call {
|
|
564
711
|
CallCombiner call_combiner_;
|
565
712
|
grpc_completion_queue* cq_;
|
566
713
|
grpc_polling_entity pollent_;
|
567
|
-
gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
|
568
714
|
|
569
715
|
/// has grpc_call_unref been called
|
570
716
|
bool destroy_called_ = false;
|
@@ -596,13 +742,6 @@ class FilterStackCall final : public Call {
|
|
596
742
|
// completed
|
597
743
|
grpc_call_final_info final_info_;
|
598
744
|
|
599
|
-
// Compression algorithm for *incoming* data
|
600
|
-
grpc_compression_algorithm incoming_compression_algorithm_ =
|
601
|
-
GRPC_COMPRESS_NONE;
|
602
|
-
// Supported encodings (compression algorithms), a bitset.
|
603
|
-
// Always support no compression.
|
604
|
-
CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
|
605
|
-
|
606
745
|
// Contexts for various subsystems (security, tracing, ...).
|
607
746
|
grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
|
608
747
|
|
@@ -616,7 +755,6 @@ class FilterStackCall final : public Call {
|
|
616
755
|
grpc_closure receiving_stream_ready_;
|
617
756
|
grpc_closure receiving_initial_metadata_ready_;
|
618
757
|
grpc_closure receiving_trailing_metadata_ready_;
|
619
|
-
uint32_t test_only_last_message_flags_ = 0;
|
620
758
|
// Status about operation of call
|
621
759
|
bool sent_server_trailing_metadata_ = false;
|
622
760
|
gpr_atm cancelled_with_error_ = 0;
|
@@ -703,6 +841,26 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
|
|
703
841
|
global_stats().IncrementServerCallsCreated();
|
704
842
|
call->final_op_.server.cancelled = nullptr;
|
705
843
|
call->final_op_.server.core_server = args->server;
|
844
|
+
// TODO(yashykt): In the future, we want to also enable stats and trace
|
845
|
+
// collecting from when the call is created at the transport. The idea is
|
846
|
+
// that the transport would create the call tracer and pass it in as part of
|
847
|
+
// the metadata.
|
848
|
+
auto* server_call_tracer_factory = ServerCallTracerFactory::Get(
|
849
|
+
args->server != nullptr ? args->server->channel_args() : ChannelArgs());
|
850
|
+
if (server_call_tracer_factory != nullptr) {
|
851
|
+
auto* server_call_tracer =
|
852
|
+
server_call_tracer_factory->CreateNewServerCallTracer(arena);
|
853
|
+
if (server_call_tracer != nullptr) {
|
854
|
+
// Note that we are setting both
|
855
|
+
// GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE and
|
856
|
+
// GRPC_CONTEXT_CALL_TRACER as a matter of convenience. In the future
|
857
|
+
// promise-based world, we would just a single tracer object for each
|
858
|
+
// stack (call, subchannel_call, server_call.)
|
859
|
+
call->ContextSet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE,
|
860
|
+
server_call_tracer, nullptr);
|
861
|
+
call->ContextSet(GRPC_CONTEXT_CALL_TRACER, server_call_tracer, nullptr);
|
862
|
+
}
|
863
|
+
}
|
706
864
|
}
|
707
865
|
|
708
866
|
Call* parent = Call::FromC(args->parent);
|
@@ -714,7 +872,7 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
|
|
714
872
|
grpc_call_element_args call_args = {
|
715
873
|
call->call_stack(), args->server_transport_data,
|
716
874
|
call->context_, path,
|
717
|
-
call->
|
875
|
+
call->start_time(), call->send_deadline(),
|
718
876
|
call->arena(), &call->call_combiner_};
|
719
877
|
add_init_error(&error, grpc_call_stack_init(channel_stack, 1, DestroyCall,
|
720
878
|
call, &call_args));
|
@@ -796,7 +954,7 @@ void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
|
|
796
954
|
&(c->final_info_.error_string));
|
797
955
|
c->status_error_.set(absl::OkStatus());
|
798
956
|
c->final_info_.stats.latency =
|
799
|
-
gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->
|
957
|
+
gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time());
|
800
958
|
grpc_call_stack_destroy(c->call_stack(), &c->final_info_,
|
801
959
|
GRPC_CLOSURE_INIT(&c->release_call_, ReleaseCall, c,
|
802
960
|
grpc_schedule_on_exec_ctx));
|
@@ -891,8 +1049,8 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) {
|
|
891
1049
|
|
892
1050
|
void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
|
893
1051
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
|
894
|
-
gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR"
|
895
|
-
|
1052
|
+
gpr_log(GPR_DEBUG, "set_final_status %s %s", is_client() ? "CLI" : "SVR",
|
1053
|
+
StatusToString(error).c_str());
|
896
1054
|
}
|
897
1055
|
if (is_client()) {
|
898
1056
|
std::string status_details;
|
@@ -1033,11 +1191,7 @@ void FilterStackCall::PublishAppMetadata(grpc_metadata_batch* b,
|
|
1033
1191
|
}
|
1034
1192
|
|
1035
1193
|
void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
|
1036
|
-
|
1037
|
-
b->Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
|
1038
|
-
encodings_accepted_by_peer_ =
|
1039
|
-
b->Take(GrpcAcceptEncodingMetadata())
|
1040
|
-
.value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
|
1194
|
+
ProcessIncomingInitialMetadata(*b);
|
1041
1195
|
PublishAppMetadata(b, false);
|
1042
1196
|
}
|
1043
1197
|
|
@@ -1052,11 +1206,11 @@ void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
|
|
1052
1206
|
grpc_status_code status_code = *grpc_status;
|
1053
1207
|
grpc_error_handle error;
|
1054
1208
|
if (status_code != GRPC_STATUS_OK) {
|
1055
|
-
|
1209
|
+
Slice peer = GetPeerString();
|
1056
1210
|
error = grpc_error_set_int(
|
1057
|
-
GRPC_ERROR_CREATE(absl::StrCat("Error received from peer ",
|
1211
|
+
GRPC_ERROR_CREATE(absl::StrCat("Error received from peer ",
|
1212
|
+
peer.as_string_view())),
|
1058
1213
|
StatusIntProperty::kRpcStatus, static_cast<intptr_t>(status_code));
|
1059
|
-
gpr_free(peer);
|
1060
1214
|
}
|
1061
1215
|
auto grpc_message = b->Take(GrpcMessageMetadata());
|
1062
1216
|
if (grpc_message.has_value()) {
|
@@ -1133,6 +1287,8 @@ FilterStackCall::BatchControl* FilterStackCall::ReuseOrAllocateBatchControl(
|
|
1133
1287
|
*pslot = bctl;
|
1134
1288
|
}
|
1135
1289
|
bctl->call_ = this;
|
1290
|
+
bctl->call_tracer_ = static_cast<CallTracerAnnotationInterface*>(
|
1291
|
+
ContextGet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE));
|
1136
1292
|
bctl->op_.payload = &stream_op_payload_;
|
1137
1293
|
return bctl;
|
1138
1294
|
}
|
@@ -1141,8 +1297,9 @@ void FilterStackCall::BatchControl::PostCompletion() {
|
|
1141
1297
|
FilterStackCall* call = call_;
|
1142
1298
|
grpc_error_handle error = batch_error_.get();
|
1143
1299
|
if (grpc_call_trace.enabled()) {
|
1144
|
-
gpr_log(GPR_DEBUG, "tag:%p batch_error=%s",
|
1145
|
-
error.ToString().c_str()
|
1300
|
+
gpr_log(GPR_DEBUG, "tag:%p batch_error=%s op:%s",
|
1301
|
+
completion_data_.notify_tag.tag, error.ToString().c_str(),
|
1302
|
+
grpc_transport_stream_op_batch_string(&op_, false).c_str());
|
1146
1303
|
}
|
1147
1304
|
|
1148
1305
|
if (op_.send_initial_metadata) {
|
@@ -1160,16 +1317,16 @@ void FilterStackCall::BatchControl::PostCompletion() {
|
|
1160
1317
|
if (op_.send_trailing_metadata) {
|
1161
1318
|
call->send_trailing_metadata_.Clear();
|
1162
1319
|
}
|
1320
|
+
if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
|
1321
|
+
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1322
|
+
*call->receiving_buffer_ = nullptr;
|
1323
|
+
}
|
1163
1324
|
if (op_.recv_trailing_metadata) {
|
1164
1325
|
// propagate cancellation to any interested children
|
1165
1326
|
gpr_atm_rel_store(&call->received_final_op_atm_, 1);
|
1166
1327
|
call->PropagateCancellationToChildren();
|
1167
1328
|
error = absl::OkStatus();
|
1168
1329
|
}
|
1169
|
-
if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
|
1170
|
-
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1171
|
-
*call->receiving_buffer_ = nullptr;
|
1172
|
-
}
|
1173
1330
|
batch_error_.set(absl::OkStatus());
|
1174
1331
|
|
1175
1332
|
if (completion_data_.notify_tag.is_closure) {
|
@@ -1204,11 +1361,11 @@ void FilterStackCall::BatchControl::ProcessDataAfterMetadata() {
|
|
1204
1361
|
call->receiving_message_ = false;
|
1205
1362
|
FinishStep(PendingOp::kRecvMessage);
|
1206
1363
|
} else {
|
1207
|
-
call->
|
1364
|
+
call->NoteLastMessageFlags(call->receiving_stream_flags_);
|
1208
1365
|
if ((call->receiving_stream_flags_ & GRPC_WRITE_INTERNAL_COMPRESS) &&
|
1209
|
-
(call->
|
1366
|
+
(call->incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) {
|
1210
1367
|
*call->receiving_buffer_ = grpc_raw_compressed_byte_buffer_create(
|
1211
|
-
nullptr, 0, call->
|
1368
|
+
nullptr, 0, call->incoming_compression_algorithm());
|
1212
1369
|
} else {
|
1213
1370
|
*call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
|
1214
1371
|
}
|
@@ -1249,50 +1406,6 @@ void FilterStackCall::BatchControl::ReceivingStreamReady(
|
|
1249
1406
|
}
|
1250
1407
|
}
|
1251
1408
|
|
1252
|
-
void FilterStackCall::HandleCompressionAlgorithmDisabled(
|
1253
|
-
grpc_compression_algorithm compression_algorithm) {
|
1254
|
-
const char* algo_name = nullptr;
|
1255
|
-
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1256
|
-
std::string error_msg =
|
1257
|
-
absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
|
1258
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1259
|
-
CancelWithStatus(GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
|
1260
|
-
}
|
1261
|
-
|
1262
|
-
void FilterStackCall::HandleCompressionAlgorithmNotAccepted(
|
1263
|
-
grpc_compression_algorithm compression_algorithm) {
|
1264
|
-
const char* algo_name = nullptr;
|
1265
|
-
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1266
|
-
gpr_log(GPR_ERROR,
|
1267
|
-
"Compression algorithm ('%s') not present in the "
|
1268
|
-
"accepted encodings (%s)",
|
1269
|
-
algo_name,
|
1270
|
-
std::string(encodings_accepted_by_peer_.ToString()).c_str());
|
1271
|
-
}
|
1272
|
-
|
1273
|
-
void FilterStackCall::BatchControl::ValidateFilteredMetadata() {
|
1274
|
-
FilterStackCall* call = call_;
|
1275
|
-
|
1276
|
-
const grpc_compression_options compression_options =
|
1277
|
-
call->channel()->compression_options();
|
1278
|
-
const grpc_compression_algorithm compression_algorithm =
|
1279
|
-
call->incoming_compression_algorithm_;
|
1280
|
-
if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32(
|
1281
|
-
compression_options.enabled_algorithms_bitset)
|
1282
|
-
.IsSet(compression_algorithm))) {
|
1283
|
-
// check if algorithm is supported by current channel config
|
1284
|
-
call->HandleCompressionAlgorithmDisabled(compression_algorithm);
|
1285
|
-
}
|
1286
|
-
// GRPC_COMPRESS_NONE is always set.
|
1287
|
-
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
|
1288
|
-
if (GPR_UNLIKELY(
|
1289
|
-
!call->encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
|
1290
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1291
|
-
call->HandleCompressionAlgorithmNotAccepted(compression_algorithm);
|
1292
|
-
}
|
1293
|
-
}
|
1294
|
-
}
|
1295
|
-
|
1296
1409
|
void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
|
1297
1410
|
grpc_error_handle error) {
|
1298
1411
|
FilterStackCall* call = call_;
|
@@ -1303,9 +1416,6 @@ void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
|
|
1303
1416
|
grpc_metadata_batch* md = &call->recv_initial_metadata_;
|
1304
1417
|
call->RecvInitialFilter(md);
|
1305
1418
|
|
1306
|
-
// TODO(ctiller): this could be moved into recv_initial_filter now
|
1307
|
-
ValidateFilteredMetadata();
|
1308
|
-
|
1309
1419
|
absl::optional<Timestamp> deadline = md->get(GrpcTimeoutMetadata());
|
1310
1420
|
if (deadline.has_value() && !call->is_client()) {
|
1311
1421
|
call_->set_send_deadline(*deadline);
|
@@ -1400,6 +1510,7 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
|
1400
1510
|
grpc_transport_stream_op_batch_payload* stream_op_payload;
|
1401
1511
|
uint32_t seen_ops = 0;
|
1402
1512
|
intptr_t pending_ops = 0;
|
1513
|
+
CallTracerAnnotationInterface* call_tracer = nullptr;
|
1403
1514
|
|
1404
1515
|
for (i = 0; i < nops; i++) {
|
1405
1516
|
if (seen_ops & (1u << ops[i].op)) {
|
@@ -1454,36 +1565,6 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
|
1454
1565
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1455
1566
|
goto done_with_error;
|
1456
1567
|
}
|
1457
|
-
// TODO(juanlishen): If the user has already specified a compression
|
1458
|
-
// algorithm by setting the initial metadata with key of
|
1459
|
-
// GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
|
1460
|
-
// with the compression algorithm mapped from compression level.
|
1461
|
-
// process compression level
|
1462
|
-
grpc_compression_level effective_compression_level =
|
1463
|
-
GRPC_COMPRESS_LEVEL_NONE;
|
1464
|
-
bool level_set = false;
|
1465
|
-
if (op->data.send_initial_metadata.maybe_compression_level.is_set) {
|
1466
|
-
effective_compression_level =
|
1467
|
-
op->data.send_initial_metadata.maybe_compression_level.level;
|
1468
|
-
level_set = true;
|
1469
|
-
} else {
|
1470
|
-
const grpc_compression_options copts =
|
1471
|
-
channel()->compression_options();
|
1472
|
-
if (copts.default_level.is_set) {
|
1473
|
-
level_set = true;
|
1474
|
-
effective_compression_level = copts.default_level.level;
|
1475
|
-
}
|
1476
|
-
}
|
1477
|
-
// Currently, only server side supports compression level setting.
|
1478
|
-
if (level_set && !is_client()) {
|
1479
|
-
const grpc_compression_algorithm calgo =
|
1480
|
-
encodings_accepted_by_peer_.CompressionAlgorithmForLevel(
|
1481
|
-
effective_compression_level);
|
1482
|
-
// The following metadata will be checked and removed by the message
|
1483
|
-
// compression filter. It will be used as the call's compression
|
1484
|
-
// algorithm.
|
1485
|
-
send_initial_metadata_.Set(GrpcInternalEncodingRequest(), calgo);
|
1486
|
-
}
|
1487
1568
|
if (op->data.send_initial_metadata.count > INT_MAX) {
|
1488
1569
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1489
1570
|
goto done_with_error;
|
@@ -1496,8 +1577,7 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
|
1496
1577
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1497
1578
|
goto done_with_error;
|
1498
1579
|
}
|
1499
|
-
|
1500
|
-
send_initial_metadata_.Remove(TeMetadata());
|
1580
|
+
PrepareOutgoingInitialMetadata(*op, send_initial_metadata_);
|
1501
1581
|
// TODO(ctiller): just make these the same variable?
|
1502
1582
|
if (is_client() && send_deadline() != Timestamp::InfFuture()) {
|
1503
1583
|
send_initial_metadata_.Set(GrpcTimeoutMetadata(), send_deadline());
|
@@ -1512,10 +1592,6 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
|
1512
1592
|
}
|
1513
1593
|
stream_op_payload->send_initial_metadata.send_initial_metadata =
|
1514
1594
|
&send_initial_metadata_;
|
1515
|
-
if (is_client()) {
|
1516
|
-
stream_op_payload->send_initial_metadata.peer_string =
|
1517
|
-
peer_string_atm_ptr();
|
1518
|
-
}
|
1519
1595
|
pending_ops |= PendingOpMask(PendingOp::kSends);
|
1520
1596
|
break;
|
1521
1597
|
}
|
@@ -1664,9 +1740,6 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
|
1664
1740
|
if (is_client()) {
|
1665
1741
|
stream_op_payload->recv_initial_metadata.trailing_metadata_available =
|
1666
1742
|
&is_trailers_only_;
|
1667
|
-
} else {
|
1668
|
-
stream_op_payload->recv_initial_metadata.peer_string =
|
1669
|
-
peer_string_atm_ptr();
|
1670
1743
|
}
|
1671
1744
|
pending_ops |= PendingOpMask(PendingOp::kRecvInitialMetadata);
|
1672
1745
|
break;
|
@@ -1798,13 +1871,21 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
|
1798
1871
|
stream_op->on_complete = &bctl->finish_batch_;
|
1799
1872
|
}
|
1800
1873
|
|
1874
|
+
call_tracer = static_cast<CallTracerAnnotationInterface*>(
|
1875
|
+
ContextGet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE));
|
1876
|
+
if ((IsTraceRecordCallopsEnabled() && call_tracer != nullptr)) {
|
1877
|
+
call_tracer->RecordAnnotation(absl::StrFormat(
|
1878
|
+
"BATCH:%p START:%s BATCH:%s (tag:%p)", bctl,
|
1879
|
+
PendingOpString(pending_ops).c_str(),
|
1880
|
+
grpc_transport_stream_op_batch_string(stream_op, true).c_str(),
|
1881
|
+
bctl->completion_data_.notify_tag.tag));
|
1882
|
+
}
|
1801
1883
|
if (grpc_call_trace.enabled()) {
|
1802
1884
|
gpr_log(GPR_DEBUG, "BATCH:%p START:%s BATCH:%s (tag:%p)", bctl,
|
1803
1885
|
PendingOpString(pending_ops).c_str(),
|
1804
|
-
grpc_transport_stream_op_batch_string(stream_op).c_str(),
|
1886
|
+
grpc_transport_stream_op_batch_string(stream_op, false).c_str(),
|
1805
1887
|
bctl->completion_data_.notify_tag.tag);
|
1806
1888
|
}
|
1807
|
-
|
1808
1889
|
ExecuteBatch(stream_op, &bctl->start_batch_);
|
1809
1890
|
|
1810
1891
|
done:
|
@@ -1873,8 +1954,7 @@ bool ValidateMetadata(size_t count, grpc_metadata* metadata) {
|
|
1873
1954
|
// Will be folded into Call once the promise conversion is done
|
1874
1955
|
|
1875
1956
|
class PromiseBasedCall : public Call,
|
1876
|
-
public
|
1877
|
-
public Wakeable,
|
1957
|
+
public Party,
|
1878
1958
|
public grpc_event_engine::experimental::EventEngine::
|
1879
1959
|
Closure /* for deadlines */ {
|
1880
1960
|
public:
|
@@ -1885,176 +1965,65 @@ class PromiseBasedCall : public Call,
|
|
1885
1965
|
void (*destroy)(void* value)) override;
|
1886
1966
|
void* ContextGet(grpc_context_index elem) const override;
|
1887
1967
|
void SetCompletionQueue(grpc_completion_queue* cq) override;
|
1888
|
-
|
1889
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
1890
|
-
void CancelWithError(absl::Status error) final ABSL_LOCKS_EXCLUDED(mu_) {
|
1891
|
-
MutexLock lock(&mu_);
|
1892
|
-
CancelWithErrorLocked(std::move(error));
|
1893
|
-
}
|
1894
|
-
virtual void CancelWithErrorLocked(absl::Status error)
|
1895
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) = 0;
|
1896
|
-
bool Completed() final ABSL_LOCKS_EXCLUDED(mu_) {
|
1897
|
-
MutexLock lock(&mu_);
|
1898
|
-
return completed_;
|
1899
|
-
}
|
1900
|
-
|
1901
|
-
void Orphan() final {
|
1902
|
-
MutexLock lock(&mu_);
|
1903
|
-
if (!completed_) {
|
1904
|
-
CancelWithErrorLocked(absl::CancelledError("Call orphaned"));
|
1905
|
-
}
|
1906
|
-
}
|
1968
|
+
bool Completed() final { return finished_.IsSet(); }
|
1907
1969
|
|
1908
1970
|
// Implementation of call refcounting: move this to DualRefCounted once we
|
1909
1971
|
// don't need to maintain FilterStackCall compatibility
|
1910
|
-
void ExternalRef() final {
|
1911
|
-
|
1912
|
-
refs_.fetch_add(MakeRefPair(1, 0), std::memory_order_relaxed);
|
1913
|
-
if (grpc_call_refcount_trace.enabled()) {
|
1914
|
-
gpr_log(GPR_DEBUG, "%s EXTERNAL_REF: %d:%d->%d:%d", DebugTag().c_str(),
|
1915
|
-
GetStrongRefs(prev_ref_pair), GetWeakRefs(prev_ref_pair),
|
1916
|
-
GetStrongRefs(prev_ref_pair) + 1, GetWeakRefs(prev_ref_pair));
|
1917
|
-
}
|
1918
|
-
}
|
1919
|
-
void ExternalUnref() final {
|
1920
|
-
const uint64_t prev_ref_pair =
|
1921
|
-
refs_.fetch_add(MakeRefPair(-1, 1), std::memory_order_acq_rel);
|
1922
|
-
if (grpc_call_refcount_trace.enabled()) {
|
1923
|
-
gpr_log(GPR_DEBUG, "%s EXTERNAL_UNREF: %d:%d->%d:%d", DebugTag().c_str(),
|
1924
|
-
GetStrongRefs(prev_ref_pair), GetWeakRefs(prev_ref_pair),
|
1925
|
-
GetStrongRefs(prev_ref_pair) - 1, GetWeakRefs(prev_ref_pair) + 1);
|
1926
|
-
}
|
1927
|
-
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
1928
|
-
if (GPR_UNLIKELY(strong_refs == 1)) {
|
1929
|
-
Orphan();
|
1930
|
-
}
|
1931
|
-
// Now drop the weak ref.
|
1932
|
-
InternalUnref("external_ref");
|
1933
|
-
}
|
1972
|
+
void ExternalRef() final { InternalRef("external"); }
|
1973
|
+
void ExternalUnref() final { InternalUnref("external"); }
|
1934
1974
|
void InternalRef(const char* reason) final {
|
1935
|
-
uint64_t n = refs_.fetch_add(MakeRefPair(0, 1), std::memory_order_relaxed);
|
1936
1975
|
if (grpc_call_refcount_trace.enabled()) {
|
1937
|
-
gpr_log(GPR_DEBUG, "
|
1938
|
-
GetStrongRefs(n), GetWeakRefs(n), GetStrongRefs(n),
|
1939
|
-
GetWeakRefs(n) + 1);
|
1976
|
+
gpr_log(GPR_DEBUG, "INTERNAL_REF:%p:%s", this, reason);
|
1940
1977
|
}
|
1978
|
+
Party::IncrementRefCount();
|
1941
1979
|
}
|
1942
1980
|
void InternalUnref(const char* reason) final {
|
1943
|
-
const uint64_t prev_ref_pair =
|
1944
|
-
refs_.fetch_sub(MakeRefPair(0, 1), std::memory_order_acq_rel);
|
1945
1981
|
if (grpc_call_refcount_trace.enabled()) {
|
1946
|
-
gpr_log(GPR_DEBUG, "
|
1947
|
-
reason, GetStrongRefs(prev_ref_pair), GetWeakRefs(prev_ref_pair),
|
1948
|
-
GetStrongRefs(prev_ref_pair), GetWeakRefs(prev_ref_pair) - 1);
|
1982
|
+
gpr_log(GPR_DEBUG, "INTERNAL_UNREF:%p:%s", this, reason);
|
1949
1983
|
}
|
1950
|
-
|
1951
|
-
DeleteThis();
|
1952
|
-
}
|
1953
|
-
}
|
1954
|
-
|
1955
|
-
// Activity methods
|
1956
|
-
void ForceImmediateRepoll() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) override;
|
1957
|
-
Waker MakeOwningWaker() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) override {
|
1958
|
-
InternalRef("wakeup");
|
1959
|
-
// If ASAN is defined, we leverage it to detect dropped Waker objects.
|
1960
|
-
// Usually Waker must be destroyed or woken up, but (especially with arenas)
|
1961
|
-
// it's not uncommon to create a Waker and then do neither. In that case it's
|
1962
|
-
// incredibly fraught to diagnose where the dropped reference to this object was
|
1963
|
-
// created. Instead, leverage ASAN and create a new object per expected wakeup.
|
1964
|
-
// Now when we drop such an object ASAN will fail and we'll get a callstack to
|
1965
|
-
// the creation of the waker in question.
|
1966
|
-
#if defined(__has_feature)
|
1967
|
-
#if __has_feature(address_sanitizer)
|
1968
|
-
#define GRPC_CALL_USES_ASAN_WAKER
|
1969
|
-
class AsanWaker final : public Wakeable {
|
1970
|
-
public:
|
1971
|
-
explicit AsanWaker(PromiseBasedCall* call) : call_(call) {}
|
1972
|
-
|
1973
|
-
void Wakeup(void*) override {
|
1974
|
-
call_->Wakeup(nullptr);
|
1975
|
-
delete this;
|
1976
|
-
}
|
1977
|
-
|
1978
|
-
void Drop(void*) override {
|
1979
|
-
call_->Drop(nullptr);
|
1980
|
-
delete this;
|
1981
|
-
}
|
1982
|
-
|
1983
|
-
std::string ActivityDebugTag(void*) const override {
|
1984
|
-
return call_->DebugTag();
|
1985
|
-
}
|
1986
|
-
|
1987
|
-
private:
|
1988
|
-
PromiseBasedCall* call_;
|
1989
|
-
};
|
1990
|
-
return Waker(new AsanWaker(this), nullptr);
|
1991
|
-
#endif
|
1992
|
-
#endif
|
1993
|
-
#ifndef GRPC_CALL_USES_ASAN_WAKER
|
1994
|
-
return Waker(this, nullptr);
|
1995
|
-
#endif
|
1996
|
-
}
|
1997
|
-
Waker MakeNonOwningWaker() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) override;
|
1998
|
-
|
1999
|
-
// Wakeable methods
|
2000
|
-
void Wakeup(void*) override {
|
2001
|
-
channel()->event_engine()->Run([this] {
|
2002
|
-
ApplicationCallbackExecCtx app_exec_ctx;
|
2003
|
-
ExecCtx exec_ctx;
|
2004
|
-
{
|
2005
|
-
ScopedContext activity_context(this);
|
2006
|
-
MutexLock lock(&mu_);
|
2007
|
-
Update();
|
2008
|
-
}
|
2009
|
-
InternalUnref("wakeup");
|
2010
|
-
});
|
1984
|
+
Party::Unref();
|
2011
1985
|
}
|
2012
|
-
void Drop(void*) override { InternalUnref("wakeup"); }
|
2013
1986
|
|
2014
1987
|
void RunInContext(absl::AnyInvocable<void()> fn) {
|
2015
|
-
|
2016
|
-
|
2017
|
-
|
2018
|
-
InternalRef("in_context");
|
2019
|
-
channel()->event_engine()->Run([this, fn = std::move(fn)]() mutable {
|
2020
|
-
ApplicationCallbackExecCtx app_exec_ctx;
|
2021
|
-
ExecCtx exec_ctx;
|
2022
|
-
{
|
2023
|
-
ScopedContext activity_context(this);
|
2024
|
-
MutexLock lock(&mu_);
|
1988
|
+
Spawn(
|
1989
|
+
"run_in_context",
|
1990
|
+
[fn = std::move(fn)]() mutable {
|
2025
1991
|
fn();
|
2026
|
-
|
2027
|
-
}
|
2028
|
-
|
2029
|
-
});
|
2030
|
-
}
|
2031
|
-
}
|
2032
|
-
|
2033
|
-
grpc_compression_algorithm test_only_compression_algorithm() override {
|
2034
|
-
abort();
|
2035
|
-
}
|
2036
|
-
uint32_t test_only_message_flags() override { abort(); }
|
2037
|
-
uint32_t test_only_encodings_accepted_by_peer() override { abort(); }
|
2038
|
-
grpc_compression_algorithm compression_for_level(
|
2039
|
-
grpc_compression_level) override {
|
2040
|
-
abort();
|
1992
|
+
return Empty{};
|
1993
|
+
},
|
1994
|
+
[](Empty) {});
|
2041
1995
|
}
|
2042
1996
|
|
2043
1997
|
// This should return nullptr for the promise stack (and alternative means
|
2044
1998
|
// for that functionality be invented)
|
2045
1999
|
grpc_call_stack* call_stack() override { return nullptr; }
|
2046
2000
|
|
2047
|
-
void UpdateDeadline(Timestamp deadline);
|
2048
|
-
void ResetDeadline();
|
2001
|
+
void UpdateDeadline(Timestamp deadline) ABSL_LOCKS_EXCLUDED(deadline_mu_);
|
2002
|
+
void ResetDeadline() ABSL_LOCKS_EXCLUDED(deadline_mu_);
|
2003
|
+
Timestamp deadline() {
|
2004
|
+
MutexLock lock(&deadline_mu_);
|
2005
|
+
return deadline_;
|
2006
|
+
}
|
2049
2007
|
|
2050
2008
|
// Implementation of EventEngine::Closure, called when deadline expires
|
2051
2009
|
void Run() override;
|
2052
2010
|
|
2053
2011
|
virtual ServerCallContext* server_call_context() { return nullptr; }
|
2012
|
+
bool failed_before_recv_message() const final {
|
2013
|
+
return failed_before_recv_message_.load(std::memory_order_relaxed);
|
2014
|
+
}
|
2015
|
+
|
2016
|
+
grpc_event_engine::experimental::EventEngine* event_engine() const final {
|
2017
|
+
return channel()->event_engine();
|
2018
|
+
}
|
2019
|
+
|
2020
|
+
using Call::arena;
|
2054
2021
|
|
2055
2022
|
protected:
|
2056
2023
|
class ScopedContext
|
2057
2024
|
: public ScopedActivity,
|
2025
|
+
public BatchBuilder,
|
2026
|
+
public promise_detail::Context<BatchBuilder>,
|
2058
2027
|
public promise_detail::Context<Arena>,
|
2059
2028
|
public promise_detail::Context<grpc_call_context_element>,
|
2060
2029
|
public promise_detail::Context<CallContext>,
|
@@ -2062,6 +2031,8 @@ class PromiseBasedCall : public Call,
|
|
2062
2031
|
public:
|
2063
2032
|
explicit ScopedContext(PromiseBasedCall* call)
|
2064
2033
|
: ScopedActivity(call),
|
2034
|
+
BatchBuilder(&call->batch_payload_),
|
2035
|
+
promise_detail::Context<BatchBuilder>(this),
|
2065
2036
|
promise_detail::Context<Arena>(call->arena()),
|
2066
2037
|
promise_detail::Context<grpc_call_context_element>(call->context_),
|
2067
2038
|
promise_detail::Context<CallContext>(&call->call_context_),
|
@@ -2095,8 +2066,12 @@ class PromiseBasedCall : public Call,
|
|
2095
2066
|
};
|
2096
2067
|
|
2097
2068
|
~PromiseBasedCall() override {
|
2098
|
-
if (non_owning_wakeable_) non_owning_wakeable_->DropActivity();
|
2099
2069
|
if (cq_) GRPC_CQ_INTERNAL_UNREF(cq_, "bind");
|
2070
|
+
for (int i = 0; i < GRPC_CONTEXT_COUNT; i++) {
|
2071
|
+
if (context_[i].destroy) {
|
2072
|
+
context_[i].destroy(context_[i].value);
|
2073
|
+
}
|
2074
|
+
}
|
2100
2075
|
}
|
2101
2076
|
|
2102
2077
|
// Enumerates why a Completion is still pending
|
@@ -2104,6 +2079,7 @@ class PromiseBasedCall : public Call,
|
|
2104
2079
|
// We're in the midst of starting a batch of operations
|
2105
2080
|
kStartingBatch = 0,
|
2106
2081
|
// The following correspond with the batch operations from above
|
2082
|
+
kSendInitialMetadata,
|
2107
2083
|
kReceiveInitialMetadata,
|
2108
2084
|
kReceiveStatusOnClient,
|
2109
2085
|
kReceiveCloseOnServer = kReceiveStatusOnClient,
|
@@ -2113,10 +2089,17 @@ class PromiseBasedCall : public Call,
|
|
2113
2089
|
kSendCloseFromClient = kSendStatusFromServer,
|
2114
2090
|
};
|
2115
2091
|
|
2092
|
+
bool RunParty() override {
|
2093
|
+
ScopedContext ctx(this);
|
2094
|
+
return Party::RunParty();
|
2095
|
+
}
|
2096
|
+
|
2116
2097
|
const char* PendingOpString(PendingOp reason) const {
|
2117
2098
|
switch (reason) {
|
2118
2099
|
case PendingOp::kStartingBatch:
|
2119
2100
|
return "StartingBatch";
|
2101
|
+
case PendingOp::kSendInitialMetadata:
|
2102
|
+
return "SendInitialMetadata";
|
2120
2103
|
case PendingOp::kReceiveInitialMetadata:
|
2121
2104
|
return "ReceiveInitialMetadata";
|
2122
2105
|
case PendingOp::kReceiveStatusOnClient:
|
@@ -2131,62 +2114,55 @@ class PromiseBasedCall : public Call,
|
|
2131
2114
|
return "Unknown";
|
2132
2115
|
}
|
2133
2116
|
|
2134
|
-
static constexpr
|
2117
|
+
static constexpr uint32_t PendingOpBit(PendingOp reason) {
|
2135
2118
|
return 1 << static_cast<int>(reason);
|
2136
2119
|
}
|
2137
2120
|
|
2138
|
-
Mutex* mu() const ABSL_LOCK_RETURNED(mu_) { return &mu_; }
|
2139
2121
|
// Begin work on a completion, recording the tag/closure to notify.
|
2140
2122
|
// Use the op selected in \a ops to determine the index to allocate into.
|
2141
2123
|
// Starts the "StartingBatch" PendingOp immediately.
|
2142
2124
|
// Assumes at least one operation in \a ops.
|
2143
|
-
Completion StartCompletion(void* tag, bool is_closure, const grpc_op* ops)
|
2144
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
2125
|
+
Completion StartCompletion(void* tag, bool is_closure, const grpc_op* ops);
|
2145
2126
|
// Add one pending op to the completion, and return it.
|
2146
|
-
Completion AddOpToCompletion(const Completion& completion, PendingOp reason)
|
2147
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
2127
|
+
Completion AddOpToCompletion(const Completion& completion, PendingOp reason);
|
2148
2128
|
// Stringify a completion
|
2149
2129
|
std::string CompletionString(const Completion& completion) const {
|
2150
2130
|
return completion.has_value()
|
2151
|
-
?
|
2152
|
-
"%d:tag=%p", static_cast<int>(completion.index()),
|
2153
|
-
completion_info_[completion.index()].pending.tag)
|
2131
|
+
? completion_info_[completion.index()].pending.ToString(this)
|
2154
2132
|
: "no-completion";
|
2155
2133
|
}
|
2156
2134
|
// Finish one op on the completion. Must have been previously been added.
|
2157
2135
|
// The completion as a whole finishes when all pending ops finish.
|
2158
|
-
void FinishOpOnCompletion(Completion* completion, PendingOp reason)
|
2159
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
2136
|
+
void FinishOpOnCompletion(Completion* completion, PendingOp reason);
|
2160
2137
|
// Mark the completion as failed. Does not finish it.
|
2161
2138
|
void FailCompletion(const Completion& completion,
|
2162
2139
|
SourceLocation source_location = {});
|
2163
|
-
//
|
2164
|
-
|
2165
|
-
|
2166
|
-
virtual void UpdateOnce() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) = 0;
|
2140
|
+
// Mark the completion as infallible. Overrides FailCompletion to report
|
2141
|
+
// success always.
|
2142
|
+
void ForceCompletionSuccess(const Completion& completion);
|
2167
2143
|
// Accept the stats from the context (call once we have proof the transport is
|
2168
2144
|
// done with them).
|
2169
2145
|
// Right now this means that promise based calls do not record correct stats
|
2170
2146
|
// with census if they are cancelled.
|
2171
2147
|
// TODO(ctiller): this should be remedied before promise based calls are
|
2172
2148
|
// dexperimentalized.
|
2173
|
-
void AcceptTransportStatsFromContext()
|
2149
|
+
void AcceptTransportStatsFromContext() {
|
2174
2150
|
final_stats_ = *call_context_.call_stats();
|
2175
2151
|
}
|
2176
2152
|
|
2177
|
-
grpc_completion_queue* cq()
|
2153
|
+
grpc_completion_queue* cq() { return cq_; }
|
2178
2154
|
|
2179
2155
|
void CToMetadata(grpc_metadata* metadata, size_t count,
|
2180
2156
|
grpc_metadata_batch* batch);
|
2181
2157
|
|
2182
|
-
std::string ActivityDebugTag(void*) const override { return DebugTag(); }
|
2183
|
-
|
2184
2158
|
// At the end of the call run any finalization actions.
|
2185
2159
|
void RunFinalization(grpc_status_code status, const char* status_details) {
|
2186
2160
|
grpc_call_final_info final_info;
|
2187
2161
|
final_info.stats = final_stats_;
|
2188
2162
|
final_info.final_status = status;
|
2189
2163
|
final_info.error_string = status_details;
|
2164
|
+
final_info.stats.latency =
|
2165
|
+
gpr_cycle_counter_sub(gpr_get_cycle_counter(), start_time());
|
2190
2166
|
finalization_.Run(&final_info);
|
2191
2167
|
}
|
2192
2168
|
|
@@ -2209,158 +2185,164 @@ class PromiseBasedCall : public Call,
|
|
2209
2185
|
}
|
2210
2186
|
}
|
2211
2187
|
|
2212
|
-
|
2213
|
-
|
2214
|
-
outstanding_send_.has_value(),
|
2215
|
-
send_message_completion_)
|
2216
|
-
.c_str(),
|
2217
|
-
PresentAndCompletionText("outstanding_recv",
|
2218
|
-
outstanding_recv_.has_value(),
|
2219
|
-
recv_message_completion_)
|
2220
|
-
.c_str());
|
2221
|
-
}
|
2222
|
-
|
2188
|
+
// Spawn a job that will first do FirstPromise then receive a message
|
2189
|
+
template <typename FirstPromise>
|
2223
2190
|
void StartRecvMessage(const grpc_op& op, const Completion& completion,
|
2224
|
-
|
2225
|
-
|
2226
|
-
|
2227
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
2228
|
-
void CancelRecvMessage() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
2191
|
+
FirstPromise first,
|
2192
|
+
PipeReceiver<MessageHandle>* receiver,
|
2193
|
+
bool cancel_on_error, Party::BulkSpawner& spawner);
|
2229
2194
|
void StartSendMessage(const grpc_op& op, const Completion& completion,
|
2230
|
-
PipeSender<MessageHandle>* sender
|
2231
|
-
|
2232
|
-
|
2233
|
-
void
|
2195
|
+
PipeSender<MessageHandle>* sender,
|
2196
|
+
Party::BulkSpawner& spawner);
|
2197
|
+
|
2198
|
+
void set_completed() { finished_.Set(); }
|
2234
2199
|
|
2235
|
-
|
2236
|
-
|
2200
|
+
// Returns a promise that resolves to Empty whenever the call is completed.
|
2201
|
+
auto finished() { return finished_.Wait(); }
|
2202
|
+
|
2203
|
+
// Returns a promise that resolves to Empty whenever there is no outstanding
|
2204
|
+
// send operation
|
2205
|
+
auto WaitForSendingStarted() {
|
2206
|
+
return [this]() -> Poll<Empty> {
|
2207
|
+
int n = sends_queued_.load(std::memory_order_relaxed);
|
2208
|
+
if (grpc_call_trace.enabled()) {
|
2209
|
+
gpr_log(GPR_DEBUG, "%s[call] WaitForSendingStarted n=%d",
|
2210
|
+
DebugTag().c_str(), n);
|
2211
|
+
}
|
2212
|
+
if (n != 0) return waiting_for_queued_sends_.pending();
|
2213
|
+
return Empty{};
|
2214
|
+
};
|
2215
|
+
}
|
2216
|
+
|
2217
|
+
// Mark that a send has been queued - blocks sending trailing metadata.
|
2218
|
+
void QueueSend() {
|
2219
|
+
if (grpc_call_trace.enabled()) {
|
2220
|
+
gpr_log(GPR_DEBUG, "%s[call] QueueSend", DebugTag().c_str());
|
2221
|
+
}
|
2222
|
+
sends_queued_.fetch_add(1, std::memory_order_relaxed);
|
2237
2223
|
}
|
2238
|
-
|
2239
|
-
|
2240
|
-
|
2224
|
+
// Mark that a send has been dequeued - allows sending trailing metadata once
|
2225
|
+
// zero sends are queued.
|
2226
|
+
void EnactSend() {
|
2227
|
+
if (grpc_call_trace.enabled()) {
|
2228
|
+
gpr_log(GPR_DEBUG, "%s[call] EnactSend", DebugTag().c_str());
|
2229
|
+
}
|
2230
|
+
if (1 == sends_queued_.fetch_sub(1, std::memory_order_relaxed)) {
|
2231
|
+
waiting_for_queued_sends_.Wake();
|
2232
|
+
}
|
2241
2233
|
}
|
2242
2234
|
|
2243
2235
|
private:
|
2244
2236
|
union CompletionInfo {
|
2237
|
+
static constexpr uint32_t kOpFailed = 0x8000'0000u;
|
2238
|
+
static constexpr uint32_t kOpForceSuccess = 0x4000'0000u;
|
2239
|
+
CompletionInfo() {}
|
2240
|
+
enum CompletionState {
|
2241
|
+
kPending,
|
2242
|
+
kSuccess,
|
2243
|
+
kFailure,
|
2244
|
+
};
|
2245
2245
|
struct Pending {
|
2246
|
-
// Bitmask of PendingOps
|
2247
|
-
|
2246
|
+
// Bitmask of PendingOps at the bottom, and kOpFailed, kOpForceSuccess at
|
2247
|
+
// the top.
|
2248
|
+
std::atomic<uint32_t> state;
|
2248
2249
|
bool is_closure;
|
2249
|
-
|
2250
|
+
// True if this completion was for a recv_message op.
|
2251
|
+
// In that case if the completion as a whole fails we need to cleanup the
|
2252
|
+
// returned message.
|
2253
|
+
bool is_recv_message;
|
2250
2254
|
void* tag;
|
2251
|
-
} pending;
|
2252
|
-
grpc_cq_completion completion;
|
2253
|
-
};
|
2254
2255
|
|
2255
|
-
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
// Activity is going away... drop its reference and sever the connection
|
2263
|
-
// back.
|
2264
|
-
void DropActivity() ABSL_LOCKS_EXCLUDED(mu_) {
|
2265
|
-
auto unref = absl::MakeCleanup([this]() { Unref(); });
|
2266
|
-
MutexLock lock(&mu_);
|
2267
|
-
GPR_ASSERT(call_ != nullptr);
|
2268
|
-
call_ = nullptr;
|
2269
|
-
}
|
2256
|
+
void Start(bool is_closure, void* tag) {
|
2257
|
+
this->is_closure = is_closure;
|
2258
|
+
this->is_recv_message = false;
|
2259
|
+
this->tag = tag;
|
2260
|
+
state.store(PendingOpBit(PendingOp::kStartingBatch),
|
2261
|
+
std::memory_order_release);
|
2262
|
+
}
|
2270
2263
|
|
2271
|
-
|
2272
|
-
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
auto unref = absl::MakeCleanup([this]() { Unref(); });
|
2277
|
-
ReleasableMutexLock lock(&mu_);
|
2278
|
-
// Note that activity refcount can drop to zero, but we could win the lock
|
2279
|
-
// against DropActivity, so we need to only increase activities refcount
|
2280
|
-
// if it is non-zero.
|
2281
|
-
PromiseBasedCall* call = call_;
|
2282
|
-
if (call != nullptr && call->RefIfNonZero()) {
|
2283
|
-
lock.Release();
|
2284
|
-
// Activity still exists and we have a reference: wake it up, which will
|
2285
|
-
// drop the ref.
|
2286
|
-
call->Wakeup(nullptr);
|
2264
|
+
void AddPendingBit(PendingOp reason) {
|
2265
|
+
if (reason == PendingOp::kReceiveMessage) is_recv_message = true;
|
2266
|
+
auto prev =
|
2267
|
+
state.fetch_or(PendingOpBit(reason), std::memory_order_relaxed);
|
2268
|
+
GPR_ASSERT((prev & PendingOpBit(reason)) == 0);
|
2287
2269
|
}
|
2288
|
-
}
|
2289
2270
|
|
2290
|
-
|
2291
|
-
|
2292
|
-
|
2293
|
-
|
2271
|
+
CompletionState RemovePendingBit(PendingOp reason) {
|
2272
|
+
const uint32_t mask = ~PendingOpBit(reason);
|
2273
|
+
auto prev = state.fetch_and(mask, std::memory_order_acq_rel);
|
2274
|
+
GPR_ASSERT((prev & PendingOpBit(reason)) != 0);
|
2275
|
+
switch (prev & mask) {
|
2276
|
+
case kOpFailed:
|
2277
|
+
return kFailure;
|
2278
|
+
case kOpFailed | kOpForceSuccess:
|
2279
|
+
case kOpForceSuccess:
|
2280
|
+
case 0:
|
2281
|
+
return kSuccess;
|
2282
|
+
default:
|
2283
|
+
return kPending;
|
2284
|
+
}
|
2285
|
+
}
|
2294
2286
|
|
2295
|
-
|
2287
|
+
void MarkFailed() {
|
2288
|
+
state.fetch_or(kOpFailed, std::memory_order_relaxed);
|
2289
|
+
}
|
2296
2290
|
|
2297
|
-
|
2298
|
-
|
2299
|
-
void Unref() {
|
2300
|
-
if (1 == refs_.fetch_sub(1, std::memory_order_acq_rel)) {
|
2301
|
-
delete this;
|
2291
|
+
void MarkForceSuccess() {
|
2292
|
+
state.fetch_or(kOpForceSuccess, std::memory_order_relaxed);
|
2302
2293
|
}
|
2303
|
-
}
|
2304
2294
|
|
2305
|
-
|
2306
|
-
|
2307
|
-
|
2308
|
-
|
2309
|
-
|
2310
|
-
|
2295
|
+
std::string ToString(const PromiseBasedCall* call) const {
|
2296
|
+
auto state = this->state.load(std::memory_order_relaxed);
|
2297
|
+
std::vector<absl::string_view> pending_ops;
|
2298
|
+
for (size_t i = 0; i < 24; i++) {
|
2299
|
+
if (state & (1u << i)) {
|
2300
|
+
pending_ops.push_back(
|
2301
|
+
call->PendingOpString(static_cast<PendingOp>(i)));
|
2302
|
+
}
|
2303
|
+
}
|
2304
|
+
return absl::StrFormat("{%s}%s:tag=%p", absl::StrJoin(pending_ops, ","),
|
2305
|
+
(state & kOpForceSuccess) ? ":force-success"
|
2306
|
+
: (state & kOpFailed) ? ":failed"
|
2307
|
+
: ":success",
|
2308
|
+
tag);
|
2309
|
+
}
|
2310
|
+
} pending;
|
2311
|
+
grpc_cq_completion completion;
|
2311
2312
|
};
|
2312
2313
|
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2316
|
-
|
2317
|
-
|
2318
|
-
|
2319
|
-
|
2320
|
-
static uint64_t MakeRefPair(uint32_t strong, uint32_t weak) {
|
2321
|
-
return (static_cast<uint64_t>(strong) << 32) + static_cast<int64_t>(weak);
|
2322
|
-
}
|
2323
|
-
static uint32_t GetStrongRefs(uint64_t ref_pair) {
|
2324
|
-
return static_cast<uint32_t>(ref_pair >> 32);
|
2325
|
-
}
|
2326
|
-
static uint32_t GetWeakRefs(uint64_t ref_pair) {
|
2327
|
-
return static_cast<uint32_t>(ref_pair & 0xffffffffu);
|
2328
|
-
}
|
2329
|
-
|
2330
|
-
bool RefIfNonZero() {
|
2331
|
-
uint64_t prev_ref_pair = refs_.load(std::memory_order_acquire);
|
2332
|
-
do {
|
2333
|
-
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
2334
|
-
if (strong_refs == 0) return false;
|
2335
|
-
} while (!refs_.compare_exchange_weak(
|
2336
|
-
prev_ref_pair, prev_ref_pair + MakeRefPair(1, 0),
|
2337
|
-
std::memory_order_acq_rel, std::memory_order_acquire));
|
2338
|
-
return true;
|
2314
|
+
void PartyOver() override {
|
2315
|
+
{
|
2316
|
+
ScopedContext ctx(this);
|
2317
|
+
CancelRemainingParticipants();
|
2318
|
+
arena()->DestroyManagedNewObjects();
|
2319
|
+
}
|
2320
|
+
DeleteThis();
|
2339
2321
|
}
|
2340
2322
|
|
2341
|
-
mutable Mutex mu_;
|
2342
|
-
std::atomic<uint64_t> refs_;
|
2343
2323
|
CallContext call_context_{this};
|
2344
|
-
bool keep_polling_ ABSL_GUARDED_BY(mu()) = false;
|
2345
2324
|
|
2346
2325
|
// Contexts for various subsystems (security, tracing, ...).
|
2347
2326
|
grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
|
2348
|
-
grpc_completion_queue* cq_
|
2349
|
-
NonOwningWakable* non_owning_wakeable_ ABSL_GUARDED_BY(mu_) = nullptr;
|
2327
|
+
grpc_completion_queue* cq_;
|
2350
2328
|
CompletionInfo completion_info_[6];
|
2351
2329
|
grpc_call_stats final_stats_{};
|
2352
2330
|
CallFinalization finalization_;
|
2353
2331
|
// Current deadline.
|
2354
|
-
|
2355
|
-
|
2356
|
-
|
2357
|
-
|
2358
|
-
|
2359
|
-
|
2360
|
-
|
2361
|
-
|
2362
|
-
|
2363
|
-
bool
|
2332
|
+
Mutex deadline_mu_;
|
2333
|
+
Timestamp deadline_ ABSL_GUARDED_BY(deadline_mu_) = Timestamp::InfFuture();
|
2334
|
+
grpc_event_engine::experimental::EventEngine::TaskHandle ABSL_GUARDED_BY(
|
2335
|
+
deadline_mu_) deadline_task_;
|
2336
|
+
ExternallyObservableLatch<void> finished_;
|
2337
|
+
// Non-zero with an outstanding GRPC_OP_SEND_INITIAL_METADATA or
|
2338
|
+
// GRPC_OP_SEND_MESSAGE (one count each), and 0 once those payloads have been
|
2339
|
+
// pushed onto the outgoing pipe.
|
2340
|
+
std::atomic<uint8_t> sends_queued_{0};
|
2341
|
+
std::atomic<bool> failed_before_recv_message_{false};
|
2342
|
+
// Waiter for when sends_queued_ becomes 0.
|
2343
|
+
IntraActivityWaiter waiting_for_queued_sends_;
|
2344
|
+
grpc_byte_buffer** recv_message_ = nullptr;
|
2345
|
+
grpc_transport_stream_op_batch_payload batch_payload_{context_};
|
2364
2346
|
};
|
2365
2347
|
|
2366
2348
|
template <typename T>
|
@@ -2380,31 +2362,13 @@ PromiseBasedCall::PromiseBasedCall(Arena* arena, uint32_t initial_external_refs,
|
|
2380
2362
|
const grpc_call_create_args& args)
|
2381
2363
|
: Call(arena, args.server_transport_data == nullptr, args.send_deadline,
|
2382
2364
|
args.channel->Ref()),
|
2383
|
-
|
2365
|
+
Party(arena, initial_external_refs),
|
2384
2366
|
cq_(args.cq) {
|
2385
2367
|
if (args.cq != nullptr) {
|
2386
|
-
GPR_ASSERT(args.pollset_set_alternative == nullptr &&
|
2387
|
-
"Only one of 'cq' and 'pollset_set_alternative' should be "
|
2388
|
-
"non-nullptr.");
|
2389
2368
|
GRPC_CQ_INTERNAL_REF(args.cq, "bind");
|
2390
|
-
call_context_.pollent_ =
|
2391
|
-
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args.cq));
|
2392
|
-
}
|
2393
|
-
if (args.pollset_set_alternative != nullptr) {
|
2394
|
-
call_context_.pollent_ = grpc_polling_entity_create_from_pollset_set(
|
2395
|
-
args.pollset_set_alternative);
|
2396
2369
|
}
|
2397
2370
|
}
|
2398
2371
|
|
2399
|
-
Waker PromiseBasedCall::MakeNonOwningWaker() {
|
2400
|
-
if (non_owning_wakeable_ == nullptr) {
|
2401
|
-
non_owning_wakeable_ = new NonOwningWakable(this);
|
2402
|
-
} else {
|
2403
|
-
non_owning_wakeable_->Ref();
|
2404
|
-
}
|
2405
|
-
return Waker(non_owning_wakeable_, nullptr);
|
2406
|
-
}
|
2407
|
-
|
2408
2372
|
void PromiseBasedCall::CToMetadata(grpc_metadata* metadata, size_t count,
|
2409
2373
|
grpc_metadata_batch* b) {
|
2410
2374
|
for (size_t i = 0; i < count; i++) {
|
@@ -2439,15 +2403,14 @@ void* PromiseBasedCall::ContextGet(grpc_context_index elem) const {
|
|
2439
2403
|
PromiseBasedCall::Completion PromiseBasedCall::StartCompletion(
|
2440
2404
|
void* tag, bool is_closure, const grpc_op* ops) {
|
2441
2405
|
Completion c(BatchSlotForOp(ops[0].op));
|
2442
|
-
if (grpc_call_trace.enabled()) {
|
2443
|
-
gpr_log(GPR_INFO, "%s[call] StartCompletion %s tag=%p", DebugTag().c_str(),
|
2444
|
-
CompletionString(c).c_str(), tag);
|
2445
|
-
}
|
2446
2406
|
if (!is_closure) {
|
2447
2407
|
grpc_cq_begin_op(cq(), tag);
|
2448
2408
|
}
|
2449
|
-
completion_info_[c.index()].pending
|
2450
|
-
|
2409
|
+
completion_info_[c.index()].pending.Start(is_closure, tag);
|
2410
|
+
if (grpc_call_trace.enabled()) {
|
2411
|
+
gpr_log(GPR_INFO, "%s[call] StartCompletion %s", DebugTag().c_str(),
|
2412
|
+
CompletionString(c).c_str());
|
2413
|
+
}
|
2451
2414
|
return c;
|
2452
2415
|
}
|
2453
2416
|
|
@@ -2458,10 +2421,7 @@ PromiseBasedCall::Completion PromiseBasedCall::AddOpToCompletion(
|
|
2458
2421
|
CompletionString(completion).c_str(), PendingOpString(reason));
|
2459
2422
|
}
|
2460
2423
|
GPR_ASSERT(completion.has_value());
|
2461
|
-
|
2462
|
-
completion_info_[completion.index()].pending.pending_op_bits;
|
2463
|
-
GPR_ASSERT((pending_op_bits & PendingOpBit(reason)) == 0);
|
2464
|
-
pending_op_bits |= PendingOpBit(reason);
|
2424
|
+
completion_info_[completion.index()].pending.AddPendingBit(reason);
|
2465
2425
|
return Completion(completion.index());
|
2466
2426
|
}
|
2467
2427
|
|
@@ -2472,71 +2432,61 @@ void PromiseBasedCall::FailCompletion(const Completion& completion,
|
|
2472
2432
|
"%s[call] FailCompletion %s", DebugTag().c_str(),
|
2473
2433
|
CompletionString(completion).c_str());
|
2474
2434
|
}
|
2475
|
-
completion_info_[completion.index()].pending.
|
2435
|
+
completion_info_[completion.index()].pending.MarkFailed();
|
2436
|
+
}
|
2437
|
+
|
2438
|
+
void PromiseBasedCall::ForceCompletionSuccess(const Completion& completion) {
|
2439
|
+
completion_info_[completion.index()].pending.MarkForceSuccess();
|
2476
2440
|
}
|
2477
2441
|
|
2478
2442
|
void PromiseBasedCall::FinishOpOnCompletion(Completion* completion,
|
2479
2443
|
PendingOp reason) {
|
2480
2444
|
if (grpc_call_trace.enabled()) {
|
2481
|
-
|
2482
|
-
|
2483
|
-
|
2484
|
-
std::vector<const char*> pending;
|
2485
|
-
for (size_t i = 0; i < 8 * sizeof(pending_op_bits); i++) {
|
2486
|
-
if (static_cast<PendingOp>(i) == reason) continue;
|
2487
|
-
if (pending_op_bits & (1 << i)) {
|
2488
|
-
pending.push_back(PendingOpString(static_cast<PendingOp>(i)));
|
2489
|
-
}
|
2490
|
-
}
|
2491
|
-
gpr_log(
|
2492
|
-
GPR_INFO, "%s[call] FinishOpOnCompletion tag:%p %s %s %s",
|
2493
|
-
DebugTag().c_str(), completion_info_[completion->index()].pending.tag,
|
2494
|
-
CompletionString(*completion).c_str(), PendingOpString(reason),
|
2495
|
-
(pending.empty()
|
2496
|
-
? (success ? std::string("done") : std::string("failed"))
|
2497
|
-
: absl::StrFormat("pending_ops={%s}", absl::StrJoin(pending, ",")))
|
2498
|
-
.c_str());
|
2445
|
+
gpr_log(GPR_INFO, "%s[call] FinishOpOnCompletion completion:%s finish:%s",
|
2446
|
+
DebugTag().c_str(), CompletionString(*completion).c_str(),
|
2447
|
+
PendingOpString(reason));
|
2499
2448
|
}
|
2500
2449
|
const uint8_t i = completion->TakeIndex();
|
2501
2450
|
GPR_ASSERT(i < GPR_ARRAY_SIZE(completion_info_));
|
2502
2451
|
CompletionInfo::Pending& pending = completion_info_[i].pending;
|
2503
|
-
|
2504
|
-
pending.
|
2505
|
-
|
2506
|
-
|
2507
|
-
|
2508
|
-
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2452
|
+
bool success;
|
2453
|
+
switch (pending.RemovePendingBit(reason)) {
|
2454
|
+
case CompletionInfo::kPending:
|
2455
|
+
return; // Early out
|
2456
|
+
case CompletionInfo::kSuccess:
|
2457
|
+
success = true;
|
2458
|
+
break;
|
2459
|
+
case CompletionInfo::kFailure:
|
2460
|
+
success = false;
|
2461
|
+
break;
|
2462
|
+
}
|
2463
|
+
if (pending.is_recv_message && !success && *recv_message_ != nullptr) {
|
2464
|
+
grpc_byte_buffer_destroy(*recv_message_);
|
2465
|
+
*recv_message_ = nullptr;
|
2466
|
+
}
|
2467
|
+
auto error = success ? absl::OkStatus() : absl::CancelledError();
|
2468
|
+
if (pending.is_closure) {
|
2469
|
+
ExecCtx::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(pending.tag),
|
2470
|
+
error);
|
2471
|
+
} else {
|
2472
|
+
grpc_cq_end_op(
|
2473
|
+
cq(), pending.tag, error, [](void*, grpc_cq_completion*) {}, nullptr,
|
2474
|
+
&completion_info_[i].completion);
|
2515
2475
|
}
|
2516
2476
|
}
|
2517
2477
|
|
2518
|
-
void PromiseBasedCall::Update() {
|
2519
|
-
keep_polling_ = false;
|
2520
|
-
do {
|
2521
|
-
UpdateOnce();
|
2522
|
-
} while (std::exchange(keep_polling_, false));
|
2523
|
-
}
|
2524
|
-
|
2525
|
-
void PromiseBasedCall::ForceImmediateRepoll() { keep_polling_ = true; }
|
2526
|
-
|
2527
2478
|
void PromiseBasedCall::SetCompletionQueue(grpc_completion_queue* cq) {
|
2528
|
-
MutexLock lock(&mu_);
|
2529
|
-
SetCompletionQueueLocked(cq);
|
2530
|
-
}
|
2531
|
-
|
2532
|
-
void PromiseBasedCall::SetCompletionQueueLocked(grpc_completion_queue* cq) {
|
2533
2479
|
cq_ = cq;
|
2534
2480
|
GRPC_CQ_INTERNAL_REF(cq, "bind");
|
2535
|
-
call_context_.pollent_ =
|
2536
|
-
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
|
2537
2481
|
}
|
2538
2482
|
|
2539
2483
|
void PromiseBasedCall::UpdateDeadline(Timestamp deadline) {
|
2484
|
+
MutexLock lock(&deadline_mu_);
|
2485
|
+
if (grpc_call_trace.enabled()) {
|
2486
|
+
gpr_log(GPR_DEBUG, "%s[call] UpdateDeadline from=%s to=%s",
|
2487
|
+
DebugTag().c_str(), deadline_.ToString().c_str(),
|
2488
|
+
deadline.ToString().c_str());
|
2489
|
+
}
|
2540
2490
|
if (deadline >= deadline_) return;
|
2541
2491
|
auto* const event_engine = channel()->event_engine();
|
2542
2492
|
if (deadline_ != Timestamp::InfFuture()) {
|
@@ -2544,10 +2494,12 @@ void PromiseBasedCall::UpdateDeadline(Timestamp deadline) {
|
|
2544
2494
|
} else {
|
2545
2495
|
InternalRef("deadline");
|
2546
2496
|
}
|
2547
|
-
|
2497
|
+
deadline_ = deadline;
|
2498
|
+
deadline_task_ = event_engine->RunAfter(deadline - Timestamp::Now(), this);
|
2548
2499
|
}
|
2549
2500
|
|
2550
2501
|
void PromiseBasedCall::ResetDeadline() {
|
2502
|
+
MutexLock lock(&deadline_mu_);
|
2551
2503
|
if (deadline_ == Timestamp::InfFuture()) return;
|
2552
2504
|
auto* const event_engine = channel()->event_engine();
|
2553
2505
|
if (!event_engine->Cancel(deadline_task_)) return;
|
@@ -2564,117 +2516,91 @@ void PromiseBasedCall::Run() {
|
|
2564
2516
|
|
2565
2517
|
void PromiseBasedCall::StartSendMessage(const grpc_op& op,
|
2566
2518
|
const Completion& completion,
|
2567
|
-
PipeSender<MessageHandle>* sender
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2577
|
-
|
2578
|
-
|
2579
|
-
|
2580
|
-
|
2519
|
+
PipeSender<MessageHandle>* sender,
|
2520
|
+
Party::BulkSpawner& spawner) {
|
2521
|
+
QueueSend();
|
2522
|
+
SliceBuffer send;
|
2523
|
+
grpc_slice_buffer_swap(
|
2524
|
+
&op.data.send_message.send_message->data.raw.slice_buffer,
|
2525
|
+
send.c_slice_buffer());
|
2526
|
+
auto msg = arena()->MakePooled<Message>(std::move(send), op.flags);
|
2527
|
+
spawner.Spawn(
|
2528
|
+
"call_send_message",
|
2529
|
+
[this, sender, msg = std::move(msg)]() mutable {
|
2530
|
+
EnactSend();
|
2531
|
+
return sender->Push(std::move(msg));
|
2532
|
+
},
|
2533
|
+
[this, completion = AddOpToCompletion(
|
2534
|
+
completion, PendingOp::kSendMessage)](bool result) mutable {
|
2535
|
+
if (grpc_call_trace.enabled()) {
|
2536
|
+
gpr_log(GPR_DEBUG, "%sSendMessage completes %s", DebugTag().c_str(),
|
2537
|
+
result ? "successfully" : "with failure");
|
2538
|
+
}
|
2539
|
+
if (!result) FailCompletion(completion);
|
2540
|
+
FinishOpOnCompletion(&completion, PendingOp::kSendMessage);
|
2541
|
+
});
|
2581
2542
|
}
|
2582
2543
|
|
2583
|
-
|
2584
|
-
|
2585
|
-
|
2586
|
-
|
2587
|
-
|
2588
|
-
|
2589
|
-
|
2590
|
-
|
2591
|
-
|
2592
|
-
FailCompletion(send_message_completion_);
|
2593
|
-
return false;
|
2594
|
-
}
|
2595
|
-
FinishOpOnCompletion(&send_message_completion_, PendingOp::kSendMessage);
|
2596
|
-
outstanding_send_.reset();
|
2544
|
+
template <typename FirstPromiseFactory>
|
2545
|
+
void PromiseBasedCall::StartRecvMessage(
|
2546
|
+
const grpc_op& op, const Completion& completion,
|
2547
|
+
FirstPromiseFactory first_promise_factory,
|
2548
|
+
PipeReceiver<MessageHandle>* receiver, bool cancel_on_error,
|
2549
|
+
Party::BulkSpawner& spawner) {
|
2550
|
+
if (grpc_call_trace.enabled()) {
|
2551
|
+
gpr_log(GPR_INFO, "%s[call] Start RecvMessage: %s", DebugTag().c_str(),
|
2552
|
+
CompletionString(completion).c_str());
|
2597
2553
|
}
|
2598
|
-
return true;
|
2599
|
-
}
|
2600
|
-
|
2601
|
-
void PromiseBasedCall::CancelSendMessage() {
|
2602
|
-
if (!outstanding_send_.has_value()) return;
|
2603
|
-
FinishOpOnCompletion(&send_message_completion_, PendingOp::kSendMessage);
|
2604
|
-
outstanding_send_.reset();
|
2605
|
-
}
|
2606
|
-
|
2607
|
-
void PromiseBasedCall::StartRecvMessage(const grpc_op& op,
|
2608
|
-
const Completion& completion,
|
2609
|
-
PipeReceiver<MessageHandle>* receiver) {
|
2610
|
-
GPR_ASSERT(!outstanding_recv_.has_value());
|
2611
2554
|
recv_message_ = op.data.recv_message.recv_message;
|
2612
|
-
|
2613
|
-
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
|
2618
|
-
|
2619
|
-
|
2620
|
-
|
2621
|
-
|
2622
|
-
|
2623
|
-
|
2624
|
-
|
2625
|
-
|
2626
|
-
|
2627
|
-
|
2628
|
-
nullptr, 0
|
2629
|
-
|
2630
|
-
|
2631
|
-
|
2632
|
-
|
2633
|
-
|
2634
|
-
|
2635
|
-
|
2636
|
-
|
2637
|
-
|
2638
|
-
|
2639
|
-
|
2640
|
-
|
2641
|
-
|
2642
|
-
|
2643
|
-
|
2644
|
-
|
2645
|
-
|
2646
|
-
|
2647
|
-
|
2648
|
-
|
2649
|
-
|
2650
|
-
|
2651
|
-
|
2652
|
-
|
2653
|
-
|
2654
|
-
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2659
|
-
|
2660
|
-
|
2661
|
-
if (grpc_call_trace.enabled()) {
|
2662
|
-
gpr_log(GPR_INFO,
|
2663
|
-
"%s[call] UpdateOnce: outstanding_recv finishes: promise has "
|
2664
|
-
"completed without queuing a message, forcing end-of-stream",
|
2665
|
-
DebugTag().c_str());
|
2666
|
-
}
|
2667
|
-
outstanding_recv_.reset();
|
2668
|
-
*recv_message_ = nullptr;
|
2669
|
-
FinishOpOnCompletion(&recv_message_completion_, PendingOp::kReceiveMessage);
|
2670
|
-
}
|
2671
|
-
}
|
2672
|
-
|
2673
|
-
void PromiseBasedCall::CancelRecvMessage() {
|
2674
|
-
if (!outstanding_recv_.has_value()) return;
|
2675
|
-
*recv_message_ = nullptr;
|
2676
|
-
outstanding_recv_.reset();
|
2677
|
-
FinishOpOnCompletion(&recv_message_completion_, PendingOp::kReceiveMessage);
|
2555
|
+
spawner.Spawn(
|
2556
|
+
"call_recv_message",
|
2557
|
+
[first_promise_factory = std::move(first_promise_factory), receiver]() {
|
2558
|
+
return Seq(first_promise_factory(), receiver->Next());
|
2559
|
+
},
|
2560
|
+
[this, cancel_on_error,
|
2561
|
+
completion = AddOpToCompletion(completion, PendingOp::kReceiveMessage)](
|
2562
|
+
NextResult<MessageHandle> result) mutable {
|
2563
|
+
if (result.has_value()) {
|
2564
|
+
MessageHandle& message = *result;
|
2565
|
+
NoteLastMessageFlags(message->flags());
|
2566
|
+
if ((message->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
|
2567
|
+
(incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) {
|
2568
|
+
*recv_message_ = grpc_raw_compressed_byte_buffer_create(
|
2569
|
+
nullptr, 0, incoming_compression_algorithm());
|
2570
|
+
} else {
|
2571
|
+
*recv_message_ = grpc_raw_byte_buffer_create(nullptr, 0);
|
2572
|
+
}
|
2573
|
+
grpc_slice_buffer_move_into(message->payload()->c_slice_buffer(),
|
2574
|
+
&(*recv_message_)->data.raw.slice_buffer);
|
2575
|
+
if (grpc_call_trace.enabled()) {
|
2576
|
+
gpr_log(GPR_INFO,
|
2577
|
+
"%s[call] RecvMessage: outstanding_recv "
|
2578
|
+
"finishes: received %" PRIdPTR " byte message",
|
2579
|
+
DebugTag().c_str(),
|
2580
|
+
(*recv_message_)->data.raw.slice_buffer.length);
|
2581
|
+
}
|
2582
|
+
} else if (result.cancelled()) {
|
2583
|
+
if (grpc_call_trace.enabled()) {
|
2584
|
+
gpr_log(GPR_INFO,
|
2585
|
+
"%s[call] RecvMessage: outstanding_recv "
|
2586
|
+
"finishes: received end-of-stream with error",
|
2587
|
+
DebugTag().c_str());
|
2588
|
+
}
|
2589
|
+
failed_before_recv_message_.store(true);
|
2590
|
+
FailCompletion(completion);
|
2591
|
+
if (cancel_on_error) CancelWithError(absl::CancelledError());
|
2592
|
+
*recv_message_ = nullptr;
|
2593
|
+
} else {
|
2594
|
+
if (grpc_call_trace.enabled()) {
|
2595
|
+
gpr_log(GPR_INFO,
|
2596
|
+
"%s[call] RecvMessage: outstanding_recv "
|
2597
|
+
"finishes: received end-of-stream",
|
2598
|
+
DebugTag().c_str());
|
2599
|
+
}
|
2600
|
+
*recv_message_ = nullptr;
|
2601
|
+
}
|
2602
|
+
FinishOpOnCompletion(&completion, PendingOp::kReceiveMessage);
|
2603
|
+
});
|
2678
2604
|
}
|
2679
2605
|
|
2680
2606
|
///////////////////////////////////////////////////////////////////////////////
|
@@ -2690,14 +2616,12 @@ void CallContext::IncrementRefCount(const char* reason) {
|
|
2690
2616
|
|
2691
2617
|
void CallContext::Unref(const char* reason) { call_->InternalUnref(reason); }
|
2692
2618
|
|
2693
|
-
gpr_atm* CallContext::peer_string_atm_ptr() {
|
2694
|
-
return call_->peer_string_atm_ptr();
|
2695
|
-
}
|
2696
|
-
|
2697
2619
|
void CallContext::UpdateDeadline(Timestamp deadline) {
|
2698
2620
|
call_->UpdateDeadline(deadline);
|
2699
2621
|
}
|
2700
2622
|
|
2623
|
+
Timestamp CallContext::deadline() const { return call_->deadline(); }
|
2624
|
+
|
2701
2625
|
ServerCallContext* CallContext::server_call_context() {
|
2702
2626
|
return call_->server_call_context();
|
2703
2627
|
}
|
@@ -2728,6 +2652,17 @@ class ClientPromiseBasedCall final : public PromiseBasedCall {
|
|
2728
2652
|
ClientPromiseBasedCall(Arena* arena, grpc_call_create_args* args)
|
2729
2653
|
: PromiseBasedCall(arena, 1, *args) {
|
2730
2654
|
global_stats().IncrementClientCallsCreated();
|
2655
|
+
if (args->cq != nullptr) {
|
2656
|
+
GPR_ASSERT(args->pollset_set_alternative == nullptr &&
|
2657
|
+
"Only one of 'cq' and 'pollset_set_alternative' should be "
|
2658
|
+
"non-nullptr.");
|
2659
|
+
polling_entity_.Set(
|
2660
|
+
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq)));
|
2661
|
+
}
|
2662
|
+
if (args->pollset_set_alternative != nullptr) {
|
2663
|
+
polling_entity_.Set(grpc_polling_entity_create_from_pollset_set(
|
2664
|
+
args->pollset_set_alternative));
|
2665
|
+
}
|
2731
2666
|
ScopedContext context(this);
|
2732
2667
|
send_initial_metadata_ =
|
2733
2668
|
GetContext<Arena>()->MakePooled<ClientMetadata>(GetContext<Arena>());
|
@@ -2747,24 +2682,39 @@ class ClientPromiseBasedCall final : public PromiseBasedCall {
|
|
2747
2682
|
~ClientPromiseBasedCall() override {
|
2748
2683
|
ScopedContext context(this);
|
2749
2684
|
send_initial_metadata_.reset();
|
2750
|
-
|
2751
|
-
|
2752
|
-
//
|
2753
|
-
// out here and then allow the destructors to run at end of scope, but
|
2754
|
-
// before context.
|
2685
|
+
// Need to destroy the pipes under the ScopedContext above, so we
|
2686
|
+
// move them out here and then allow the destructors to run at
|
2687
|
+
// end of scope, but before context.
|
2755
2688
|
auto c2s = std::move(client_to_server_messages_);
|
2756
2689
|
auto s2c = std::move(server_to_client_messages_);
|
2757
2690
|
auto sim = std::move(server_initial_metadata_);
|
2758
2691
|
}
|
2759
2692
|
|
2760
|
-
absl::
|
2761
|
-
|
2762
|
-
|
2763
|
-
|
2764
|
-
|
2765
|
-
|
2693
|
+
void CancelWithError(absl::Status error) override {
|
2694
|
+
if (!started_.exchange(true, std::memory_order_relaxed)) {
|
2695
|
+
// Initial metadata not sent yet, so we can just fail the call.
|
2696
|
+
Spawn(
|
2697
|
+
"cancel_before_initial_metadata",
|
2698
|
+
[error = std::move(error), this]() {
|
2699
|
+
server_to_client_messages_.sender.Close();
|
2700
|
+
Finish(ServerMetadataFromStatus(error));
|
2701
|
+
return Empty{};
|
2702
|
+
},
|
2703
|
+
[](Empty) {});
|
2704
|
+
} else {
|
2705
|
+
Spawn(
|
2706
|
+
"cancel_with_error",
|
2707
|
+
[error = std::move(error), this]() {
|
2708
|
+
if (!cancel_error_.is_set()) {
|
2709
|
+
cancel_error_.Set(ServerMetadataFromStatus(error));
|
2710
|
+
}
|
2711
|
+
return Empty{};
|
2712
|
+
},
|
2713
|
+
[](Empty) {});
|
2714
|
+
}
|
2766
2715
|
}
|
2767
|
-
|
2716
|
+
absl::string_view GetServerAuthority() const override { abort(); }
|
2717
|
+
bool is_trailers_only() const override { return is_trailers_only_; }
|
2768
2718
|
|
2769
2719
|
grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
|
2770
2720
|
bool is_notify_tag_closure) override;
|
@@ -2774,65 +2724,84 @@ class ClientPromiseBasedCall final : public PromiseBasedCall {
|
|
2774
2724
|
}
|
2775
2725
|
|
2776
2726
|
private:
|
2777
|
-
// Poll the underlying promise (and sundry objects) once.
|
2778
|
-
void UpdateOnce() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu()) override;
|
2779
2727
|
// Finish the call with the given status/trailing metadata.
|
2780
|
-
void Finish(ServerMetadataHandle trailing_metadata)
|
2781
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
2728
|
+
void Finish(ServerMetadataHandle trailing_metadata);
|
2782
2729
|
// Validate that a set of ops is valid for a client call.
|
2783
|
-
grpc_call_error ValidateBatch(const grpc_op* ops, size_t nops) const
|
2784
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
2730
|
+
grpc_call_error ValidateBatch(const grpc_op* ops, size_t nops) const;
|
2785
2731
|
// Commit a valid batch of operations to be executed.
|
2786
2732
|
void CommitBatch(const grpc_op* ops, size_t nops,
|
2787
|
-
const Completion& completion)
|
2788
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
2733
|
+
const Completion& completion);
|
2789
2734
|
// Start the underlying promise.
|
2790
|
-
void StartPromise(ClientMetadataHandle client_initial_metadata
|
2791
|
-
|
2735
|
+
void StartPromise(ClientMetadataHandle client_initial_metadata,
|
2736
|
+
const Completion& completion, Party::BulkSpawner& spawner);
|
2737
|
+
// Start receiving initial metadata
|
2738
|
+
void StartRecvInitialMetadata(grpc_metadata_array* array,
|
2739
|
+
const Completion& completion,
|
2740
|
+
Party::BulkSpawner& spawner);
|
2741
|
+
void StartRecvStatusOnClient(
|
2742
|
+
const Completion& completion,
|
2743
|
+
grpc_op::grpc_op_data::grpc_op_recv_status_on_client op_args,
|
2744
|
+
Party::BulkSpawner& spawner);
|
2792
2745
|
// Publish status out to the application.
|
2793
2746
|
void PublishStatus(
|
2794
2747
|
grpc_op::grpc_op_data::grpc_op_recv_status_on_client op_args,
|
2795
|
-
ServerMetadataHandle trailing_metadata)
|
2796
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
2748
|
+
ServerMetadataHandle trailing_metadata);
|
2797
2749
|
// Publish server initial metadata out to the application.
|
2798
|
-
void PublishInitialMetadata(ServerMetadata* metadata)
|
2799
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
2800
|
-
|
2801
|
-
ArenaPromise<ServerMetadataHandle> promise_ ABSL_GUARDED_BY(mu());
|
2802
|
-
Pipe<ServerMetadataHandle> server_initial_metadata_ ABSL_GUARDED_BY(mu()){
|
2803
|
-
arena()};
|
2804
|
-
Pipe<MessageHandle> client_to_server_messages_ ABSL_GUARDED_BY(mu()){arena()};
|
2805
|
-
Pipe<MessageHandle> server_to_client_messages_ ABSL_GUARDED_BY(mu()){arena()};
|
2750
|
+
void PublishInitialMetadata(ServerMetadata* metadata);
|
2806
2751
|
|
2807
2752
|
ClientMetadataHandle send_initial_metadata_;
|
2808
|
-
|
2809
|
-
|
2810
|
-
|
2811
|
-
|
2812
|
-
|
2813
|
-
|
2814
|
-
|
2815
|
-
|
2816
|
-
|
2817
|
-
|
2818
|
-
|
2819
|
-
|
2753
|
+
Pipe<ServerMetadataHandle> server_initial_metadata_{arena()};
|
2754
|
+
Latch<ServerMetadataHandle> server_trailing_metadata_;
|
2755
|
+
Latch<ServerMetadataHandle> cancel_error_;
|
2756
|
+
Latch<grpc_polling_entity> polling_entity_;
|
2757
|
+
Pipe<MessageHandle> client_to_server_messages_{arena()};
|
2758
|
+
Pipe<MessageHandle> server_to_client_messages_{arena()};
|
2759
|
+
bool is_trailers_only_;
|
2760
|
+
// True once the promise for the call is started.
|
2761
|
+
// This corresponds to sending initial metadata, or cancelling before doing
|
2762
|
+
// so.
|
2763
|
+
// In the latter case real world code sometimes does not sent the initial
|
2764
|
+
// metadata, and so gating based upon that does not work out.
|
2765
|
+
std::atomic<bool> started_{false};
|
2766
|
+
// TODO(ctiller): delete when we remove the filter based API (may require some
|
2767
|
+
// cleanup in wrapped languages: they depend on this to hold slice refs)
|
2768
|
+
ServerMetadataHandle recv_initial_metadata_;
|
2769
|
+
ServerMetadataHandle recv_trailing_metadata_;
|
2820
2770
|
};
|
2821
2771
|
|
2822
2772
|
void ClientPromiseBasedCall::StartPromise(
|
2823
|
-
ClientMetadataHandle client_initial_metadata
|
2824
|
-
|
2825
|
-
|
2826
|
-
|
2827
|
-
|
2828
|
-
|
2829
|
-
|
2830
|
-
|
2831
|
-
|
2832
|
-
|
2833
|
-
|
2834
|
-
|
2835
|
-
|
2773
|
+
ClientMetadataHandle client_initial_metadata, const Completion& completion,
|
2774
|
+
Party::BulkSpawner& spawner) {
|
2775
|
+
auto token = ClientInitialMetadataOutstandingToken::New(arena());
|
2776
|
+
spawner.Spawn(
|
2777
|
+
"call_send_initial_metadata", token.Wait(),
|
2778
|
+
[this,
|
2779
|
+
completion = AddOpToCompletion(
|
2780
|
+
completion, PendingOp::kSendInitialMetadata)](bool result) mutable {
|
2781
|
+
if (!result) FailCompletion(completion);
|
2782
|
+
FinishOpOnCompletion(&completion, PendingOp::kSendInitialMetadata);
|
2783
|
+
});
|
2784
|
+
spawner.Spawn(
|
2785
|
+
"client_promise",
|
2786
|
+
[this, client_initial_metadata = std::move(client_initial_metadata),
|
2787
|
+
token = std::move(token)]() mutable {
|
2788
|
+
return Race(
|
2789
|
+
cancel_error_.Wait(),
|
2790
|
+
Map(channel()->channel_stack()->MakeClientCallPromise(CallArgs{
|
2791
|
+
std::move(client_initial_metadata), std::move(token),
|
2792
|
+
&polling_entity_, &server_initial_metadata_.sender,
|
2793
|
+
&client_to_server_messages_.receiver,
|
2794
|
+
&server_to_client_messages_.sender}),
|
2795
|
+
[this](ServerMetadataHandle trailing_metadata) {
|
2796
|
+
// If we're cancelled the transport doesn't get to return
|
2797
|
+
// stats.
|
2798
|
+
AcceptTransportStatsFromContext();
|
2799
|
+
return trailing_metadata;
|
2800
|
+
}));
|
2801
|
+
},
|
2802
|
+
[this](ServerMetadataHandle trailing_metadata) {
|
2803
|
+
Finish(std::move(trailing_metadata));
|
2804
|
+
});
|
2836
2805
|
}
|
2837
2806
|
|
2838
2807
|
grpc_call_error ClientPromiseBasedCall::ValidateBatch(const grpc_op* ops,
|
@@ -2873,49 +2842,61 @@ grpc_call_error ClientPromiseBasedCall::ValidateBatch(const grpc_op* ops,
|
|
2873
2842
|
|
2874
2843
|
void ClientPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
2875
2844
|
const Completion& completion) {
|
2845
|
+
Party::BulkSpawner spawner(this);
|
2876
2846
|
for (size_t op_idx = 0; op_idx < nops; op_idx++) {
|
2877
2847
|
const grpc_op& op = ops[op_idx];
|
2878
2848
|
switch (op.op) {
|
2879
2849
|
case GRPC_OP_SEND_INITIAL_METADATA: {
|
2880
|
-
|
2881
|
-
|
2882
|
-
|
2883
|
-
|
2884
|
-
|
2885
|
-
|
2886
|
-
|
2887
|
-
StartPromise(std::move(send_initial_metadata_));
|
2850
|
+
if (started_.exchange(true, std::memory_order_relaxed)) break;
|
2851
|
+
CToMetadata(op.data.send_initial_metadata.metadata,
|
2852
|
+
op.data.send_initial_metadata.count,
|
2853
|
+
send_initial_metadata_.get());
|
2854
|
+
PrepareOutgoingInitialMetadata(op, *send_initial_metadata_);
|
2855
|
+
if (send_deadline() != Timestamp::InfFuture()) {
|
2856
|
+
send_initial_metadata_->Set(GrpcTimeoutMetadata(), send_deadline());
|
2888
2857
|
}
|
2858
|
+
send_initial_metadata_->Set(
|
2859
|
+
WaitForReady(),
|
2860
|
+
WaitForReady::ValueType{
|
2861
|
+
(op.flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
|
2862
|
+
(op.flags &
|
2863
|
+
GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
|
2864
|
+
StartPromise(std::move(send_initial_metadata_), completion, spawner);
|
2889
2865
|
} break;
|
2890
2866
|
case GRPC_OP_RECV_INITIAL_METADATA: {
|
2891
|
-
|
2892
|
-
op.data.recv_initial_metadata.recv_initial_metadata
|
2893
|
-
|
2894
|
-
server_initial_metadata_.receiver.Next());
|
2895
|
-
recv_initial_metadata_completion_ =
|
2896
|
-
AddOpToCompletion(completion, PendingOp::kReceiveInitialMetadata);
|
2867
|
+
StartRecvInitialMetadata(
|
2868
|
+
op.data.recv_initial_metadata.recv_initial_metadata, completion,
|
2869
|
+
spawner);
|
2897
2870
|
} break;
|
2898
2871
|
case GRPC_OP_RECV_STATUS_ON_CLIENT: {
|
2899
|
-
|
2900
|
-
|
2901
|
-
if (auto* finished_metadata =
|
2902
|
-
absl::get_if<ServerMetadataHandle>(&recv_status_on_client_)) {
|
2903
|
-
PublishStatus(op.data.recv_status_on_client,
|
2904
|
-
std::move(*finished_metadata));
|
2905
|
-
} else {
|
2906
|
-
recv_status_on_client_ = op.data.recv_status_on_client;
|
2907
|
-
}
|
2872
|
+
StartRecvStatusOnClient(completion, op.data.recv_status_on_client,
|
2873
|
+
spawner);
|
2908
2874
|
} break;
|
2909
2875
|
case GRPC_OP_SEND_MESSAGE:
|
2910
|
-
StartSendMessage(op, completion, &client_to_server_messages_.sender
|
2876
|
+
StartSendMessage(op, completion, &client_to_server_messages_.sender,
|
2877
|
+
spawner);
|
2911
2878
|
break;
|
2912
2879
|
case GRPC_OP_RECV_MESSAGE:
|
2913
|
-
StartRecvMessage(
|
2880
|
+
StartRecvMessage(
|
2881
|
+
op, completion,
|
2882
|
+
[this]() {
|
2883
|
+
return server_initial_metadata_.receiver.AwaitClosed();
|
2884
|
+
},
|
2885
|
+
&server_to_client_messages_.receiver, false, spawner);
|
2914
2886
|
break;
|
2915
2887
|
case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
|
2916
|
-
|
2917
|
-
|
2918
|
-
|
2888
|
+
spawner.Spawn(
|
2889
|
+
"send_close_from_client",
|
2890
|
+
[this]() {
|
2891
|
+
client_to_server_messages_.sender.Close();
|
2892
|
+
return Empty{};
|
2893
|
+
},
|
2894
|
+
[this,
|
2895
|
+
completion = AddOpToCompletion(
|
2896
|
+
completion, PendingOp::kSendCloseFromClient)](Empty) mutable {
|
2897
|
+
FinishOpOnCompletion(&completion,
|
2898
|
+
PendingOp::kSendCloseFromClient);
|
2899
|
+
});
|
2919
2900
|
break;
|
2920
2901
|
case GRPC_OP_SEND_STATUS_FROM_SERVER:
|
2921
2902
|
case GRPC_OP_RECV_CLOSE_ON_SERVER:
|
@@ -2928,8 +2909,6 @@ grpc_call_error ClientPromiseBasedCall::StartBatch(const grpc_op* ops,
|
|
2928
2909
|
size_t nops,
|
2929
2910
|
void* notify_tag,
|
2930
2911
|
bool is_notify_tag_closure) {
|
2931
|
-
MutexLock lock(mu());
|
2932
|
-
ScopedContext activity_context(this);
|
2933
2912
|
if (nops == 0) {
|
2934
2913
|
EndOpImmediately(cq(), notify_tag, is_notify_tag_closure);
|
2935
2914
|
return GRPC_CALL_OK;
|
@@ -2941,69 +2920,36 @@ grpc_call_error ClientPromiseBasedCall::StartBatch(const grpc_op* ops,
|
|
2941
2920
|
Completion completion =
|
2942
2921
|
StartCompletion(notify_tag, is_notify_tag_closure, ops);
|
2943
2922
|
CommitBatch(ops, nops, completion);
|
2944
|
-
Update();
|
2945
2923
|
FinishOpOnCompletion(&completion, PendingOp::kStartingBatch);
|
2946
2924
|
return GRPC_CALL_OK;
|
2947
2925
|
}
|
2948
2926
|
|
2949
|
-
void ClientPromiseBasedCall::
|
2950
|
-
|
2951
|
-
|
2952
|
-
|
2953
|
-
|
2954
|
-
|
2955
|
-
|
2956
|
-
|
2957
|
-
|
2958
|
-
|
2959
|
-
|
2960
|
-
|
2961
|
-
|
2962
|
-
|
2963
|
-
|
2964
|
-
|
2965
|
-
|
2966
|
-
|
2967
|
-
|
2968
|
-
|
2969
|
-
|
2970
|
-
|
2971
|
-
|
2972
|
-
|
2973
|
-
(
|
2974
|
-
|
2975
|
-
PublishInitialMetadata(server_initial_metadata->value().get());
|
2976
|
-
} else if (completed()) {
|
2977
|
-
ServerMetadata no_metadata{GetContext<Arena>()};
|
2978
|
-
PublishInitialMetadata(&no_metadata);
|
2979
|
-
}
|
2980
|
-
}
|
2981
|
-
if (!PollSendMessage()) {
|
2982
|
-
Finish(ServerMetadataFromStatus(absl::Status(
|
2983
|
-
absl::StatusCode::kInternal, "Failed to send message to server")));
|
2984
|
-
}
|
2985
|
-
if (!is_sending() && close_send_completion_.has_value()) {
|
2986
|
-
client_to_server_messages_.sender.Close();
|
2987
|
-
FinishOpOnCompletion(&close_send_completion_,
|
2988
|
-
PendingOp::kSendCloseFromClient);
|
2989
|
-
}
|
2990
|
-
if (promise_.has_value()) {
|
2991
|
-
Poll<ServerMetadataHandle> r = promise_();
|
2992
|
-
if (grpc_call_trace.enabled()) {
|
2993
|
-
gpr_log(GPR_INFO, "%s[call] UpdateOnce: promise returns %s",
|
2994
|
-
DebugTag().c_str(),
|
2995
|
-
PollToString(r, [](const ServerMetadataHandle& h) {
|
2996
|
-
return h->DebugString();
|
2997
|
-
}).c_str());
|
2998
|
-
}
|
2999
|
-
if (auto* result = r.value_if_ready()) {
|
3000
|
-
AcceptTransportStatsFromContext();
|
3001
|
-
Finish(std::move(*result));
|
3002
|
-
}
|
3003
|
-
}
|
3004
|
-
if (incoming_compression_algorithm_.has_value()) {
|
3005
|
-
PollRecvMessage(*incoming_compression_algorithm_);
|
3006
|
-
}
|
2927
|
+
void ClientPromiseBasedCall::StartRecvInitialMetadata(
|
2928
|
+
grpc_metadata_array* array, const Completion& completion,
|
2929
|
+
Party::BulkSpawner& spawner) {
|
2930
|
+
spawner.Spawn(
|
2931
|
+
"recv_initial_metadata",
|
2932
|
+
Race(server_initial_metadata_.receiver.Next(),
|
2933
|
+
Map(finished(),
|
2934
|
+
[](Empty) { return NextResult<ServerMetadataHandle>(true); })),
|
2935
|
+
[this, array,
|
2936
|
+
completion =
|
2937
|
+
AddOpToCompletion(completion, PendingOp::kReceiveInitialMetadata)](
|
2938
|
+
NextResult<ServerMetadataHandle> next_metadata) mutable {
|
2939
|
+
server_initial_metadata_.sender.Close();
|
2940
|
+
ServerMetadataHandle metadata;
|
2941
|
+
if (next_metadata.has_value()) {
|
2942
|
+
is_trailers_only_ = false;
|
2943
|
+
metadata = std::move(next_metadata.value());
|
2944
|
+
} else {
|
2945
|
+
is_trailers_only_ = true;
|
2946
|
+
metadata = arena()->MakePooled<ServerMetadata>(arena());
|
2947
|
+
}
|
2948
|
+
ProcessIncomingInitialMetadata(*metadata);
|
2949
|
+
PublishMetadataArray(metadata.get(), array);
|
2950
|
+
recv_initial_metadata_ = std::move(metadata);
|
2951
|
+
FinishOpOnCompletion(&completion, PendingOp::kReceiveInitialMetadata);
|
2952
|
+
});
|
3007
2953
|
}
|
3008
2954
|
|
3009
2955
|
void ClientPromiseBasedCall::Finish(ServerMetadataHandle trailing_metadata) {
|
@@ -3011,31 +2957,9 @@ void ClientPromiseBasedCall::Finish(ServerMetadataHandle trailing_metadata) {
|
|
3011
2957
|
gpr_log(GPR_INFO, "%s[call] Finish: %s", DebugTag().c_str(),
|
3012
2958
|
trailing_metadata->DebugString().c_str());
|
3013
2959
|
}
|
3014
|
-
promise_ = ArenaPromise<ServerMetadataHandle>();
|
3015
2960
|
ResetDeadline();
|
3016
2961
|
set_completed();
|
3017
|
-
|
3018
|
-
ForceImmediateRepoll();
|
3019
|
-
}
|
3020
|
-
const bool pending_initial_metadata =
|
3021
|
-
server_initial_metadata_ready_.has_value();
|
3022
|
-
if (!pending_initial_metadata) {
|
3023
|
-
server_initial_metadata_ready_.emplace(
|
3024
|
-
server_initial_metadata_.receiver.Next());
|
3025
|
-
}
|
3026
|
-
Poll<NextResult<ServerMetadataHandle>> r =
|
3027
|
-
(*server_initial_metadata_ready_)();
|
3028
|
-
server_initial_metadata_ready_.reset();
|
3029
|
-
if (auto* result = r.value_if_ready()) {
|
3030
|
-
if (pending_initial_metadata) PublishInitialMetadata(result->value().get());
|
3031
|
-
is_trailers_only_ = false;
|
3032
|
-
} else {
|
3033
|
-
if (pending_initial_metadata) {
|
3034
|
-
ServerMetadata no_metadata{GetContext<Arena>()};
|
3035
|
-
PublishInitialMetadata(&no_metadata);
|
3036
|
-
}
|
3037
|
-
is_trailers_only_ = true;
|
3038
|
-
}
|
2962
|
+
client_to_server_messages_.sender.Close();
|
3039
2963
|
if (auto* channelz_channel = channel()->channelz_node()) {
|
3040
2964
|
if (trailing_metadata->get(GrpcStatusMetadata())
|
3041
2965
|
.value_or(GRPC_STATUS_UNKNOWN) == GRPC_STATUS_OK) {
|
@@ -3044,13 +2968,7 @@ void ClientPromiseBasedCall::Finish(ServerMetadataHandle trailing_metadata) {
|
|
3044
2968
|
channelz_channel->RecordCallFailed();
|
3045
2969
|
}
|
3046
2970
|
}
|
3047
|
-
|
3048
|
-
absl::get_if<grpc_op::grpc_op_data::grpc_op_recv_status_on_client>(
|
3049
|
-
&recv_status_on_client_)) {
|
3050
|
-
PublishStatus(*status_request, std::move(trailing_metadata));
|
3051
|
-
} else {
|
3052
|
-
recv_status_on_client_ = std::move(trailing_metadata);
|
3053
|
-
}
|
2971
|
+
server_trailing_metadata_.Set(std::move(trailing_metadata));
|
3054
2972
|
}
|
3055
2973
|
|
3056
2974
|
namespace {
|
@@ -3076,35 +2994,44 @@ std::string MakeErrorString(const ServerMetadata* trailing_metadata) {
|
|
3076
2994
|
}
|
3077
2995
|
} // namespace
|
3078
2996
|
|
3079
|
-
void ClientPromiseBasedCall::
|
2997
|
+
void ClientPromiseBasedCall::StartRecvStatusOnClient(
|
2998
|
+
const Completion& completion,
|
3080
2999
|
grpc_op::grpc_op_data::grpc_op_recv_status_on_client op_args,
|
3081
|
-
|
3082
|
-
|
3083
|
-
|
3084
|
-
|
3085
|
-
|
3086
|
-
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3091
|
-
|
3092
|
-
|
3093
|
-
|
3094
|
-
|
3095
|
-
|
3096
|
-
|
3097
|
-
|
3098
|
-
|
3099
|
-
|
3100
|
-
|
3101
|
-
|
3102
|
-
|
3103
|
-
|
3104
|
-
|
3105
|
-
|
3106
|
-
|
3107
|
-
|
3000
|
+
Party::BulkSpawner& spawner) {
|
3001
|
+
ForceCompletionSuccess(completion);
|
3002
|
+
spawner.Spawn(
|
3003
|
+
"recv_status_on_client", server_trailing_metadata_.Wait(),
|
3004
|
+
[this, op_args,
|
3005
|
+
completion =
|
3006
|
+
AddOpToCompletion(completion, PendingOp::kReceiveStatusOnClient)](
|
3007
|
+
ServerMetadataHandle trailing_metadata) mutable {
|
3008
|
+
const grpc_status_code status =
|
3009
|
+
trailing_metadata->get(GrpcStatusMetadata())
|
3010
|
+
.value_or(GRPC_STATUS_UNKNOWN);
|
3011
|
+
*op_args.status = status;
|
3012
|
+
absl::string_view message_string;
|
3013
|
+
if (Slice* message =
|
3014
|
+
trailing_metadata->get_pointer(GrpcMessageMetadata())) {
|
3015
|
+
message_string = message->as_string_view();
|
3016
|
+
*op_args.status_details = message->Ref().TakeCSlice();
|
3017
|
+
} else {
|
3018
|
+
*op_args.status_details = grpc_empty_slice();
|
3019
|
+
}
|
3020
|
+
if (message_string.empty()) {
|
3021
|
+
RunFinalization(status, nullptr);
|
3022
|
+
} else {
|
3023
|
+
std::string error_string(message_string);
|
3024
|
+
RunFinalization(status, error_string.c_str());
|
3025
|
+
}
|
3026
|
+
if (op_args.error_string != nullptr && status != GRPC_STATUS_OK) {
|
3027
|
+
*op_args.error_string =
|
3028
|
+
gpr_strdup(MakeErrorString(trailing_metadata.get()).c_str());
|
3029
|
+
}
|
3030
|
+
PublishMetadataArray(trailing_metadata.get(),
|
3031
|
+
op_args.trailing_metadata);
|
3032
|
+
recv_trailing_metadata_ = std::move(trailing_metadata);
|
3033
|
+
FinishOpOnCompletion(&completion, PendingOp::kReceiveStatusOnClient);
|
3034
|
+
});
|
3108
3035
|
}
|
3109
3036
|
#endif
|
3110
3037
|
|
@@ -3117,19 +3044,22 @@ class ServerPromiseBasedCall final : public PromiseBasedCall {
|
|
3117
3044
|
public:
|
3118
3045
|
ServerPromiseBasedCall(Arena* arena, grpc_call_create_args* args);
|
3119
3046
|
|
3120
|
-
void
|
3121
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
3047
|
+
void CancelWithError(grpc_error_handle) override;
|
3122
3048
|
grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
|
3123
3049
|
bool is_notify_tag_closure) override;
|
3124
|
-
bool failed_before_recv_message() const override { abort(); }
|
3125
3050
|
bool is_trailers_only() const override { abort(); }
|
3126
|
-
absl::string_view GetServerAuthority() const override {
|
3051
|
+
absl::string_view GetServerAuthority() const override {
|
3052
|
+
const Slice* authority_metadata =
|
3053
|
+
client_initial_metadata_->get_pointer(HttpAuthorityMetadata());
|
3054
|
+
if (authority_metadata == nullptr) return "";
|
3055
|
+
return authority_metadata->as_string_view();
|
3056
|
+
}
|
3127
3057
|
|
3128
3058
|
// Polling order for the server promise stack:
|
3129
3059
|
//
|
3130
3060
|
// │ ┌───────────────────────────────────────┐
|
3131
|
-
// │ │ ServerPromiseBasedCall
|
3132
|
-
// │ ├───────────────────────────────────────┤
|
3061
|
+
// │ │ ServerPromiseBasedCall ├──► Lifetime management
|
3062
|
+
// │ ├───────────────────────────────────────┤
|
3133
3063
|
// │ │ ConnectedChannel ├─┐
|
3134
3064
|
// │ ├───────────────────────────────────────┤ └► Interactions with the
|
3135
3065
|
// │ │ ... closest to transport filter │ transport - send/recv msgs
|
@@ -3140,16 +3070,12 @@ class ServerPromiseBasedCall final : public PromiseBasedCall {
|
|
3140
3070
|
// │ ├───────────────────────────────────────┤ │ setup, publishing call to
|
3141
3071
|
// │ │ Server::ChannelData::MakeCallPromise ├─┘ application
|
3142
3072
|
// │ ├───────────────────────────────────────┤
|
3143
|
-
// │ │
|
3144
|
-
// ▼ └───────────────────────────────────────┘
|
3145
|
-
// Polling &
|
3073
|
+
// │ │ MakeTopOfServerCallPromise ├──► Send trailing metadata
|
3074
|
+
// ▼ └───────────────────────────────────────┘
|
3075
|
+
// Polling &
|
3146
3076
|
// instantiation
|
3147
3077
|
// order
|
3148
3078
|
|
3149
|
-
void UpdateOnce() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu()) override;
|
3150
|
-
Poll<ServerMetadataHandle> PollTopOfCall()
|
3151
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu());
|
3152
|
-
|
3153
3079
|
std::string DebugTag() const override {
|
3154
3080
|
return absl::StrFormat("SERVER_CALL[%p]: ", this);
|
3155
3081
|
}
|
@@ -3159,44 +3085,64 @@ class ServerPromiseBasedCall final : public PromiseBasedCall {
|
|
3159
3085
|
private:
|
3160
3086
|
class RecvCloseOpCancelState {
|
3161
3087
|
public:
|
3162
|
-
// Request that receiver be filled in per
|
3163
|
-
// Returns true if the request can
|
3164
|
-
// Returns false if the request will be
|
3088
|
+
// Request that receiver be filled in per
|
3089
|
+
// grpc_op_recv_close_on_server. Returns true if the request can
|
3090
|
+
// be fulfilled immediately. Returns false if the request will be
|
3091
|
+
// fulfilled later.
|
3165
3092
|
bool ReceiveCloseOnServerOpStarted(int* receiver) {
|
3166
|
-
|
3167
|
-
|
3168
|
-
|
3169
|
-
|
3170
|
-
|
3171
|
-
|
3172
|
-
|
3173
|
-
|
3174
|
-
|
3175
|
-
|
3176
|
-
|
3177
|
-
|
3178
|
-
|
3093
|
+
uintptr_t state = state_.load(std::memory_order_acquire);
|
3094
|
+
uintptr_t new_state;
|
3095
|
+
do {
|
3096
|
+
switch (state) {
|
3097
|
+
case kUnset:
|
3098
|
+
new_state = reinterpret_cast<uintptr_t>(receiver);
|
3099
|
+
break;
|
3100
|
+
case kFinishedWithFailure:
|
3101
|
+
*receiver = 1;
|
3102
|
+
return true;
|
3103
|
+
case kFinishedWithSuccess:
|
3104
|
+
*receiver = 0;
|
3105
|
+
return true;
|
3106
|
+
default:
|
3107
|
+
Crash("Two threads offered ReceiveCloseOnServerOpStarted");
|
3108
|
+
}
|
3109
|
+
} while (!state_.compare_exchange_weak(state, new_state,
|
3110
|
+
std::memory_order_acq_rel,
|
3111
|
+
std::memory_order_acquire));
|
3112
|
+
return false;
|
3179
3113
|
}
|
3180
3114
|
|
3181
3115
|
// Mark the call as having completed.
|
3182
|
-
// Returns true if this finishes a previous
|
3183
|
-
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
|
3190
|
-
|
3191
|
-
|
3192
|
-
|
3193
|
-
|
3194
|
-
|
3195
|
-
|
3116
|
+
// Returns true if this finishes a previous
|
3117
|
+
// RequestReceiveCloseOnServer.
|
3118
|
+
bool CompleteCallWithCancelledSetTo(bool cancelled) {
|
3119
|
+
uintptr_t state = state_.load(std::memory_order_acquire);
|
3120
|
+
uintptr_t new_state;
|
3121
|
+
bool r;
|
3122
|
+
do {
|
3123
|
+
switch (state) {
|
3124
|
+
case kUnset:
|
3125
|
+
new_state = cancelled ? kFinishedWithFailure : kFinishedWithSuccess;
|
3126
|
+
r = false;
|
3127
|
+
break;
|
3128
|
+
case kFinishedWithFailure:
|
3129
|
+
return false;
|
3130
|
+
case kFinishedWithSuccess:
|
3131
|
+
Crash("unreachable");
|
3132
|
+
default:
|
3133
|
+
new_state = cancelled ? kFinishedWithFailure : kFinishedWithSuccess;
|
3134
|
+
r = true;
|
3135
|
+
}
|
3136
|
+
} while (!state_.compare_exchange_weak(state, new_state,
|
3137
|
+
std::memory_order_acq_rel,
|
3138
|
+
std::memory_order_acquire));
|
3139
|
+
if (r) *reinterpret_cast<int*>(state) = cancelled ? 1 : 0;
|
3140
|
+
return r;
|
3196
3141
|
}
|
3197
3142
|
|
3198
3143
|
std::string ToString() const {
|
3199
|
-
|
3144
|
+
auto state = state_.load(std::memory_order_relaxed);
|
3145
|
+
switch (state) {
|
3200
3146
|
case kUnset:
|
3201
3147
|
return "Unset";
|
3202
3148
|
case kFinishedWithFailure:
|
@@ -3205,7 +3151,7 @@ class ServerPromiseBasedCall final : public PromiseBasedCall {
|
|
3205
3151
|
return "FinishedWithSuccess";
|
3206
3152
|
default:
|
3207
3153
|
return absl::StrFormat("WaitingForReceiver(%p)",
|
3208
|
-
reinterpret_cast<void*>(
|
3154
|
+
reinterpret_cast<void*>(state));
|
3209
3155
|
}
|
3210
3156
|
}
|
3211
3157
|
|
@@ -3213,37 +3159,28 @@ class ServerPromiseBasedCall final : public PromiseBasedCall {
|
|
3213
3159
|
static constexpr uintptr_t kUnset = 0;
|
3214
3160
|
static constexpr uintptr_t kFinishedWithFailure = 1;
|
3215
3161
|
static constexpr uintptr_t kFinishedWithSuccess = 2;
|
3216
|
-
// Holds one of kUnset, kFinishedWithFailure, or
|
3217
|
-
// OR an int* that wants to receive the
|
3218
|
-
|
3162
|
+
// Holds one of kUnset, kFinishedWithFailure, or
|
3163
|
+
// kFinishedWithSuccess OR an int* that wants to receive the
|
3164
|
+
// final status.
|
3165
|
+
std::atomic<uintptr_t> state_{kUnset};
|
3219
3166
|
};
|
3220
3167
|
|
3221
3168
|
grpc_call_error ValidateBatch(const grpc_op* ops, size_t nops) const;
|
3222
3169
|
void CommitBatch(const grpc_op* ops, size_t nops,
|
3223
|
-
const Completion& completion)
|
3224
|
-
|
3170
|
+
const Completion& completion);
|
3171
|
+
void Finish(ServerMetadataHandle result);
|
3225
3172
|
|
3226
3173
|
friend class ServerCallContext;
|
3227
3174
|
ServerCallContext call_context_;
|
3228
3175
|
Server* const server_;
|
3229
|
-
|
3230
|
-
PipeSender<MessageHandle>* server_to_client_messages_
|
3231
|
-
|
3232
|
-
|
3233
|
-
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3237
|
-
SendInitialMetadataState send_initial_metadata_state_ ABSL_GUARDED_BY(mu()) =
|
3238
|
-
absl::monostate{};
|
3239
|
-
ServerMetadataHandle send_trailing_metadata_ ABSL_GUARDED_BY(mu());
|
3240
|
-
grpc_compression_algorithm incoming_compression_algorithm_
|
3241
|
-
ABSL_GUARDED_BY(mu());
|
3242
|
-
RecvCloseOpCancelState recv_close_op_cancel_state_ ABSL_GUARDED_BY(mu());
|
3243
|
-
Completion recv_close_completion_ ABSL_GUARDED_BY(mu());
|
3244
|
-
bool cancel_send_and_receive_ ABSL_GUARDED_BY(mu()) = false;
|
3245
|
-
Completion send_status_from_server_completion_ ABSL_GUARDED_BY(mu());
|
3246
|
-
ClientMetadataHandle client_initial_metadata_ ABSL_GUARDED_BY(mu());
|
3176
|
+
PipeSender<ServerMetadataHandle>* server_initial_metadata_ = nullptr;
|
3177
|
+
PipeSender<MessageHandle>* server_to_client_messages_ = nullptr;
|
3178
|
+
PipeReceiver<MessageHandle>* client_to_server_messages_ = nullptr;
|
3179
|
+
Latch<ServerMetadataHandle> send_trailing_metadata_;
|
3180
|
+
RecvCloseOpCancelState recv_close_op_cancel_state_;
|
3181
|
+
ClientMetadataHandle client_initial_metadata_;
|
3182
|
+
Completion recv_close_completion_;
|
3183
|
+
std::atomic<bool> cancelled_{false};
|
3247
3184
|
};
|
3248
3185
|
|
3249
3186
|
ServerPromiseBasedCall::ServerPromiseBasedCall(Arena* arena,
|
@@ -3256,106 +3193,72 @@ ServerPromiseBasedCall::ServerPromiseBasedCall(Arena* arena,
|
|
3256
3193
|
if (channelz_node != nullptr) {
|
3257
3194
|
channelz_node->RecordCallStarted();
|
3258
3195
|
}
|
3259
|
-
|
3196
|
+
// TODO(yashykt): In the future, we want to also enable stats and trace
|
3197
|
+
// collecting from when the call is created at the transport. The idea is that
|
3198
|
+
// the transport would create the call tracer and pass it in as part of the
|
3199
|
+
// metadata.
|
3200
|
+
auto* server_call_tracer_factory =
|
3201
|
+
ServerCallTracerFactory::Get(args->server->channel_args());
|
3202
|
+
if (server_call_tracer_factory != nullptr) {
|
3203
|
+
auto* server_call_tracer =
|
3204
|
+
server_call_tracer_factory->CreateNewServerCallTracer(arena);
|
3205
|
+
if (server_call_tracer != nullptr) {
|
3206
|
+
// Note that we are setting both
|
3207
|
+
// GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE and
|
3208
|
+
// GRPC_CONTEXT_CALL_TRACER as a matter of convenience. In the future
|
3209
|
+
// promise-based world, we would just a single tracer object for each
|
3210
|
+
// stack (call, subchannel_call, server_call.)
|
3211
|
+
ContextSet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE,
|
3212
|
+
server_call_tracer, nullptr);
|
3213
|
+
ContextSet(GRPC_CONTEXT_CALL_TRACER, server_call_tracer, nullptr);
|
3214
|
+
}
|
3215
|
+
}
|
3260
3216
|
ScopedContext activity_context(this);
|
3261
|
-
|
3262
|
-
|
3217
|
+
Spawn("server_promise",
|
3218
|
+
channel()->channel_stack()->MakeServerCallPromise(
|
3219
|
+
CallArgs{nullptr, ClientInitialMetadataOutstandingToken::Empty(),
|
3220
|
+
nullptr, nullptr, nullptr, nullptr}),
|
3221
|
+
[this](ServerMetadataHandle result) { Finish(std::move(result)); });
|
3263
3222
|
}
|
3264
3223
|
|
3265
|
-
|
3224
|
+
void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
|
3266
3225
|
if (grpc_call_trace.enabled()) {
|
3267
|
-
gpr_log(GPR_INFO, "%s[call]
|
3268
|
-
|
3269
|
-
|
3270
|
-
? absl::StrCat("send-metadata:",
|
3271
|
-
send_trailing_metadata_->DebugString(), " ")
|
3272
|
-
.c_str()
|
3273
|
-
: " ",
|
3274
|
-
PollStateDebugString().c_str());
|
3226
|
+
gpr_log(GPR_INFO, "%s[call] Finish: recv_close_state:%s result:%s",
|
3227
|
+
DebugTag().c_str(), recv_close_op_cancel_state_.ToString().c_str(),
|
3228
|
+
result->DebugString().c_str());
|
3275
3229
|
}
|
3276
|
-
|
3277
|
-
|
3278
|
-
|
3279
|
-
|
3230
|
+
const auto status =
|
3231
|
+
result->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
3232
|
+
channelz::ServerNode* channelz_node = server_->channelz_node();
|
3233
|
+
if (channelz_node != nullptr) {
|
3234
|
+
if (status == GRPC_STATUS_OK) {
|
3235
|
+
channelz_node->RecordCallSucceeded();
|
3236
|
+
} else {
|
3237
|
+
channelz_node->RecordCallFailed();
|
3238
|
+
}
|
3280
3239
|
}
|
3281
|
-
|
3282
|
-
|
3283
|
-
|
3284
|
-
|
3285
|
-
if (!is_sending() && send_trailing_metadata_ != nullptr) {
|
3286
|
-
server_to_client_messages_->Close();
|
3287
|
-
return std::move(send_trailing_metadata_);
|
3240
|
+
if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
|
3241
|
+
result->get(GrpcCallWasCancelled()).value_or(true))) {
|
3242
|
+
FinishOpOnCompletion(&recv_close_completion_,
|
3243
|
+
PendingOp::kReceiveCloseOnServer);
|
3288
3244
|
}
|
3289
|
-
|
3290
|
-
|
3291
|
-
}
|
3292
|
-
|
3293
|
-
void ServerPromiseBasedCall::UpdateOnce() {
|
3294
|
-
if (grpc_call_trace.enabled()) {
|
3295
|
-
gpr_log(
|
3296
|
-
GPR_INFO, "%s[call] UpdateOnce: recv_close:%s%s %s%shas_promise=%s",
|
3297
|
-
DebugTag().c_str(), recv_close_op_cancel_state_.ToString().c_str(),
|
3298
|
-
recv_close_completion_.has_value()
|
3299
|
-
? absl::StrCat(":", CompletionString(recv_close_completion_))
|
3300
|
-
.c_str()
|
3301
|
-
: "",
|
3302
|
-
send_status_from_server_completion_.has_value()
|
3303
|
-
? absl::StrCat(
|
3304
|
-
"send_status:",
|
3305
|
-
CompletionString(send_status_from_server_completion_), " ")
|
3306
|
-
.c_str()
|
3307
|
-
: "",
|
3308
|
-
PollStateDebugString().c_str(),
|
3309
|
-
promise_.has_value() ? "true" : "false");
|
3310
|
-
}
|
3311
|
-
if (auto* p =
|
3312
|
-
absl::get_if<typename PipeSender<ServerMetadataHandle>::PushType>(
|
3313
|
-
&send_initial_metadata_state_)) {
|
3314
|
-
if ((*p)().ready()) {
|
3315
|
-
send_initial_metadata_state_ = absl::monostate{};
|
3316
|
-
}
|
3245
|
+
if (server_initial_metadata_ != nullptr) {
|
3246
|
+
server_initial_metadata_->Close();
|
3317
3247
|
}
|
3318
|
-
|
3319
|
-
|
3320
|
-
|
3321
|
-
|
3322
|
-
|
3323
|
-
|
3324
|
-
|
3325
|
-
|
3326
|
-
|
3327
|
-
|
3328
|
-
if (grpc_call_trace.enabled()) {
|
3329
|
-
gpr_log(GPR_INFO, "%s[call] UpdateOnce: GotResult %s result:%s",
|
3330
|
-
DebugTag().c_str(),
|
3331
|
-
recv_close_op_cancel_state_.ToString().c_str(),
|
3332
|
-
(*result)->DebugString().c_str());
|
3333
|
-
}
|
3334
|
-
if (recv_close_op_cancel_state_.CompleteCall(
|
3335
|
-
(*result)->get(GrpcStatusFromWire()).value_or(false))) {
|
3336
|
-
FinishOpOnCompletion(&recv_close_completion_,
|
3337
|
-
PendingOp::kReceiveCloseOnServer);
|
3338
|
-
}
|
3339
|
-
channelz::ServerNode* channelz_node = server_->channelz_node();
|
3340
|
-
if (channelz_node != nullptr) {
|
3341
|
-
if ((*result)
|
3342
|
-
->get(GrpcStatusMetadata())
|
3343
|
-
.value_or(GRPC_STATUS_UNKNOWN) == GRPC_STATUS_OK) {
|
3344
|
-
channelz_node->RecordCallSucceeded();
|
3345
|
-
} else {
|
3346
|
-
channelz_node->RecordCallFailed();
|
3347
|
-
}
|
3348
|
-
}
|
3349
|
-
if (send_status_from_server_completion_.has_value()) {
|
3350
|
-
FinishOpOnCompletion(&send_status_from_server_completion_,
|
3351
|
-
PendingOp::kSendStatusFromServer);
|
3352
|
-
}
|
3353
|
-
CancelSendMessage();
|
3354
|
-
CancelRecvMessage();
|
3355
|
-
set_completed();
|
3356
|
-
promise_ = ArenaPromise<ServerMetadataHandle>();
|
3357
|
-
}
|
3248
|
+
absl::string_view message_string;
|
3249
|
+
if (Slice* message = result->get_pointer(GrpcMessageMetadata())) {
|
3250
|
+
message_string = message->as_string_view();
|
3251
|
+
}
|
3252
|
+
AcceptTransportStatsFromContext();
|
3253
|
+
if (message_string.empty()) {
|
3254
|
+
RunFinalization(status, nullptr);
|
3255
|
+
} else {
|
3256
|
+
std::string error_string(message_string);
|
3257
|
+
RunFinalization(status, error_string.c_str());
|
3358
3258
|
}
|
3259
|
+
set_completed();
|
3260
|
+
ResetDeadline();
|
3261
|
+
PropagateCancellationToChildren();
|
3359
3262
|
}
|
3360
3263
|
|
3361
3264
|
grpc_call_error ServerPromiseBasedCall::ValidateBatch(const grpc_op* ops,
|
@@ -3396,56 +3299,97 @@ grpc_call_error ServerPromiseBasedCall::ValidateBatch(const grpc_op* ops,
|
|
3396
3299
|
|
3397
3300
|
void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
|
3398
3301
|
const Completion& completion) {
|
3302
|
+
Party::BulkSpawner spawner(this);
|
3399
3303
|
for (size_t op_idx = 0; op_idx < nops; op_idx++) {
|
3400
3304
|
const grpc_op& op = ops[op_idx];
|
3401
3305
|
switch (op.op) {
|
3402
3306
|
case GRPC_OP_SEND_INITIAL_METADATA: {
|
3403
|
-
|
3404
|
-
|
3405
|
-
|
3406
|
-
|
3407
|
-
|
3408
|
-
|
3409
|
-
|
3410
|
-
if (grpc_call_trace.enabled()) {
|
3411
|
-
gpr_log(GPR_INFO, "%s[call] Send initial metadata",
|
3412
|
-
DebugTag().c_str());
|
3413
|
-
}
|
3414
|
-
auto* pipe = absl::get<PipeSender<ServerMetadataHandle>*>(
|
3415
|
-
send_initial_metadata_state_);
|
3416
|
-
send_initial_metadata_state_ = pipe->Push(std::move(metadata));
|
3307
|
+
auto metadata = arena()->MakePooled<ServerMetadata>(arena());
|
3308
|
+
PrepareOutgoingInitialMetadata(op, *metadata);
|
3309
|
+
CToMetadata(op.data.send_initial_metadata.metadata,
|
3310
|
+
op.data.send_initial_metadata.count, metadata.get());
|
3311
|
+
if (grpc_call_trace.enabled()) {
|
3312
|
+
gpr_log(GPR_INFO, "%s[call] Send initial metadata",
|
3313
|
+
DebugTag().c_str());
|
3417
3314
|
}
|
3315
|
+
QueueSend();
|
3316
|
+
spawner.Spawn(
|
3317
|
+
"call_send_initial_metadata",
|
3318
|
+
[this, metadata = std::move(metadata)]() mutable {
|
3319
|
+
EnactSend();
|
3320
|
+
return server_initial_metadata_->Push(std::move(metadata));
|
3321
|
+
},
|
3322
|
+
[this,
|
3323
|
+
completion = AddOpToCompletion(
|
3324
|
+
completion, PendingOp::kSendInitialMetadata)](bool r) mutable {
|
3325
|
+
if (!r) FailCompletion(completion);
|
3326
|
+
FinishOpOnCompletion(&completion,
|
3327
|
+
PendingOp::kSendInitialMetadata);
|
3328
|
+
});
|
3418
3329
|
} break;
|
3419
3330
|
case GRPC_OP_SEND_MESSAGE:
|
3420
|
-
StartSendMessage(op, completion, server_to_client_messages_);
|
3331
|
+
StartSendMessage(op, completion, server_to_client_messages_, spawner);
|
3421
3332
|
break;
|
3422
3333
|
case GRPC_OP_RECV_MESSAGE:
|
3423
|
-
|
3334
|
+
if (cancelled_.load(std::memory_order_relaxed)) {
|
3335
|
+
FailCompletion(completion);
|
3336
|
+
break;
|
3337
|
+
}
|
3338
|
+
StartRecvMessage(
|
3339
|
+
op, completion, []() { return []() { return Empty{}; }; },
|
3340
|
+
client_to_server_messages_, true, spawner);
|
3424
3341
|
break;
|
3425
|
-
case GRPC_OP_SEND_STATUS_FROM_SERVER:
|
3426
|
-
|
3342
|
+
case GRPC_OP_SEND_STATUS_FROM_SERVER: {
|
3343
|
+
auto metadata = arena()->MakePooled<ServerMetadata>(arena());
|
3427
3344
|
CToMetadata(op.data.send_status_from_server.trailing_metadata,
|
3428
3345
|
op.data.send_status_from_server.trailing_metadata_count,
|
3429
|
-
|
3430
|
-
|
3431
|
-
|
3346
|
+
metadata.get());
|
3347
|
+
metadata->Set(GrpcStatusMetadata(),
|
3348
|
+
op.data.send_status_from_server.status);
|
3432
3349
|
if (auto* details = op.data.send_status_from_server.status_details) {
|
3433
|
-
|
3434
|
-
|
3350
|
+
// TODO(ctiller): this should not be a copy, but we have callers that
|
3351
|
+
// allocate and pass in a slice created with
|
3352
|
+
// grpc_slice_from_static_string and then delete the string after
|
3353
|
+
// passing it in, which shouldn't be a supported API.
|
3354
|
+
metadata->Set(GrpcMessageMetadata(),
|
3355
|
+
Slice(grpc_slice_copy(*details)));
|
3435
3356
|
}
|
3436
|
-
|
3437
|
-
|
3438
|
-
|
3357
|
+
spawner.Spawn(
|
3358
|
+
"call_send_status_from_server",
|
3359
|
+
[this, metadata = std::move(metadata)]() mutable {
|
3360
|
+
bool r = true;
|
3361
|
+
if (send_trailing_metadata_.is_set()) {
|
3362
|
+
r = false;
|
3363
|
+
} else {
|
3364
|
+
send_trailing_metadata_.Set(std::move(metadata));
|
3365
|
+
}
|
3366
|
+
return Map(WaitForSendingStarted(), [this, r](Empty) {
|
3367
|
+
server_initial_metadata_->Close();
|
3368
|
+
server_to_client_messages_->Close();
|
3369
|
+
return r;
|
3370
|
+
});
|
3371
|
+
},
|
3372
|
+
[this, completion = AddOpToCompletion(
|
3373
|
+
completion, PendingOp::kSendStatusFromServer)](
|
3374
|
+
bool ok) mutable {
|
3375
|
+
if (!ok) FailCompletion(completion);
|
3376
|
+
FinishOpOnCompletion(&completion,
|
3377
|
+
PendingOp::kSendStatusFromServer);
|
3378
|
+
});
|
3379
|
+
} break;
|
3439
3380
|
case GRPC_OP_RECV_CLOSE_ON_SERVER:
|
3440
3381
|
if (grpc_call_trace.enabled()) {
|
3441
3382
|
gpr_log(GPR_INFO, "%s[call] StartBatch: RecvClose %s",
|
3442
3383
|
DebugTag().c_str(),
|
3443
3384
|
recv_close_op_cancel_state_.ToString().c_str());
|
3444
3385
|
}
|
3445
|
-
|
3386
|
+
ForceCompletionSuccess(completion);
|
3387
|
+
recv_close_completion_ =
|
3388
|
+
AddOpToCompletion(completion, PendingOp::kReceiveCloseOnServer);
|
3389
|
+
if (recv_close_op_cancel_state_.ReceiveCloseOnServerOpStarted(
|
3446
3390
|
op.data.recv_close_on_server.cancelled)) {
|
3447
|
-
recv_close_completion_
|
3448
|
-
|
3391
|
+
FinishOpOnCompletion(&recv_close_completion_,
|
3392
|
+
PendingOp::kReceiveCloseOnServer);
|
3449
3393
|
}
|
3450
3394
|
break;
|
3451
3395
|
case GRPC_OP_RECV_STATUS_ON_CLIENT:
|
@@ -3460,8 +3404,6 @@ grpc_call_error ServerPromiseBasedCall::StartBatch(const grpc_op* ops,
|
|
3460
3404
|
size_t nops,
|
3461
3405
|
void* notify_tag,
|
3462
3406
|
bool is_notify_tag_closure) {
|
3463
|
-
MutexLock lock(mu());
|
3464
|
-
ScopedContext activity_context(this);
|
3465
3407
|
if (nops == 0) {
|
3466
3408
|
EndOpImmediately(cq(), notify_tag, is_notify_tag_closure);
|
3467
3409
|
return GRPC_CALL_OK;
|
@@ -3473,18 +3415,30 @@ grpc_call_error ServerPromiseBasedCall::StartBatch(const grpc_op* ops,
|
|
3473
3415
|
Completion completion =
|
3474
3416
|
StartCompletion(notify_tag, is_notify_tag_closure, ops);
|
3475
3417
|
CommitBatch(ops, nops, completion);
|
3476
|
-
Update();
|
3477
3418
|
FinishOpOnCompletion(&completion, PendingOp::kStartingBatch);
|
3478
3419
|
return GRPC_CALL_OK;
|
3479
3420
|
}
|
3480
3421
|
|
3481
|
-
void ServerPromiseBasedCall::
|
3482
|
-
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3422
|
+
void ServerPromiseBasedCall::CancelWithError(absl::Status error) {
|
3423
|
+
cancelled_.store(true, std::memory_order_relaxed);
|
3424
|
+
Spawn(
|
3425
|
+
"cancel_with_error",
|
3426
|
+
[this, error = std::move(error)]() {
|
3427
|
+
if (!send_trailing_metadata_.is_set()) {
|
3428
|
+
auto md = ServerMetadataFromStatus(error);
|
3429
|
+
md->Set(GrpcCallWasCancelled(), true);
|
3430
|
+
send_trailing_metadata_.Set(std::move(md));
|
3431
|
+
}
|
3432
|
+
if (server_to_client_messages_ != nullptr) {
|
3433
|
+
server_to_client_messages_->Close();
|
3434
|
+
}
|
3435
|
+
if (server_initial_metadata_ != nullptr) {
|
3436
|
+
server_initial_metadata_->Close();
|
3437
|
+
}
|
3438
|
+
return Empty{};
|
3439
|
+
},
|
3440
|
+
[](Empty) {});
|
3486
3441
|
}
|
3487
|
-
|
3488
3442
|
#endif
|
3489
3443
|
|
3490
3444
|
#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
|
@@ -3493,24 +3447,22 @@ ServerCallContext::MakeTopOfServerCallPromise(
|
|
3493
3447
|
CallArgs call_args, grpc_completion_queue* cq,
|
3494
3448
|
grpc_metadata_array* publish_initial_metadata,
|
3495
3449
|
absl::FunctionRef<void(grpc_call* call)> publish) {
|
3496
|
-
call_->
|
3497
|
-
|
3450
|
+
call_->SetCompletionQueue(cq);
|
3451
|
+
call_args.polling_entity->Set(
|
3452
|
+
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)));
|
3498
3453
|
call_->server_to_client_messages_ = call_args.server_to_client_messages;
|
3499
3454
|
call_->client_to_server_messages_ = call_args.client_to_server_messages;
|
3500
|
-
call_->
|
3501
|
-
call_->incoming_compression_algorithm_ =
|
3502
|
-
call_args.client_initial_metadata->get(GrpcEncodingMetadata())
|
3503
|
-
.value_or(GRPC_COMPRESS_NONE);
|
3455
|
+
call_->server_initial_metadata_ = call_args.server_initial_metadata;
|
3504
3456
|
call_->client_initial_metadata_ =
|
3505
3457
|
std::move(call_args.client_initial_metadata);
|
3458
|
+
call_->set_send_deadline(call_->deadline());
|
3459
|
+
call_->ProcessIncomingInitialMetadata(*call_->client_initial_metadata_);
|
3506
3460
|
PublishMetadataArray(call_->client_initial_metadata_.get(),
|
3507
3461
|
publish_initial_metadata);
|
3508
3462
|
call_->ExternalRef();
|
3509
3463
|
publish(call_->c_ptr());
|
3510
|
-
return
|
3511
|
-
|
3512
|
-
return call_->PollTopOfCall();
|
3513
|
-
};
|
3464
|
+
return Seq(call_->server_to_client_messages_->AwaitClosed(),
|
3465
|
+
call_->send_trailing_metadata_.Wait());
|
3514
3466
|
}
|
3515
3467
|
#else
|
3516
3468
|
ArenaPromise<ServerMetadataHandle>
|
@@ -3578,6 +3530,9 @@ grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
|
|
3578
3530
|
grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
|
3579
3531
|
GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
|
3580
3532
|
GPR_ASSERT(reserved == nullptr);
|
3533
|
+
if (call == nullptr) {
|
3534
|
+
return GRPC_CALL_ERROR;
|
3535
|
+
}
|
3581
3536
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
3582
3537
|
grpc_core::ExecCtx exec_ctx;
|
3583
3538
|
grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
|
@@ -3593,6 +3548,9 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
|
|
3593
3548
|
"c=%p, status=%d, description=%s, reserved=%p)",
|
3594
3549
|
4, (c, (int)status, description, reserved));
|
3595
3550
|
GPR_ASSERT(reserved == nullptr);
|
3551
|
+
if (c == nullptr) {
|
3552
|
+
return GRPC_CALL_ERROR;
|
3553
|
+
}
|
3596
3554
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
3597
3555
|
grpc_core::ExecCtx exec_ctx;
|
3598
3556
|
grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
|
@@ -3613,7 +3571,9 @@ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
|
3613
3571
|
}
|
3614
3572
|
|
3615
3573
|
uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
3616
|
-
return grpc_core::Call::FromC(call)
|
3574
|
+
return grpc_core::Call::FromC(call)
|
3575
|
+
->encodings_accepted_by_peer()
|
3576
|
+
.ToLegacyBitmask();
|
3617
3577
|
}
|
3618
3578
|
|
3619
3579
|
grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
|
@@ -3631,7 +3591,7 @@ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
3631
3591
|
"reserved=%p)",
|
3632
3592
|
5, (call, ops, (unsigned long)nops, tag, reserved));
|
3633
3593
|
|
3634
|
-
if (reserved != nullptr) {
|
3594
|
+
if (reserved != nullptr || call == nullptr) {
|
3635
3595
|
return GRPC_CALL_ERROR;
|
3636
3596
|
} else {
|
3637
3597
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
@@ -3662,7 +3622,9 @@ uint8_t grpc_call_is_client(grpc_call* call) {
|
|
3662
3622
|
|
3663
3623
|
grpc_compression_algorithm grpc_call_compression_for_level(
|
3664
3624
|
grpc_call* call, grpc_compression_level level) {
|
3665
|
-
return grpc_core::Call::FromC(call)
|
3625
|
+
return grpc_core::Call::FromC(call)
|
3626
|
+
->encodings_accepted_by_peer()
|
3627
|
+
.CompressionAlgorithmForLevel(level);
|
3666
3628
|
}
|
3667
3629
|
|
3668
3630
|
bool grpc_call_is_trailers_only(const grpc_call* call) {
|