grpc 1.45.0 → 1.46.3
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 +36 -29
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
- data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_bootstrap.cc +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +2 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_client.cc +87 -95
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
- data/src/core/ext/xds/xds_listener.cc +1 -1
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
- data/src/core/lib/avl/avl.h +68 -5
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +138 -59
- data/src/core/lib/channel/channel_args.h +210 -9
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
- data/src/core/lib/channel/channel_stack.h +2 -5
- data/src/core/lib/channel/channel_stack_builder.cc +0 -65
- data/src/core/lib/channel/channel_stack_builder.h +27 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +495 -162
- data/src/core/lib/channel/promise_based_filter.h +55 -41
- data/src/core/lib/compression/compression_internal.cc +1 -7
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/gpr/tls.h +1 -0
- data/src/core/lib/gprpp/bitset.h +12 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +2 -0
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +18 -2
- data/src/core/lib/gprpp/time.cc +12 -0
- data/src/core/lib/gprpp/time.h +1 -1
- data/src/core/lib/http/format_request.cc +1 -2
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/ev_posix.cc +6 -7
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/port.h +0 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +93 -35
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/resource_quota/api.cc +5 -30
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
- data/src/core/lib/security/credentials/credentials.h +16 -33
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +9 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +6 -4
- data/src/core/lib/surface/call.cc +1023 -903
- data/src/core/lib/surface/call.h +0 -14
- data/src/core/lib/surface/channel.cc +4 -3
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -6
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/server.cc +3 -14
- data/src/core/lib/surface/server.h +1 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +2 -0
- data/src/core/lib/transport/metadata_batch.h +12 -8
- data/src/core/lib/transport/transport.h +20 -5
- data/src/core/lib/transport/transport_impl.h +4 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +66 -45
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
|
29
29
|
#include "src/core/lib/channel/call_finalization.h"
|
30
|
+
#include "src/core/lib/channel/channel_args.h"
|
30
31
|
#include "src/core/lib/channel/channel_stack.h"
|
31
32
|
#include "src/core/lib/channel/context.h"
|
32
33
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -42,21 +43,25 @@ class ChannelFilter {
|
|
42
43
|
public:
|
43
44
|
class Args {
|
44
45
|
public:
|
45
|
-
Args() : Args(nullptr) {}
|
46
|
-
explicit Args(grpc_channel_stack* channel_stack
|
47
|
-
|
46
|
+
Args() : Args(nullptr, nullptr) {}
|
47
|
+
explicit Args(grpc_channel_stack* channel_stack,
|
48
|
+
grpc_channel_element* channel_element)
|
49
|
+
: channel_stack_(channel_stack), channel_element_(channel_element) {}
|
48
50
|
|
49
51
|
grpc_channel_stack* channel_stack() const { return channel_stack_; }
|
52
|
+
grpc_channel_element* uninitialized_channel_element() {
|
53
|
+
return channel_element_;
|
54
|
+
}
|
50
55
|
|
51
56
|
private:
|
52
57
|
friend class ChannelFilter;
|
53
58
|
grpc_channel_stack* channel_stack_;
|
59
|
+
grpc_channel_element* channel_element_;
|
54
60
|
};
|
55
61
|
|
56
62
|
// Construct a promise for one call.
|
57
|
-
virtual ArenaPromise<
|
58
|
-
|
59
|
-
NextPromiseFactory next_promise_factory) = 0;
|
63
|
+
virtual ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
64
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) = 0;
|
60
65
|
|
61
66
|
// Start a legacy transport op
|
62
67
|
// Return true if the op was handled, false if it should be passed to the
|
@@ -65,7 +70,6 @@ class ChannelFilter {
|
|
65
70
|
// structures going forward.
|
66
71
|
virtual bool StartTransportOp(grpc_transport_op*) { return false; }
|
67
72
|
|
68
|
-
protected:
|
69
73
|
virtual ~ChannelFilter() = default;
|
70
74
|
};
|
71
75
|
|
@@ -77,20 +81,22 @@ enum class FilterEndpoint {
|
|
77
81
|
kServer,
|
78
82
|
};
|
79
83
|
|
84
|
+
// Flags for MakePromiseBasedFilter.
|
85
|
+
static constexpr uint8_t kFilterExaminesServerInitialMetadata = 1;
|
86
|
+
|
80
87
|
namespace promise_filter_detail {
|
81
88
|
|
82
89
|
// Call data shared between all implementations of promise-based filters.
|
83
90
|
class BaseCallData : public Activity, private Wakeable {
|
84
91
|
public:
|
85
|
-
BaseCallData(grpc_call_element* elem, const grpc_call_element_args* args
|
86
|
-
|
87
|
-
|
88
|
-
arena_(args->arena),
|
89
|
-
call_combiner_(args->call_combiner),
|
90
|
-
deadline_(args->deadline),
|
91
|
-
context_(args->context) {}
|
92
|
+
BaseCallData(grpc_call_element* elem, const grpc_call_element_args* args,
|
93
|
+
uint8_t flags);
|
94
|
+
~BaseCallData() override;
|
92
95
|
|
93
|
-
void set_pollent(grpc_polling_entity* pollent) {
|
96
|
+
void set_pollent(grpc_polling_entity* pollent) {
|
97
|
+
GPR_ASSERT(nullptr ==
|
98
|
+
pollent_.exchange(pollent, std::memory_order_release));
|
99
|
+
}
|
94
100
|
|
95
101
|
// Activity implementation (partial).
|
96
102
|
void Orphan() final;
|
@@ -112,7 +118,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
112
118
|
: promise_detail::Context<Arena>(call_data->arena_),
|
113
119
|
promise_detail::Context<grpc_call_context_element>(
|
114
120
|
call_data->context_),
|
115
|
-
promise_detail::Context<grpc_polling_entity>(
|
121
|
+
promise_detail::Context<grpc_polling_entity>(
|
122
|
+
call_data->pollent_.load(std::memory_order_acquire)),
|
116
123
|
promise_detail::Context<CallFinalization>(&call_data->finalization_) {
|
117
124
|
}
|
118
125
|
};
|
@@ -127,10 +134,14 @@ class BaseCallData : public Activity, private Wakeable {
|
|
127
134
|
return p.Unwrap();
|
128
135
|
}
|
129
136
|
|
137
|
+
Arena* arena() { return arena_; }
|
130
138
|
grpc_call_element* elem() const { return elem_; }
|
131
139
|
CallCombiner* call_combiner() const { return call_combiner_; }
|
132
140
|
Timestamp deadline() const { return deadline_; }
|
133
141
|
grpc_call_stack* call_stack() const { return call_stack_; }
|
142
|
+
Latch<ServerMetadata*>* server_initial_metadata_latch() const {
|
143
|
+
return server_initial_metadata_latch_;
|
144
|
+
}
|
134
145
|
|
135
146
|
private:
|
136
147
|
// Wakeable implementation.
|
@@ -146,12 +157,14 @@ class BaseCallData : public Activity, private Wakeable {
|
|
146
157
|
const Timestamp deadline_;
|
147
158
|
CallFinalization finalization_;
|
148
159
|
grpc_call_context_element* const context_;
|
149
|
-
grpc_polling_entity
|
160
|
+
std::atomic<grpc_polling_entity*> pollent_{nullptr};
|
161
|
+
Latch<ServerMetadata*>* server_initial_metadata_latch_ = nullptr;
|
150
162
|
};
|
151
163
|
|
152
164
|
class ClientCallData : public BaseCallData {
|
153
165
|
public:
|
154
|
-
ClientCallData(grpc_call_element* elem, const grpc_call_element_args* args
|
166
|
+
ClientCallData(grpc_call_element* elem, const grpc_call_element_args* args,
|
167
|
+
uint8_t flags);
|
155
168
|
~ClientCallData() override;
|
156
169
|
|
157
170
|
// Activity implementation.
|
@@ -192,6 +205,9 @@ class ClientCallData : public BaseCallData {
|
|
192
205
|
kCancelled
|
193
206
|
};
|
194
207
|
|
208
|
+
struct RecvInitialMetadata;
|
209
|
+
class PollContext;
|
210
|
+
|
195
211
|
// Handle cancellation.
|
196
212
|
void Cancel(grpc_error_handle error);
|
197
213
|
// Begin running the promise - which will ultimately take some initial
|
@@ -205,17 +221,17 @@ class ClientCallData : public BaseCallData {
|
|
205
221
|
// Effectively:
|
206
222
|
// - put the modified initial metadata into the batch to be sent down.
|
207
223
|
// - return a wrapper around PollTrailingMetadata as the promise.
|
208
|
-
ArenaPromise<
|
209
|
-
ClientInitialMetadata initial_metadata);
|
224
|
+
ArenaPromise<ServerMetadataHandle> MakeNextPromise(CallArgs call_args);
|
210
225
|
// Wrapper to make it look like we're calling the next filter as a promise.
|
211
226
|
// First poll: send the send_initial_metadata op down the stack.
|
212
227
|
// All polls: await receiving the trailing metadata, then return it to the
|
213
228
|
// application.
|
214
|
-
Poll<
|
229
|
+
Poll<ServerMetadataHandle> PollTrailingMetadata();
|
215
230
|
static void RecvTrailingMetadataReadyCallback(void* arg,
|
216
231
|
grpc_error_handle error);
|
217
232
|
void RecvTrailingMetadataReady(grpc_error_handle error);
|
218
|
-
|
233
|
+
void RecvInitialMetadataReady(grpc_error_handle error);
|
234
|
+
// Given an error, fill in ServerMetadataHandle to represent that error.
|
219
235
|
void SetStatusFromError(grpc_metadata_batch* metadata,
|
220
236
|
grpc_error_handle error);
|
221
237
|
// Wakeup and poll the promise if appropriate.
|
@@ -223,11 +239,13 @@ class ClientCallData : public BaseCallData {
|
|
223
239
|
void OnWakeup() override;
|
224
240
|
|
225
241
|
// Contained promise
|
226
|
-
ArenaPromise<
|
242
|
+
ArenaPromise<ServerMetadataHandle> promise_;
|
227
243
|
// Queued batch containing at least a send_initial_metadata op.
|
228
244
|
grpc_transport_stream_op_batch* send_initial_metadata_batch_ = nullptr;
|
229
245
|
// Pointer to where trailing metadata will be stored.
|
230
246
|
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
247
|
+
// State tracking recv initial metadata for filters that care about it.
|
248
|
+
RecvInitialMetadata* recv_initial_metadata_ = nullptr;
|
231
249
|
// Closure to call when we're done with the trailing metadata.
|
232
250
|
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
233
251
|
// Our closure pointing to RecvTrailingMetadataReadyCallback.
|
@@ -238,17 +256,14 @@ class ClientCallData : public BaseCallData {
|
|
238
256
|
SendInitialState send_initial_state_ = SendInitialState::kInitial;
|
239
257
|
// State of the recv_trailing_metadata op.
|
240
258
|
RecvTrailingState recv_trailing_state_ = RecvTrailingState::kInitial;
|
241
|
-
//
|
242
|
-
|
243
|
-
// Should we repoll after completing polling?
|
244
|
-
bool repoll_ = false;
|
245
|
-
// Whether we should forward send initial metadata after polling?
|
246
|
-
bool forward_send_initial_metadata_ = false;
|
259
|
+
// Polling related data. Non-null if we're actively polling
|
260
|
+
PollContext* poll_ctx_ = nullptr;
|
247
261
|
};
|
248
262
|
|
249
263
|
class ServerCallData : public BaseCallData {
|
250
264
|
public:
|
251
|
-
ServerCallData(grpc_call_element* elem, const grpc_call_element_args* args
|
265
|
+
ServerCallData(grpc_call_element* elem, const grpc_call_element_args* args,
|
266
|
+
uint8_t flags);
|
252
267
|
~ServerCallData() override;
|
253
268
|
|
254
269
|
// Activity implementation.
|
@@ -289,12 +304,11 @@ class ServerCallData : public BaseCallData {
|
|
289
304
|
// Effectively:
|
290
305
|
// - put the modified initial metadata into the batch being sent up.
|
291
306
|
// - return a wrapper around PollTrailingMetadata as the promise.
|
292
|
-
ArenaPromise<
|
293
|
-
ClientInitialMetadata initial_metadata);
|
307
|
+
ArenaPromise<ServerMetadataHandle> MakeNextPromise(CallArgs call_args);
|
294
308
|
// Wrapper to make it look like we're calling the next filter as a promise.
|
295
309
|
// All polls: await sending the trailing metadata, then foward it down the
|
296
310
|
// stack.
|
297
|
-
Poll<
|
311
|
+
Poll<ServerMetadataHandle> PollTrailingMetadata();
|
298
312
|
static void RecvInitialMetadataReadyCallback(void* arg,
|
299
313
|
grpc_error_handle error);
|
300
314
|
void RecvInitialMetadataReady(grpc_error_handle error);
|
@@ -303,7 +317,7 @@ class ServerCallData : public BaseCallData {
|
|
303
317
|
void OnWakeup() override;
|
304
318
|
|
305
319
|
// Contained promise
|
306
|
-
ArenaPromise<
|
320
|
+
ArenaPromise<ServerMetadataHandle> promise_;
|
307
321
|
// Pointer to where initial metadata will be stored.
|
308
322
|
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
309
323
|
// Closure to call when we're done with the trailing metadata.
|
@@ -351,11 +365,11 @@ class CallData<ChannelFilter, FilterEndpoint::kServer> : public ServerCallData {
|
|
351
365
|
// class SomeChannelFilter : public ChannelFilter {
|
352
366
|
// public:
|
353
367
|
// static absl::StatusOr<SomeChannelFilter> Create(
|
354
|
-
// ChannelFilter::Args filter_args);
|
368
|
+
// ChannelArgs channel_args, ChannelFilter::Args filter_args);
|
355
369
|
// };
|
356
370
|
// TODO(ctiller): allow implementing get_channel_info, start_transport_op in
|
357
371
|
// some way on ChannelFilter.
|
358
|
-
template <typename F, FilterEndpoint kEndpoint>
|
372
|
+
template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
|
359
373
|
absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value, grpc_channel_filter>
|
360
374
|
MakePromiseBasedFilter(const char* name) {
|
361
375
|
using CallData = promise_filter_detail::CallData<F, kEndpoint>;
|
@@ -366,10 +380,10 @@ MakePromiseBasedFilter(const char* name) {
|
|
366
380
|
static_cast<CallData*>(elem->call_data)->StartBatch(batch);
|
367
381
|
},
|
368
382
|
// make_call_promise
|
369
|
-
[](grpc_channel_element* elem,
|
383
|
+
[](grpc_channel_element* elem, CallArgs call_args,
|
370
384
|
NextPromiseFactory next_promise_factory) {
|
371
385
|
return static_cast<F*>(elem->channel_data)
|
372
|
-
->MakeCallPromise(std::move(
|
386
|
+
->MakeCallPromise(std::move(call_args),
|
373
387
|
std::move(next_promise_factory));
|
374
388
|
},
|
375
389
|
// start_transport_op
|
@@ -382,7 +396,7 @@ MakePromiseBasedFilter(const char* name) {
|
|
382
396
|
sizeof(CallData),
|
383
397
|
// init_call_elem
|
384
398
|
[](grpc_call_element* elem, const grpc_call_element_args* args) {
|
385
|
-
new (elem->call_data) CallData(elem, args);
|
399
|
+
new (elem->call_data) CallData(elem, args, kFlags);
|
386
400
|
return GRPC_ERROR_NONE;
|
387
401
|
},
|
388
402
|
// set_pollset_or_pollset_set
|
@@ -401,8 +415,8 @@ MakePromiseBasedFilter(const char* name) {
|
|
401
415
|
// init_channel_elem
|
402
416
|
[](grpc_channel_element* elem, grpc_channel_element_args* args) {
|
403
417
|
GPR_ASSERT(!args->is_last);
|
404
|
-
auto status = F::Create(args->channel_args,
|
405
|
-
ChannelFilter::Args(args->channel_stack));
|
418
|
+
auto status = F::Create(ChannelArgs::FromC(args->channel_args),
|
419
|
+
ChannelFilter::Args(args->channel_stack, elem));
|
406
420
|
if (!status.ok()) return absl_status_to_grpc_error(status.status());
|
407
421
|
new (elem->channel_data) F(std::move(*status));
|
408
422
|
return GRPC_ERROR_NONE;
|
@@ -194,13 +194,7 @@ CompressionAlgorithmSet CompressionAlgorithmSet::FromString(
|
|
194
194
|
}
|
195
195
|
|
196
196
|
uint32_t CompressionAlgorithmSet::ToLegacyBitmask() const {
|
197
|
-
uint32_t
|
198
|
-
for (size_t i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
|
199
|
-
if (set_.is_set(i)) {
|
200
|
-
x |= (1u << i);
|
201
|
-
}
|
202
|
-
}
|
203
|
-
return x;
|
197
|
+
return set_.ToInt<uint32_t>();
|
204
198
|
}
|
205
199
|
|
206
200
|
absl::optional<grpc_compression_algorithm>
|
@@ -41,8 +41,6 @@ const char* grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT] = {
|
|
41
41
|
"pollset_kick_wakeup_fd",
|
42
42
|
"pollset_kick_wakeup_cv",
|
43
43
|
"pollset_kick_own_thread",
|
44
|
-
"syscall_epoll_ctl",
|
45
|
-
"pollset_fd_cache_hits",
|
46
44
|
"histogram_slow_lookups",
|
47
45
|
"syscall_write",
|
48
46
|
"syscall_read",
|
@@ -75,6 +73,7 @@ const char* grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT] = {
|
|
75
73
|
"http2_initiate_write_due_to_stream_flow_control",
|
76
74
|
"http2_initiate_write_due_to_transport_flow_control",
|
77
75
|
"http2_initiate_write_due_to_send_settings",
|
76
|
+
"http2_initiate_write_due_to_settings_ack",
|
78
77
|
"http2_initiate_write_due_to_bdp_estimator_ping",
|
79
78
|
"http2_initiate_write_due_to_flow_control_unstalled_by_setting",
|
80
79
|
"http2_initiate_write_due_to_flow_control_unstalled_by_update",
|
@@ -147,9 +146,6 @@ const char* grpc_stats_counter_doc[GRPC_STATS_COUNTER_COUNT] = {
|
|
147
146
|
"polling wakeup (only valid for epoll1 right now)",
|
148
147
|
"How many times could a polling wakeup be satisfied by keeping the waking "
|
149
148
|
"thread awake? (only valid for epoll1 right now)",
|
150
|
-
"Number of epoll_ctl calls made (only valid for epollex right now)",
|
151
|
-
"Number of epoll_ctl calls skipped because the fd was cached as already "
|
152
|
-
"being added. (only valid for epollex right now)",
|
153
149
|
"Number of times histogram increments went through the slow (binary "
|
154
150
|
"search) path",
|
155
151
|
"Number of write syscalls (or equivalent - eg sendmsg) made by this "
|
@@ -186,6 +182,7 @@ const char* grpc_stats_counter_doc[GRPC_STATS_COUNTER_COUNT] = {
|
|
186
182
|
"Number of HTTP2 writes initiated due to 'stream_flow_control'",
|
187
183
|
"Number of HTTP2 writes initiated due to 'transport_flow_control'",
|
188
184
|
"Number of HTTP2 writes initiated due to 'send_settings'",
|
185
|
+
"Number of HTTP2 writes initiated due to 'settings_ack'",
|
189
186
|
"Number of HTTP2 writes initiated due to 'bdp_estimator_ping'",
|
190
187
|
"Number of HTTP2 writes initiated due to "
|
191
188
|
"'flow_control_unstalled_by_setting'",
|
@@ -281,7 +278,6 @@ const char* grpc_stats_histogram_doc[GRPC_STATS_HISTOGRAM_COUNT] = {
|
|
281
278
|
"Number of streams whose payload was written per TCP write",
|
282
279
|
"Number of streams terminated per TCP write",
|
283
280
|
"Number of flow control updates written per TCP write",
|
284
|
-
// NOLINTNEXTLINE(bugprone-suspicious-missing-comma)
|
285
281
|
"How many completion queues were checked looking for a CQ that had "
|
286
282
|
"requested the incoming call",
|
287
283
|
};
|
@@ -42,8 +42,6 @@ typedef enum {
|
|
42
42
|
GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_FD,
|
43
43
|
GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_CV,
|
44
44
|
GRPC_STATS_COUNTER_POLLSET_KICK_OWN_THREAD,
|
45
|
-
GRPC_STATS_COUNTER_SYSCALL_EPOLL_CTL,
|
46
|
-
GRPC_STATS_COUNTER_POLLSET_FD_CACHE_HITS,
|
47
45
|
GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS,
|
48
46
|
GRPC_STATS_COUNTER_SYSCALL_WRITE,
|
49
47
|
GRPC_STATS_COUNTER_SYSCALL_READ,
|
@@ -76,6 +74,7 @@ typedef enum {
|
|
76
74
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL,
|
77
75
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL,
|
78
76
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS,
|
77
|
+
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK,
|
79
78
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING,
|
80
79
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING,
|
81
80
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE,
|
@@ -206,10 +205,6 @@ typedef enum {
|
|
206
205
|
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_CV)
|
207
206
|
#define GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD() \
|
208
207
|
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_OWN_THREAD)
|
209
|
-
#define GRPC_STATS_INC_SYSCALL_EPOLL_CTL() \
|
210
|
-
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_EPOLL_CTL)
|
211
|
-
#define GRPC_STATS_INC_POLLSET_FD_CACHE_HITS() \
|
212
|
-
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_FD_CACHE_HITS)
|
213
208
|
#define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS() \
|
214
209
|
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS)
|
215
210
|
#define GRPC_STATS_INC_SYSCALL_WRITE() \
|
@@ -287,6 +282,9 @@ typedef enum {
|
|
287
282
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS() \
|
288
283
|
GRPC_STATS_INC_COUNTER( \
|
289
284
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS)
|
285
|
+
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK() \
|
286
|
+
GRPC_STATS_INC_COUNTER( \
|
287
|
+
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK)
|
290
288
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING() \
|
291
289
|
GRPC_STATS_INC_COUNTER( \
|
292
290
|
GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING)
|
@@ -398,43 +396,43 @@ typedef enum {
|
|
398
396
|
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES)
|
399
397
|
#define GRPC_STATS_INC_CALL_INITIAL_SIZE(value) \
|
400
398
|
grpc_stats_inc_call_initial_size((int)(value))
|
401
|
-
void grpc_stats_inc_call_initial_size(int
|
399
|
+
void grpc_stats_inc_call_initial_size(int x);
|
402
400
|
#define GRPC_STATS_INC_POLL_EVENTS_RETURNED(value) \
|
403
401
|
grpc_stats_inc_poll_events_returned((int)(value))
|
404
|
-
void grpc_stats_inc_poll_events_returned(int
|
402
|
+
void grpc_stats_inc_poll_events_returned(int x);
|
405
403
|
#define GRPC_STATS_INC_TCP_WRITE_SIZE(value) \
|
406
404
|
grpc_stats_inc_tcp_write_size((int)(value))
|
407
|
-
void grpc_stats_inc_tcp_write_size(int
|
405
|
+
void grpc_stats_inc_tcp_write_size(int x);
|
408
406
|
#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(value) \
|
409
407
|
grpc_stats_inc_tcp_write_iov_size((int)(value))
|
410
|
-
void grpc_stats_inc_tcp_write_iov_size(int
|
408
|
+
void grpc_stats_inc_tcp_write_iov_size(int x);
|
411
409
|
#define GRPC_STATS_INC_TCP_READ_SIZE(value) \
|
412
410
|
grpc_stats_inc_tcp_read_size((int)(value))
|
413
|
-
void grpc_stats_inc_tcp_read_size(int
|
411
|
+
void grpc_stats_inc_tcp_read_size(int x);
|
414
412
|
#define GRPC_STATS_INC_TCP_READ_OFFER(value) \
|
415
413
|
grpc_stats_inc_tcp_read_offer((int)(value))
|
416
|
-
void grpc_stats_inc_tcp_read_offer(int
|
414
|
+
void grpc_stats_inc_tcp_read_offer(int x);
|
417
415
|
#define GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(value) \
|
418
416
|
grpc_stats_inc_tcp_read_offer_iov_size((int)(value))
|
419
|
-
void grpc_stats_inc_tcp_read_offer_iov_size(int
|
417
|
+
void grpc_stats_inc_tcp_read_offer_iov_size(int x);
|
420
418
|
#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(value) \
|
421
419
|
grpc_stats_inc_http2_send_message_size((int)(value))
|
422
|
-
void grpc_stats_inc_http2_send_message_size(int
|
420
|
+
void grpc_stats_inc_http2_send_message_size(int x);
|
423
421
|
#define GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE(value) \
|
424
422
|
grpc_stats_inc_http2_send_initial_metadata_per_write((int)(value))
|
425
|
-
void grpc_stats_inc_http2_send_initial_metadata_per_write(int
|
423
|
+
void grpc_stats_inc_http2_send_initial_metadata_per_write(int x);
|
426
424
|
#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(value) \
|
427
425
|
grpc_stats_inc_http2_send_message_per_write((int)(value))
|
428
|
-
void grpc_stats_inc_http2_send_message_per_write(int
|
426
|
+
void grpc_stats_inc_http2_send_message_per_write(int x);
|
429
427
|
#define GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE(value) \
|
430
428
|
grpc_stats_inc_http2_send_trailing_metadata_per_write((int)(value))
|
431
|
-
void grpc_stats_inc_http2_send_trailing_metadata_per_write(int
|
429
|
+
void grpc_stats_inc_http2_send_trailing_metadata_per_write(int x);
|
432
430
|
#define GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(value) \
|
433
431
|
grpc_stats_inc_http2_send_flowctl_per_write((int)(value))
|
434
|
-
void grpc_stats_inc_http2_send_flowctl_per_write(int
|
432
|
+
void grpc_stats_inc_http2_send_flowctl_per_write(int x);
|
435
433
|
#define GRPC_STATS_INC_SERVER_CQS_CHECKED(value) \
|
436
434
|
grpc_stats_inc_server_cqs_checked((int)(value))
|
437
|
-
void grpc_stats_inc_server_cqs_checked(int
|
435
|
+
void grpc_stats_inc_server_cqs_checked(int x);
|
438
436
|
#else
|
439
437
|
#define GRPC_STATS_INC_CLIENT_CALLS_CREATED()
|
440
438
|
#define GRPC_STATS_INC_SERVER_CALLS_CREATED()
|
@@ -450,8 +448,6 @@ void grpc_stats_inc_server_cqs_checked(int value);
|
|
450
448
|
#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD()
|
451
449
|
#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV()
|
452
450
|
#define GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD()
|
453
|
-
#define GRPC_STATS_INC_SYSCALL_EPOLL_CTL()
|
454
|
-
#define GRPC_STATS_INC_POLLSET_FD_CACHE_HITS()
|
455
451
|
#define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS()
|
456
452
|
#define GRPC_STATS_INC_SYSCALL_WRITE()
|
457
453
|
#define GRPC_STATS_INC_SYSCALL_READ()
|
@@ -484,6 +480,7 @@ void grpc_stats_inc_server_cqs_checked(int value);
|
|
484
480
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL()
|
485
481
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL()
|
486
482
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS()
|
483
|
+
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SETTINGS_ACK()
|
487
484
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING()
|
488
485
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING()
|
489
486
|
#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE()
|
data/src/core/lib/gpr/tls.h
CHANGED
data/src/core/lib/gprpp/bitset.h
CHANGED
@@ -153,6 +153,18 @@ class BitSet {
|
|
153
153
|
return true;
|
154
154
|
}
|
155
155
|
|
156
|
+
template <typename Int>
|
157
|
+
typename std::enable_if<std::is_unsigned<Int>::value &&
|
158
|
+
(sizeof(Int) * 8 >= kTotalBits),
|
159
|
+
Int>::type
|
160
|
+
ToInt() const {
|
161
|
+
Int result = 0;
|
162
|
+
for (size_t i = 0; i < kTotalBits; i++) {
|
163
|
+
if (is_set(i)) result |= (Int(1) << i);
|
164
|
+
}
|
165
|
+
return result;
|
166
|
+
}
|
167
|
+
|
156
168
|
private:
|
157
169
|
// Given a bit index, return which unit it's stored in.
|
158
170
|
static constexpr size_t unit_for(size_t bit) { return bit / kUnitBits; }
|
@@ -31,6 +31,10 @@ class CppImplOf {
|
|
31
31
|
return reinterpret_cast<CppType*>(c_type);
|
32
32
|
}
|
33
33
|
|
34
|
+
static const CppType* FromC(const CType* c_type) {
|
35
|
+
return reinterpret_cast<const CppType*>(c_type);
|
36
|
+
}
|
37
|
+
|
34
38
|
// Retrieve a c pointer (of the same ownership as this)
|
35
39
|
CType* c_ptr() {
|
36
40
|
return reinterpret_cast<CType*>(static_cast<CppType*>(this));
|
@@ -0,0 +1,73 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_GPRPP_MATCH_H
|
16
|
+
#define GRPC_CORE_LIB_GPRPP_MATCH_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include "absl/types/variant.h"
|
21
|
+
|
22
|
+
#include "src/core/lib/gprpp/overload.h"
|
23
|
+
|
24
|
+
namespace grpc_core {
|
25
|
+
|
26
|
+
namespace detail {
|
27
|
+
|
28
|
+
template <typename... Cases>
|
29
|
+
struct MatchPointerExtractor {
|
30
|
+
OverloadType<Cases...> cases;
|
31
|
+
template <typename T>
|
32
|
+
auto operator()(T& value) -> decltype(cases(&value)) {
|
33
|
+
return cases(&value);
|
34
|
+
}
|
35
|
+
};
|
36
|
+
|
37
|
+
} // namespace detail
|
38
|
+
|
39
|
+
/// Match on a variant.
|
40
|
+
/// Given variant \a value, and a set of callables \a fs, call the appropriate
|
41
|
+
/// callable based on the type contained in \a value.
|
42
|
+
///
|
43
|
+
/// Example (prints "hoorah"):
|
44
|
+
/// variant<int, string> v = 42;
|
45
|
+
/// Match(v,
|
46
|
+
/// [](int i) { puts("hoorah"); },
|
47
|
+
/// [](string s) { puts("boo"); });
|
48
|
+
template <typename... Fs, typename T0, typename... Ts>
|
49
|
+
auto Match(const absl::variant<T0, Ts...>& value, Fs... fs)
|
50
|
+
-> decltype(std::declval<OverloadType<Fs...>>()(std::declval<T0>())) {
|
51
|
+
return absl::visit(Overload(std::move(fs)...), value);
|
52
|
+
}
|
53
|
+
|
54
|
+
/// A version of Match that takes a mutable pointer to a variant and calls its
|
55
|
+
/// overload callables with a mutable pointer to the current variant value.
|
56
|
+
///
|
57
|
+
/// Example:
|
58
|
+
/// variant<int, string> v = 42;
|
59
|
+
/// MatchMutable(&v,
|
60
|
+
/// [](int* i) { *i = 1; },
|
61
|
+
/// [](string* s) { *s = "foo"; });
|
62
|
+
/// // v now contains 1.
|
63
|
+
template <typename... Fs, typename T0, typename... Ts>
|
64
|
+
auto MatchMutable(absl::variant<T0, Ts...>* value, Fs... fs)
|
65
|
+
-> decltype(std::declval<OverloadType<Fs...>>()(std::declval<T0*>())) {
|
66
|
+
return absl::visit(detail::MatchPointerExtractor<Fs...>{OverloadType<Fs...>(
|
67
|
+
std::move(fs)...)},
|
68
|
+
*value);
|
69
|
+
}
|
70
|
+
|
71
|
+
} // namespace grpc_core
|
72
|
+
|
73
|
+
#endif // GRPC_CORE_LIB_GPRPP_MATCH_H
|
@@ -0,0 +1,59 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_GPRPP_OVERLOAD_H
|
16
|
+
#define GRPC_CORE_LIB_GPRPP_OVERLOAD_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <utility>
|
21
|
+
|
22
|
+
namespace grpc_core {
|
23
|
+
|
24
|
+
template <typename... Cases>
|
25
|
+
struct OverloadType;
|
26
|
+
// Compose one overload with N more -- use inheritance to leverage using and the
|
27
|
+
// empty base class optimization.
|
28
|
+
template <typename Case, typename... Cases>
|
29
|
+
struct OverloadType<Case, Cases...> : public Case,
|
30
|
+
public OverloadType<Cases...> {
|
31
|
+
explicit OverloadType(Case&& c, Cases&&... cases)
|
32
|
+
: Case(std::forward<Case>(c)),
|
33
|
+
OverloadType<Cases...>(std::forward<Cases>(cases)...) {}
|
34
|
+
using Case::operator();
|
35
|
+
using OverloadType<Cases...>::operator();
|
36
|
+
};
|
37
|
+
// Overload of a single case is just that case itself
|
38
|
+
template <typename Case>
|
39
|
+
struct OverloadType<Case> : public Case {
|
40
|
+
explicit OverloadType(Case&& c) : Case(std::forward<Case>(c)) {}
|
41
|
+
using Case::operator();
|
42
|
+
};
|
43
|
+
|
44
|
+
/// Compose callables into a single callable.
|
45
|
+
/// e.g. given [](int i) { puts("a"); } and [](double d) { puts("b"); },
|
46
|
+
/// return a callable object like:
|
47
|
+
/// struct {
|
48
|
+
/// void operator()(int i) { puts("a"); }
|
49
|
+
/// void operator()(double i) { puts("b"); }
|
50
|
+
/// };
|
51
|
+
/// Preserves all captures.
|
52
|
+
template <typename... Cases>
|
53
|
+
OverloadType<Cases...> Overload(Cases... cases) {
|
54
|
+
return OverloadType<Cases...>(std::move(cases)...);
|
55
|
+
}
|
56
|
+
|
57
|
+
} // namespace grpc_core
|
58
|
+
|
59
|
+
#endif // GRPC_CORE_LIB_GPRPP_OVERLOAD_H
|
@@ -281,6 +281,8 @@ template <typename Child, typename Impl = PolymorphicRefCount,
|
|
281
281
|
UnrefBehavior UnrefBehaviorArg = kUnrefDelete>
|
282
282
|
class RefCounted : public Impl {
|
283
283
|
public:
|
284
|
+
using RefCountedChildType = Child;
|
285
|
+
|
284
286
|
// Note: Depending on the Impl used, this dtor can be implicitly virtual.
|
285
287
|
~RefCounted() = default;
|
286
288
|
|