grpc 1.42.0 → 1.46.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +425 -234
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc.h +40 -14
- data/include/grpc/grpc_posix.h +20 -19
- data/include/grpc/grpc_security.h +312 -195
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +24 -21
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/include/grpc/impl/codegen/slice.h +4 -1
- data/include/grpc/slice.h +0 -11
- 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 +5 -5
- data/src/core/ext/filters/client_channel/backend_metric.cc +9 -10
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +367 -243
- data/src/core/ext/filters/client_channel/client_channel.h +45 -41
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +6 -13
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +126 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +22 -27
- 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/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +4 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -81
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +50 -32
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +199 -150
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +123 -76
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +162 -122
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +98 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +104 -145
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +147 -70
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +19 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +323 -470
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +94 -62
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +10 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +287 -313
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +31 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +136 -226
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -255
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +84 -68
- 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/sockaddr/sockaddr_resolver.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +476 -412
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +253 -171
- data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
- data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
- data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
- data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +52 -59
- data/src/core/ext/filters/client_channel/subchannel.h +7 -7
- 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/deadline/deadline_filter.cc +15 -14
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +155 -400
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +11 -13
- data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +81 -544
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +31 -95
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +22 -22
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +43 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +15 -27
- data/src/core/ext/filters/http/server/http_server_filter.cc +36 -251
- data/src/core/ext/filters/message_size/message_size_filter.cc +27 -35
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → filters/server_config_selector/server_config_selector_filter.h} +9 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +239 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +286 -108
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +327 -303
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +9 -4
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -10
- data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +361 -240
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +87 -145
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +74 -149
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -43
- data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -9
- data/src/core/ext/transport/chttp2/transport/writing.cc +81 -136
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +247 -209
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1249 -684
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +51 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +30 -4
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +50 -17
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +143 -116
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +670 -385
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +239 -199
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1270 -663
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +49 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +201 -90
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +320 -271
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1671 -826
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +43 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +60 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +273 -98
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +74 -53
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +355 -189
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +213 -176
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1069 -581
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +105 -45
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +526 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +39 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +16 -22
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +42 -100
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +145 -117
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +769 -409
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +141 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +737 -348
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +58 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +203 -125
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +993 -396
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +17 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +29 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +84 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +94 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +47 -25
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +51 -35
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +195 -108
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +74 -55
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +350 -189
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +70 -53
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +358 -187
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -20
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +98 -71
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -258
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +104 -79
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +561 -300
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +31 -16
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +105 -48
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +24 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -39
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +82 -61
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +414 -234
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +86 -65
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +407 -236
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +127 -103
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +563 -293
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +53 -34
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +272 -141
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +663 -572
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3643 -1900
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +38 -19
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +149 -71
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +78 -45
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +17 -4
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +35 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +45 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +188 -111
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +261 -131
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +87 -42
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +283 -223
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1554 -733
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +9 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +105 -60
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +555 -234
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +157 -86
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +126 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +623 -262
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +15 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +91 -72
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +475 -255
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +31 -17
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +108 -61
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +73 -56
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +348 -185
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +34 -18
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -80
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +100 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +51 -30
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +49 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +39 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +118 -68
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +31 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +124 -64
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +86 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +37 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +151 -82
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +50 -31
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +230 -144
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +53 -36
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +236 -130
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +23 -9
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +63 -35
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +30 -15
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +99 -51
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +41 -18
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +22 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +23 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +154 -125
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +721 -381
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +158 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +796 -401
- data/src/core/ext/upb-generated/google/api/http.upb.c +43 -28
- data/src/core/ext/upb-generated/google/api/http.upb.h +217 -114
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +39 -21
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +373 -282
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2077 -1029
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +37 -19
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +15 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -14
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +47 -31
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +178 -92
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +37 -19
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +57 -36
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +241 -148
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +21 -8
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +53 -29
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +32 -18
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +104 -47
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +135 -107
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +686 -358
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +77 -40
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +22 -8
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +57 -34
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +81 -61
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +399 -237
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +34 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +116 -62
- 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 +75 -13
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +194 -56
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -17
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +21 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +16 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +57 -19
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +30 -4
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +50 -17
- data/src/core/ext/upb-generated/validate/validate.upb.c +406 -310
- data/src/core/ext/upb-generated/validate/validate.upb.h +2730 -1164
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +64 -17
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +175 -67
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +17 -4
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +31 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +30 -16
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +99 -54
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +25 -11
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +54 -29
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +22 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +56 -29
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +33 -19
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +131 -69
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +22 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +59 -29
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +36 -21
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +102 -45
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +20 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +43 -23
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +10 -8
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +22 -52
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +250 -281
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +387 -426
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +25 -23
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +87 -133
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -116
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +179 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +252 -254
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +16 -20
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +20 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +21 -33
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +54 -62
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -166
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +21 -23
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +19 -37
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +38 -38
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +828 -914
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +20 -26
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +19 -20
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +199 -215
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +171 -157
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +219 -216
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +22 -32
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +15 -23
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +17 -23
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +5 -62
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -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/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +6 -15
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +6 -17
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +9 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +6 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +8 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +8 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +8 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/upb_utils.h +67 -0
- data/src/core/ext/xds/xds_api.cc +182 -3417
- data/src/core/ext/xds/xds_api.h +60 -613
- data/src/core/ext/xds/xds_bootstrap.cc +222 -123
- data/src/core/ext/xds/xds_bootstrap.h +33 -15
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +10 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +16 -20
- data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
- data/src/core/ext/xds/xds_client.cc +805 -1084
- data/src/core/ext/xds/xds_client.h +118 -150
- data/src/core/ext/xds/xds_client_stats.cc +15 -15
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_cluster.cc +453 -0
- data/src/core/ext/xds/xds_cluster.h +108 -0
- 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 +388 -0
- data/src/core/ext/xds/xds_common_types.h +95 -0
- data/src/core/ext/xds/xds_endpoint.cc +371 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -7
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +11 -5
- data/src/core/ext/xds/xds_http_filters.h +4 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1039 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/xds/xds_resource_type.cc +33 -0
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +1122 -0
- data/src/core/ext/xds/xds_route_config.h +218 -0
- data/src/core/ext/xds/xds_routing.cc +250 -0
- data/src/core/ext/xds/xds_routing.h +101 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1056 -286
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/avl/avl.h +452 -88
- data/src/core/lib/backoff/backoff.cc +9 -38
- data/src/core/lib/backoff/backoff.h +11 -11
- data/src/core/lib/channel/call_finalization.h +86 -0
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +166 -28
- data/src/core/lib/channel/channel_args.h +214 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
- data/src/core/lib/channel/channel_stack.cc +10 -3
- data/src/core/lib/channel/channel_stack.h +39 -6
- data/src/core/lib/channel/channel_stack_builder.cc +23 -272
- data/src/core/lib/channel/channel_stack_builder.h +118 -149
- 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/channel_trace.cc +3 -6
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/connected_channel.cc +9 -4
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/handshaker.cc +1 -1
- data/src/core/lib/channel/handshaker.h +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +1002 -0
- data/src/core/lib/channel/promise_based_filter.h +437 -0
- data/src/core/lib/compression/compression.cc +20 -112
- data/src/core/lib/compression/compression_internal.cc +137 -203
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +11 -3
- data/src/core/lib/config/core_configuration.h +50 -0
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
- data/src/core/lib/event_engine/event_engine.cc +21 -19
- data/src/core/lib/event_engine/event_engine_factory.h +36 -0
- data/src/core/lib/event_engine/memory_allocator.cc +66 -0
- data/src/core/lib/event_engine/resolved_address.cc +39 -0
- data/src/core/lib/gpr/sync_posix.cc +1 -0
- data/src/core/lib/gpr/time.cc +2 -1
- data/src/core/lib/gpr/tls.h +7 -0
- data/src/core/lib/gpr/useful.h +18 -0
- data/src/core/lib/gprpp/bitset.h +19 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +2 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +3 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +48 -40
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +24 -1
- data/src/core/lib/gprpp/time.cc +198 -0
- data/src/core/lib/gprpp/time.h +292 -0
- data/src/core/lib/http/format_request.cc +28 -25
- data/src/core/lib/http/format_request.h +7 -6
- data/src/core/lib/http/httpcli.cc +310 -238
- data/src/core/lib/http/httpcli.h +183 -88
- data/src/core/lib/http/httpcli_security_connector.cc +64 -75
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +15 -2
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +18 -18
- data/src/core/lib/iomgr/call_combiner.cc +17 -7
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/error.cc +13 -10
- data/src/core/lib/iomgr/error.h +0 -2
- data/src/core/lib/iomgr/ev_apple.cc +6 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
- data/src/core/lib/iomgr/ev_posix.cc +9 -10
- data/src/core/lib/iomgr/ev_posix.h +1 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +8 -27
- data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +68 -49
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +11 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -7
- data/src/core/lib/iomgr/exec_ctx.cc +25 -97
- data/src/core/lib/iomgr/exec_ctx.h +18 -34
- data/src/core/lib/iomgr/executor.cc +22 -16
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +2 -1
- data/src/core/lib/iomgr/iocp_windows.cc +9 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.h +6 -0
- data/src/core/lib/iomgr/pollset.cc +1 -1
- data/src/core/lib/iomgr/pollset.h +4 -4
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +6 -11
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +83 -67
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
- data/src/core/lib/iomgr/tcp_client.cc +3 -5
- data/src/core/lib/iomgr/tcp_client.h +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +2 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +10 -26
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -11
- data/src/core/lib/iomgr/tcp_posix.cc +120 -66
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_posix.cc +43 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +19 -17
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/timer.cc +2 -2
- data/src/core/lib/iomgr/timer.h +11 -6
- data/src/core/lib/iomgr/timer_generic.cc +96 -77
- data/src/core/lib/iomgr/timer_manager.cc +15 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +5 -5
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.cc +121 -0
- data/src/core/lib/promise/activity.h +540 -0
- data/src/core/lib/promise/arena_promise.h +188 -0
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +496 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +50 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/promise/loop.h +134 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +89 -0
- data/src/core/lib/promise/sleep.cc +74 -0
- data/src/core/lib/promise/sleep.h +66 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -31
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +83 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/resource_quota/memory_quota.cc +478 -0
- data/src/core/lib/resource_quota/memory_quota.h +457 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +66 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/resource_quota/trace.h} +6 -8
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +37 -38
- data/src/core/lib/security/authorization/evaluate_args.h +3 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +171 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +9 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +24 -83
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
- data/src/core/lib/security/credentials/credentials.cc +2 -3
- data/src/core/lib/security/credentials/credentials.h +74 -80
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +48 -33
- 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 +52 -35
- data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -14
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
- data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +21 -16
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
- data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +33 -45
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -12
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +54 -43
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +157 -174
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +60 -33
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +96 -152
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -14
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +56 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +33 -87
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +73 -149
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -16
- data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +51 -58
- data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +11 -17
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -16
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
- data/src/core/lib/security/security_connector/security_connector.cc +3 -15
- data/src/core/lib/security/security_connector/security_connector.h +25 -21
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +10 -13
- data/src/core/lib/security/security_connector/ssl_utils.cc +38 -32
- data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +365 -206
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +70 -47
- data/src/core/lib/security/transport/auth_filters.h +38 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +97 -360
- 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 +22 -12
- data/src/core/lib/security/transport/server_auth_filter.cc +41 -35
- data/src/core/lib/service_config/service_config.h +82 -0
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext/service_config/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
- data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +16 -18
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +31 -27
- data/src/core/{ext → lib}/service_config/service_config_parser.h +39 -30
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +78 -181
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_internal.h +12 -31
- data/src/core/lib/slice/slice_refcount.cc +18 -0
- data/src/core/lib/slice/slice_refcount.h +8 -83
- data/src/core/lib/slice/slice_refcount_base.h +21 -133
- data/src/core/lib/surface/builtins.cc +6 -6
- data/src/core/lib/surface/call.cc +1132 -1221
- data/src/core/lib/surface/call.h +5 -19
- data/src/core/lib/surface/channel.cc +68 -99
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +3 -7
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/init.cc +78 -10
- data/src/core/lib/surface/init.h +0 -2
- data/src/core/lib/surface/lame_client.cc +26 -19
- data/src/core/lib/surface/server.cc +46 -85
- data/src/core/lib/surface/server.h +14 -16
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +10 -11
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +6 -0
- data/src/core/lib/transport/error_utils.cc +5 -3
- data/src/core/lib/transport/error_utils.h +2 -1
- data/src/core/lib/transport/metadata_batch.h +1131 -792
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +228 -90
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +204 -67
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +7 -27
- data/src/core/lib/transport/transport.h +103 -4
- data/src/core/lib/transport/transport_impl.h +14 -0
- data/src/core/lib/transport/transport_op_string.cc +5 -47
- data/src/core/lib/uri/uri_parser.cc +237 -63
- data/src/core/lib/uri/uri_parser.h +39 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -92
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +28 -23
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +21 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/local_transport_security.cc +16 -24
- data/src/core/tsi/local_transport_security.h +1 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +210 -53
- data/src/core/tsi/ssl_transport_security.h +47 -8
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_channel.c +5 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +39 -51
- data/src/ruby/ext/grpc/rb_server.c +7 -4
- 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/src/proto/grpc/testing/test_pb.rb +2 -1
- 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/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +29 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
- data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
- data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
- data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
- data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
- data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
- data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
- data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
- data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
- data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
- data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
- data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
- data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
- data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
- data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
- data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
- data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
- data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
- data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
- data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
- data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
- data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
- data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
- data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
- data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
- data/third_party/upb/third_party/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/decode.c +732 -378
- data/third_party/upb/upb/decode.h +43 -17
- data/third_party/upb/upb/decode_fast.c +303 -301
- data/third_party/upb/upb/decode_fast.h +18 -18
- data/third_party/upb/upb/decode_internal.h +73 -55
- data/third_party/upb/upb/def.c +2074 -981
- data/third_party/upb/upb/def.h +332 -260
- data/third_party/upb/upb/def.hpp +139 -169
- data/third_party/upb/upb/encode.c +267 -174
- data/third_party/upb/upb/encode.h +15 -17
- 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 +152 -121
- data/third_party/upb/upb/msg.h +39 -33
- data/third_party/upb/upb/msg_internal.h +395 -251
- 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/reflection.c +292 -212
- data/third_party/upb/upb/reflection.h +91 -67
- data/third_party/upb/upb/reflection.hpp +6 -6
- data/third_party/upb/upb/table.c +231 -147
- data/third_party/upb/upb/table_internal.h +129 -95
- data/third_party/upb/upb/text_encode.c +114 -91
- data/third_party/upb/upb/text_encode.h +10 -10
- data/third_party/upb/upb/upb.c +118 -71
- data/third_party/upb/upb/upb.h +157 -151
- data/third_party/upb/upb/upb.hpp +31 -28
- data/third_party/upb/upb/upb_internal.h +21 -11
- data/third_party/xxhash/xxhash.h +607 -352
- 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 +505 -221
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -195
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -119
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -95
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -189
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -53
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -83
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -62
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -138
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- 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/pollset_custom.cc +0 -105
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -152
- data/src/core/lib/iomgr/tcp_custom.cc +0 -377
- data/src/core/lib/iomgr/tcp_custom.h +0 -86
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -467
- data/src/core/lib/iomgr/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -171
- data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/slice_intern.cc +0 -367
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/slice/static_slice.cc +0 -529
- data/src/core/lib/slice/static_slice.h +0 -331
- data/src/core/lib/surface/init_secure.cc +0 -103
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -94
- data/src/core/lib/transport/static_metadata.cc +0 -1117
- data/src/core/lib/transport/static_metadata.h +0 -340
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
@@ -26,6 +26,7 @@
|
|
26
26
|
#include <stdlib.h>
|
27
27
|
#include <string.h>
|
28
28
|
|
29
|
+
#include <atomic>
|
29
30
|
#include <string>
|
30
31
|
|
31
32
|
#include "absl/strings/str_cat.h"
|
@@ -39,20 +40,21 @@
|
|
39
40
|
#include <grpc/support/string_util.h>
|
40
41
|
|
41
42
|
#include "src/core/lib/channel/channel_stack.h"
|
42
|
-
#include "src/core/lib/
|
43
|
+
#include "src/core/lib/channel/context.h"
|
44
|
+
#include "src/core/lib/compression/compression_internal.h"
|
43
45
|
#include "src/core/lib/debug/stats.h"
|
44
46
|
#include "src/core/lib/gpr/alloc.h"
|
45
47
|
#include "src/core/lib/gpr/string.h"
|
46
48
|
#include "src/core/lib/gpr/time_precise.h"
|
47
49
|
#include "src/core/lib/gpr/useful.h"
|
48
|
-
#include "src/core/lib/gprpp/arena.h"
|
49
50
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
50
51
|
#include "src/core/lib/gprpp/ref_counted.h"
|
51
52
|
#include "src/core/lib/iomgr/timer.h"
|
52
53
|
#include "src/core/lib/profiling/timers.h"
|
54
|
+
#include "src/core/lib/resource_quota/arena.h"
|
55
|
+
#include "src/core/lib/slice/slice_internal.h"
|
53
56
|
#include "src/core/lib/slice/slice_split.h"
|
54
57
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
55
|
-
#include "src/core/lib/slice/slice_utils.h"
|
56
58
|
#include "src/core/lib/surface/api_trace.h"
|
57
59
|
#include "src/core/lib/surface/call_test_only.h"
|
58
60
|
#include "src/core/lib/surface/channel.h"
|
@@ -60,188 +62,335 @@
|
|
60
62
|
#include "src/core/lib/surface/server.h"
|
61
63
|
#include "src/core/lib/surface/validate_metadata.h"
|
62
64
|
#include "src/core/lib/transport/error_utils.h"
|
63
|
-
#include "src/core/lib/transport/metadata.h"
|
64
|
-
#include "src/core/lib/transport/static_metadata.h"
|
65
|
-
#include "src/core/lib/transport/status_metadata.h"
|
66
65
|
#include "src/core/lib/transport/transport.h"
|
67
66
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
67
|
+
grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
|
68
|
+
grpc_core::TraceFlag grpc_compression_trace(false, "compression");
|
69
|
+
|
70
|
+
namespace grpc_core {
|
71
|
+
|
72
|
+
class Call : public CppImplOf<Call, grpc_call> {
|
73
|
+
public:
|
74
|
+
Arena* arena() { return arena_; }
|
75
|
+
bool is_client() const { return is_client_; }
|
76
|
+
|
77
|
+
virtual void ContextSet(grpc_context_index elem, void* value,
|
78
|
+
void (*destroy)(void* value)) = 0;
|
79
|
+
virtual void* ContextGet(grpc_context_index elem) const = 0;
|
80
|
+
virtual bool Completed() = 0;
|
81
|
+
void CancelWithStatus(grpc_status_code status, const char* description);
|
82
|
+
virtual void CancelWithError(grpc_error_handle error) = 0;
|
83
|
+
virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0;
|
84
|
+
virtual char* GetPeer() = 0;
|
85
|
+
virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops,
|
86
|
+
void* notify_tag,
|
87
|
+
bool is_notify_tag_closure) = 0;
|
88
|
+
virtual bool failed_before_recv_message() const = 0;
|
89
|
+
virtual bool is_trailers_only() const = 0;
|
90
|
+
virtual void ExternalRef() = 0;
|
91
|
+
virtual void ExternalUnref() = 0;
|
92
|
+
virtual void InternalRef(const char* reason) = 0;
|
93
|
+
virtual void InternalUnref(const char* reason) = 0;
|
94
|
+
|
95
|
+
virtual grpc_compression_algorithm test_only_compression_algorithm() = 0;
|
96
|
+
virtual uint32_t test_only_message_flags() = 0;
|
97
|
+
virtual uint32_t test_only_encodings_accepted_by_peer() = 0;
|
98
|
+
virtual grpc_compression_algorithm compression_for_level(
|
99
|
+
grpc_compression_level level) = 0;
|
100
|
+
|
101
|
+
// This should return nullptr for the promise stack (and alternative means
|
102
|
+
// for that functionality be invented)
|
103
|
+
virtual grpc_call_stack* call_stack() = 0;
|
104
|
+
|
105
|
+
protected:
|
106
|
+
Call(Arena* arena, bool is_client, Timestamp send_deadline)
|
107
|
+
: arena_(arena), send_deadline_(send_deadline), is_client_(is_client) {
|
108
|
+
GPR_DEBUG_ASSERT(arena_ != nullptr);
|
109
|
+
}
|
110
|
+
~Call() = default;
|
111
|
+
|
112
|
+
struct ParentCall {
|
113
|
+
Mutex child_list_mu;
|
114
|
+
Call* first_child ABSL_GUARDED_BY(child_list_mu) = nullptr;
|
115
|
+
};
|
116
|
+
|
117
|
+
struct ChildCall {
|
118
|
+
explicit ChildCall(Call* parent) : parent(parent) {}
|
119
|
+
Call* parent;
|
120
|
+
/** siblings: children of the same parent form a list, and this list is
|
121
|
+
protected under
|
122
|
+
parent->mu */
|
123
|
+
Call* sibling_next = nullptr;
|
124
|
+
Call* sibling_prev = nullptr;
|
125
|
+
};
|
126
|
+
|
127
|
+
ParentCall* GetOrCreateParentCall();
|
128
|
+
ParentCall* parent_call();
|
129
|
+
|
130
|
+
absl::Status InitParent(Call* parent, uint32_t propagation_mask);
|
131
|
+
void PublishToParent(Call* parent);
|
132
|
+
void MaybeUnpublishFromParent();
|
133
|
+
void PropagateCancellationToChildren();
|
134
|
+
|
135
|
+
Timestamp send_deadline() const { return send_deadline_; }
|
136
|
+
void set_send_deadline(Timestamp send_deadline) {
|
137
|
+
send_deadline_ = send_deadline;
|
138
|
+
}
|
139
|
+
|
140
|
+
private:
|
141
|
+
Arena* const arena_;
|
142
|
+
std::atomic<ParentCall*> parent_call_{nullptr};
|
143
|
+
ChildCall* child_ = nullptr;
|
144
|
+
Timestamp send_deadline_;
|
145
|
+
const bool is_client_;
|
146
|
+
// flag indicating that cancellation is inherited
|
147
|
+
bool cancellation_is_inherited_ = false;
|
148
|
+
};
|
149
|
+
|
150
|
+
class FilterStackCall final : public Call {
|
151
|
+
public:
|
152
|
+
~FilterStackCall() {
|
153
|
+
for (int i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
|
154
|
+
if (context_[i].destroy) {
|
155
|
+
context_[i].destroy(context_[i].value);
|
156
|
+
}
|
157
|
+
}
|
158
|
+
gpr_free(static_cast<void*>(const_cast<char*>(final_info_.error_string)));
|
114
159
|
}
|
115
|
-
|
116
|
-
|
160
|
+
|
161
|
+
bool Completed() override {
|
162
|
+
return gpr_atm_acq_load(&received_final_op_atm_) != 0;
|
117
163
|
}
|
118
|
-
};
|
119
164
|
|
120
|
-
|
121
|
-
|
122
|
-
|
165
|
+
// TODO(ctiller): return absl::StatusOr<SomeSmartPointer<Call>>?
|
166
|
+
static grpc_error_handle Create(grpc_call_create_args* args,
|
167
|
+
grpc_call** out_call);
|
123
168
|
|
124
|
-
|
125
|
-
|
126
|
-
}
|
169
|
+
static Call* FromTopElem(grpc_call_element* elem) {
|
170
|
+
return FromCallStack(grpc_call_stack_from_top_element(elem));
|
171
|
+
}
|
127
172
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
parent->mu */
|
134
|
-
grpc_call* sibling_next = nullptr;
|
135
|
-
grpc_call* sibling_prev = nullptr;
|
136
|
-
};
|
173
|
+
grpc_call_stack* call_stack() override {
|
174
|
+
return reinterpret_cast<grpc_call_stack*>(
|
175
|
+
reinterpret_cast<char*>(this) +
|
176
|
+
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(*this)));
|
177
|
+
}
|
137
178
|
|
138
|
-
|
139
|
-
|
179
|
+
grpc_call_element* call_elem(size_t idx) {
|
180
|
+
return grpc_call_stack_element(call_stack(), idx);
|
181
|
+
}
|
140
182
|
|
141
|
-
|
142
|
-
grpc_call(grpc_core::Arena* arena, const grpc_call_create_args& args)
|
143
|
-
: arena(arena),
|
144
|
-
cq(args.cq),
|
145
|
-
channel(args.channel),
|
146
|
-
is_client(args.server_transport_data == nullptr),
|
147
|
-
stream_op_payload(context) {}
|
183
|
+
CallCombiner* call_combiner() { return &call_combiner_; }
|
148
184
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
185
|
+
void CancelWithError(grpc_error_handle error) override;
|
186
|
+
void SetCompletionQueue(grpc_completion_queue* cq) override;
|
187
|
+
char* GetPeer() override;
|
188
|
+
grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
|
189
|
+
bool is_notify_tag_closure) override;
|
190
|
+
void ExternalRef() override { ext_ref_.Ref(); }
|
191
|
+
void ExternalUnref() override;
|
192
|
+
void InternalRef(const char* reason) override {
|
193
|
+
GRPC_CALL_STACK_REF(call_stack(), reason);
|
156
194
|
}
|
195
|
+
void InternalUnref(const char* reason) override {
|
196
|
+
GRPC_CALL_STACK_UNREF(call_stack(), reason);
|
197
|
+
}
|
198
|
+
|
199
|
+
void ContextSet(grpc_context_index elem, void* value,
|
200
|
+
void (*destroy)(void* value)) override;
|
201
|
+
void* ContextGet(grpc_context_index elem) const override {
|
202
|
+
return context_[elem].value;
|
203
|
+
}
|
204
|
+
|
205
|
+
grpc_compression_algorithm compression_for_level(
|
206
|
+
grpc_compression_level level) override {
|
207
|
+
return encodings_accepted_by_peer_.CompressionAlgorithmForLevel(level);
|
208
|
+
}
|
209
|
+
|
210
|
+
bool is_trailers_only() const override {
|
211
|
+
bool result = is_trailers_only_;
|
212
|
+
GPR_DEBUG_ASSERT(!result || recv_initial_metadata_.TransportSize() == 0);
|
213
|
+
return result;
|
214
|
+
}
|
215
|
+
|
216
|
+
bool failed_before_recv_message() const override {
|
217
|
+
return call_failed_before_recv_message_;
|
218
|
+
}
|
219
|
+
|
220
|
+
grpc_compression_algorithm test_only_compression_algorithm() override {
|
221
|
+
return incoming_compression_algorithm_;
|
222
|
+
}
|
223
|
+
|
224
|
+
uint32_t test_only_message_flags() override {
|
225
|
+
return test_only_last_message_flags_;
|
226
|
+
}
|
227
|
+
|
228
|
+
uint32_t test_only_encodings_accepted_by_peer() override {
|
229
|
+
return encodings_accepted_by_peer_.ToLegacyBitmask();
|
230
|
+
}
|
231
|
+
|
232
|
+
static size_t InitialSizeEstimate() {
|
233
|
+
return sizeof(FilterStackCall) +
|
234
|
+
sizeof(BatchControl) * kMaxConcurrentBatches;
|
235
|
+
}
|
236
|
+
|
237
|
+
private:
|
238
|
+
// The maximum number of concurrent batches possible.
|
239
|
+
// Based upon the maximum number of individually queueable ops in the batch
|
240
|
+
// api:
|
241
|
+
// - initial metadata send
|
242
|
+
// - message send
|
243
|
+
// - status/close send (depending on client/server)
|
244
|
+
// - initial metadata recv
|
245
|
+
// - message recv
|
246
|
+
// - status/close recv (depending on client/server)
|
247
|
+
static constexpr size_t kMaxConcurrentBatches = 6;
|
248
|
+
|
249
|
+
static constexpr gpr_atm kRecvNone = 0;
|
250
|
+
static constexpr gpr_atm kRecvInitialMetadataFirst = 1;
|
251
|
+
|
252
|
+
struct BatchControl {
|
253
|
+
FilterStackCall* call_ = nullptr;
|
254
|
+
grpc_transport_stream_op_batch op_;
|
255
|
+
/* Share memory for cq_completion and notify_tag as they are never needed
|
256
|
+
simultaneously. Each byte used in this data structure count as six bytes
|
257
|
+
per call, so any savings we can make are worthwhile,
|
258
|
+
|
259
|
+
We use notify_tag to determine whether or not to send notification to the
|
260
|
+
completion queue. Once we've made that determination, we can reuse the
|
261
|
+
memory for cq_completion. */
|
262
|
+
union {
|
263
|
+
grpc_cq_completion cq_completion;
|
264
|
+
struct {
|
265
|
+
/* Any given op indicates completion by either (a) calling a closure or
|
266
|
+
(b) sending a notification on the call's completion queue. If
|
267
|
+
\a is_closure is true, \a tag indicates a closure to be invoked;
|
268
|
+
otherwise, \a tag indicates the tag to be used in the notification to
|
269
|
+
be sent to the completion queue. */
|
270
|
+
void* tag;
|
271
|
+
bool is_closure;
|
272
|
+
} notify_tag;
|
273
|
+
} completion_data_;
|
274
|
+
grpc_closure start_batch_;
|
275
|
+
grpc_closure finish_batch_;
|
276
|
+
std::atomic<intptr_t> steps_to_complete_{0};
|
277
|
+
AtomicError batch_error_;
|
278
|
+
void set_num_steps_to_complete(uintptr_t steps) {
|
279
|
+
steps_to_complete_.store(steps, std::memory_order_release);
|
280
|
+
}
|
281
|
+
bool completed_batch_step() {
|
282
|
+
return steps_to_complete_.fetch_sub(1, std::memory_order_acq_rel) == 1;
|
283
|
+
}
|
157
284
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
285
|
+
void PostCompletion();
|
286
|
+
void FinishStep();
|
287
|
+
void ContinueReceivingSlices();
|
288
|
+
void ReceivingSliceReady(grpc_error_handle error);
|
289
|
+
void ProcessDataAfterMetadata();
|
290
|
+
void ReceivingStreamReady(grpc_error_handle error);
|
291
|
+
void ValidateFilteredMetadata();
|
292
|
+
void ReceivingInitialMetadataReady(grpc_error_handle error);
|
293
|
+
void ReceivingTrailingMetadataReady(grpc_error_handle error);
|
294
|
+
void FinishBatch(grpc_error_handle error);
|
295
|
+
};
|
296
|
+
|
297
|
+
FilterStackCall(Arena* arena, const grpc_call_create_args& args)
|
298
|
+
: Call(arena, args.server_transport_data == nullptr, args.send_deadline),
|
299
|
+
cq_(args.cq),
|
300
|
+
channel_(args.channel),
|
301
|
+
stream_op_payload_(context_) {}
|
302
|
+
|
303
|
+
static void ReleaseCall(void* call, grpc_error_handle);
|
304
|
+
static void DestroyCall(void* call, grpc_error_handle);
|
305
|
+
|
306
|
+
static FilterStackCall* FromCallStack(grpc_call_stack* call_stack) {
|
307
|
+
return reinterpret_cast<FilterStackCall*>(
|
308
|
+
reinterpret_cast<char*>(call_stack) -
|
309
|
+
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)));
|
310
|
+
}
|
311
|
+
|
312
|
+
void ExecuteBatch(grpc_transport_stream_op_batch* batch,
|
313
|
+
grpc_closure* start_batch_closure);
|
314
|
+
void SetFinalStatus(grpc_error_handle error);
|
315
|
+
BatchControl* ReuseOrAllocateBatchControl(const grpc_op* ops);
|
316
|
+
void HandleCompressionAlgorithmDisabled(
|
317
|
+
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
|
318
|
+
void HandleCompressionAlgorithmNotAccepted(
|
319
|
+
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
|
320
|
+
bool PrepareApplicationMetadata(size_t count, grpc_metadata* metadata,
|
321
|
+
bool is_trailing);
|
322
|
+
void PublishAppMetadata(grpc_metadata_batch* b, bool is_trailing);
|
323
|
+
void RecvInitialFilter(grpc_metadata_batch* b);
|
324
|
+
void RecvTrailingFilter(grpc_metadata_batch* b,
|
325
|
+
grpc_error_handle batch_error);
|
326
|
+
|
327
|
+
RefCount ext_ref_;
|
328
|
+
CallCombiner call_combiner_;
|
329
|
+
grpc_completion_queue* cq_;
|
330
|
+
grpc_polling_entity pollent_;
|
331
|
+
grpc_channel* channel_;
|
332
|
+
gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
|
167
333
|
|
168
|
-
/* client or server call */
|
169
|
-
bool is_client;
|
170
334
|
/** has grpc_call_unref been called */
|
171
|
-
bool
|
172
|
-
/** flag indicating that cancellation is inherited */
|
173
|
-
bool cancellation_is_inherited = false;
|
335
|
+
bool destroy_called_ = false;
|
174
336
|
// Trailers-only response status
|
175
|
-
bool
|
337
|
+
bool is_trailers_only_ = false;
|
176
338
|
/** which ops are in-flight */
|
177
|
-
bool
|
178
|
-
bool
|
179
|
-
bool
|
180
|
-
bool
|
181
|
-
bool
|
182
|
-
bool
|
183
|
-
gpr_atm
|
184
|
-
gpr_atm
|
185
|
-
|
186
|
-
|
187
|
-
grpc_transport_stream_op_batch_payload
|
339
|
+
bool sent_initial_metadata_ = false;
|
340
|
+
bool sending_message_ = false;
|
341
|
+
bool sent_final_op_ = false;
|
342
|
+
bool received_initial_metadata_ = false;
|
343
|
+
bool receiving_message_ = false;
|
344
|
+
bool requested_final_op_ = false;
|
345
|
+
gpr_atm any_ops_sent_atm_ = 0;
|
346
|
+
gpr_atm received_final_op_atm_ = 0;
|
347
|
+
|
348
|
+
BatchControl* active_batches_[kMaxConcurrentBatches] = {};
|
349
|
+
grpc_transport_stream_op_batch_payload stream_op_payload_;
|
188
350
|
|
189
351
|
/* first idx: is_receiving, second idx: is_trailing */
|
190
|
-
grpc_metadata_batch
|
191
|
-
grpc_metadata_batch
|
192
|
-
grpc_metadata_batch
|
193
|
-
grpc_metadata_batch
|
352
|
+
grpc_metadata_batch send_initial_metadata_{arena()};
|
353
|
+
grpc_metadata_batch send_trailing_metadata_{arena()};
|
354
|
+
grpc_metadata_batch recv_initial_metadata_{arena()};
|
355
|
+
grpc_metadata_batch recv_trailing_metadata_{arena()};
|
194
356
|
|
195
357
|
/* Buffered read metadata waiting to be returned to the application.
|
196
358
|
Element 0 is initial metadata, element 1 is trailing metadata. */
|
197
|
-
grpc_metadata_array*
|
198
|
-
|
199
|
-
grpc_metadata compression_md;
|
359
|
+
grpc_metadata_array* buffered_metadata_[2] = {};
|
200
360
|
|
201
361
|
// A char* indicating the peer name.
|
202
|
-
gpr_atm
|
362
|
+
gpr_atm peer_string_ = 0;
|
203
363
|
|
204
364
|
/* Call data useful used for reporting. Only valid after the call has
|
205
365
|
* completed */
|
206
|
-
grpc_call_final_info
|
366
|
+
grpc_call_final_info final_info_;
|
207
367
|
|
208
368
|
/* Compression algorithm for *incoming* data */
|
209
|
-
|
210
|
-
|
211
|
-
/* Stream compression algorithm for *incoming* data */
|
212
|
-
grpc_stream_compression_algorithm incoming_stream_compression_algorithm =
|
213
|
-
GRPC_STREAM_COMPRESS_NONE;
|
369
|
+
grpc_compression_algorithm incoming_compression_algorithm_ =
|
370
|
+
GRPC_COMPRESS_NONE;
|
214
371
|
/* Supported encodings (compression algorithms), a bitset.
|
215
372
|
* Always support no compression. */
|
216
|
-
|
217
|
-
/* Supported stream encodings (stream compression algorithms), a bitset */
|
218
|
-
uint32_t stream_encodings_accepted_by_peer = 0;
|
373
|
+
CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
|
219
374
|
|
220
375
|
/* Contexts for various subsystems (security, tracing, ...). */
|
221
|
-
grpc_call_context_element
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
grpc_slice receiving_slice = grpc_empty_slice();
|
235
|
-
grpc_closure receiving_slice_ready;
|
236
|
-
grpc_closure receiving_stream_ready;
|
237
|
-
grpc_closure receiving_initial_metadata_ready;
|
238
|
-
grpc_closure receiving_trailing_metadata_ready;
|
239
|
-
uint32_t test_only_last_message_flags = 0;
|
376
|
+
grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
|
377
|
+
|
378
|
+
ManualConstructor<SliceBufferByteStream> sending_stream_;
|
379
|
+
|
380
|
+
OrphanablePtr<ByteStream> receiving_stream_;
|
381
|
+
bool call_failed_before_recv_message_ = false;
|
382
|
+
grpc_byte_buffer** receiving_buffer_ = nullptr;
|
383
|
+
grpc_slice receiving_slice_ = grpc_empty_slice();
|
384
|
+
grpc_closure receiving_slice_ready_;
|
385
|
+
grpc_closure receiving_stream_ready_;
|
386
|
+
grpc_closure receiving_initial_metadata_ready_;
|
387
|
+
grpc_closure receiving_trailing_metadata_ready_;
|
388
|
+
uint32_t test_only_last_message_flags_ = 0;
|
240
389
|
// Status about operation of call
|
241
|
-
bool
|
242
|
-
gpr_atm
|
390
|
+
bool sent_server_trailing_metadata_ = false;
|
391
|
+
gpr_atm cancelled_with_error_ = 0;
|
243
392
|
|
244
|
-
grpc_closure
|
393
|
+
grpc_closure release_call_;
|
245
394
|
|
246
395
|
union {
|
247
396
|
struct {
|
@@ -252,10 +401,10 @@ struct grpc_call {
|
|
252
401
|
struct {
|
253
402
|
int* cancelled;
|
254
403
|
// backpointer to owning server if this is a server side call.
|
255
|
-
|
404
|
+
Server* core_server;
|
256
405
|
} server;
|
257
|
-
}
|
258
|
-
AtomicError
|
406
|
+
} final_op_;
|
407
|
+
AtomicError status_error_;
|
259
408
|
|
260
409
|
/* recv_state can contain one of the following values:
|
261
410
|
RECV_NONE : : no initial metadata and messages received
|
@@ -273,226 +422,178 @@ struct grpc_call {
|
|
273
422
|
|
274
423
|
For 1, 4: See receiving_initial_metadata_ready() function
|
275
424
|
For 2, 3: See receiving_stream_ready() function */
|
276
|
-
gpr_atm
|
425
|
+
gpr_atm recv_state_ = 0;
|
277
426
|
};
|
278
427
|
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
#define CALL_STACK_FROM_CALL(call) \
|
283
|
-
(grpc_call_stack*)((char*)(call) + \
|
284
|
-
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
|
285
|
-
#define CALL_FROM_CALL_STACK(call_stack) \
|
286
|
-
(grpc_call*)(((char*)(call_stack)) - \
|
287
|
-
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
|
288
|
-
|
289
|
-
#define CALL_ELEM_FROM_CALL(call, idx) \
|
290
|
-
grpc_call_stack_element(CALL_STACK_FROM_CALL(call), idx)
|
291
|
-
#define CALL_FROM_TOP_ELEM(top_elem) \
|
292
|
-
CALL_FROM_CALL_STACK(grpc_call_stack_from_top_element(top_elem))
|
293
|
-
|
294
|
-
static void execute_batch(grpc_call* call,
|
295
|
-
grpc_transport_stream_op_batch* batch,
|
296
|
-
grpc_closure* start_batch_closure);
|
297
|
-
|
298
|
-
static void cancel_with_status(grpc_call* c, grpc_status_code status,
|
299
|
-
const char* description);
|
300
|
-
static void cancel_with_error(grpc_call* c, grpc_error_handle error);
|
301
|
-
static void destroy_call(void* call_stack, grpc_error_handle error);
|
302
|
-
static void receiving_slice_ready(void* bctlp, grpc_error_handle error);
|
303
|
-
static void set_final_status(grpc_call* call, grpc_error_handle error);
|
304
|
-
static void process_data_after_md(batch_control* bctl);
|
305
|
-
static void post_batch_completion(batch_control* bctl);
|
306
|
-
|
307
|
-
static void add_init_error(grpc_error_handle* composite,
|
308
|
-
grpc_error_handle new_err) {
|
309
|
-
if (new_err == GRPC_ERROR_NONE) return;
|
310
|
-
if (*composite == GRPC_ERROR_NONE) {
|
311
|
-
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
|
312
|
-
}
|
313
|
-
*composite = grpc_error_add_child(*composite, new_err);
|
314
|
-
}
|
315
|
-
|
316
|
-
void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
|
317
|
-
return call->arena->Alloc(size);
|
318
|
-
}
|
319
|
-
|
320
|
-
static parent_call* get_or_create_parent_call(grpc_call* call) {
|
321
|
-
parent_call* p =
|
322
|
-
reinterpret_cast<parent_call*>(gpr_atm_acq_load(&call->parent_call_atm));
|
428
|
+
Call::ParentCall* Call::GetOrCreateParentCall() {
|
429
|
+
ParentCall* p = parent_call_.load(std::memory_order_acquire);
|
323
430
|
if (p == nullptr) {
|
324
|
-
p =
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
p
|
330
|
-
|
431
|
+
p = arena_->New<ParentCall>();
|
432
|
+
ParentCall* expected = nullptr;
|
433
|
+
if (!parent_call_.compare_exchange_strong(expected, p,
|
434
|
+
std::memory_order_release,
|
435
|
+
std::memory_order_relaxed)) {
|
436
|
+
p->~ParentCall();
|
437
|
+
p = expected;
|
331
438
|
}
|
332
439
|
}
|
333
440
|
return p;
|
334
441
|
}
|
335
442
|
|
336
|
-
|
337
|
-
return
|
338
|
-
gpr_atm_acq_load(&call->parent_call_atm));
|
443
|
+
Call::ParentCall* Call::parent_call() {
|
444
|
+
return parent_call_.load(std::memory_order_acquire);
|
339
445
|
}
|
340
446
|
|
341
|
-
|
342
|
-
|
343
|
-
|
447
|
+
absl::Status Call::InitParent(Call* parent, uint32_t propagation_mask) {
|
448
|
+
child_ = arena()->New<ChildCall>(parent);
|
449
|
+
|
450
|
+
parent->InternalRef("child");
|
451
|
+
GPR_ASSERT(is_client_);
|
452
|
+
GPR_ASSERT(!parent->is_client_);
|
453
|
+
|
454
|
+
if (propagation_mask & GRPC_PROPAGATE_DEADLINE) {
|
455
|
+
send_deadline_ = std::min(send_deadline_, parent->send_deadline_);
|
456
|
+
}
|
457
|
+
/* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
|
458
|
+
* GRPC_PROPAGATE_STATS_CONTEXT */
|
459
|
+
/* TODO(ctiller): This should change to use the appropriate census start_op
|
460
|
+
* call. */
|
461
|
+
if (propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
|
462
|
+
if (0 == (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
|
463
|
+
return absl::UnknownError(
|
464
|
+
"Census tracing propagation requested without Census context "
|
465
|
+
"propagation");
|
466
|
+
}
|
467
|
+
ContextSet(GRPC_CONTEXT_TRACING, parent->ContextGet(GRPC_CONTEXT_TRACING),
|
468
|
+
nullptr);
|
469
|
+
} else if (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
|
470
|
+
return absl::UnknownError(
|
471
|
+
"Census context propagation requested without Census tracing "
|
472
|
+
"propagation");
|
473
|
+
}
|
474
|
+
if (propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
|
475
|
+
cancellation_is_inherited_ = true;
|
476
|
+
}
|
477
|
+
return absl::OkStatus();
|
478
|
+
}
|
479
|
+
|
480
|
+
void Call::PublishToParent(Call* parent) {
|
481
|
+
ChildCall* cc = child_;
|
482
|
+
ParentCall* pc = parent->GetOrCreateParentCall();
|
483
|
+
MutexLock lock(&pc->child_list_mu);
|
484
|
+
if (pc->first_child == nullptr) {
|
485
|
+
pc->first_child = this;
|
486
|
+
cc->sibling_next = cc->sibling_prev = this;
|
487
|
+
} else {
|
488
|
+
cc->sibling_next = pc->first_child;
|
489
|
+
cc->sibling_prev = pc->first_child->child_->sibling_prev;
|
490
|
+
cc->sibling_next->child_->sibling_prev =
|
491
|
+
cc->sibling_prev->child_->sibling_next = this;
|
492
|
+
}
|
493
|
+
if (parent->Completed()) {
|
494
|
+
CancelWithError(GRPC_ERROR_CANCELLED);
|
495
|
+
}
|
344
496
|
}
|
345
497
|
|
346
|
-
grpc_error_handle
|
347
|
-
|
498
|
+
grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
|
499
|
+
grpc_call** out_call) {
|
348
500
|
GPR_TIMER_SCOPE("grpc_call_create", 0);
|
349
501
|
|
350
502
|
GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
|
351
503
|
|
352
|
-
|
353
|
-
|
504
|
+
auto add_init_error = [](grpc_error_handle* composite,
|
505
|
+
grpc_error_handle new_err) {
|
506
|
+
if (new_err == GRPC_ERROR_NONE) return;
|
507
|
+
if (*composite == GRPC_ERROR_NONE) {
|
508
|
+
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
|
509
|
+
}
|
510
|
+
*composite = grpc_error_add_child(*composite, new_err);
|
511
|
+
};
|
512
|
+
|
513
|
+
Arena* arena;
|
514
|
+
FilterStackCall* call;
|
354
515
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
355
516
|
grpc_channel_stack* channel_stack =
|
356
517
|
grpc_channel_get_channel_stack(args->channel);
|
357
518
|
size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
|
358
519
|
GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
|
359
|
-
size_t call_and_stack_size =
|
360
|
-
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
|
361
|
-
channel_stack->call_stack_size;
|
362
520
|
size_t call_alloc_size =
|
363
|
-
|
521
|
+
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)) +
|
522
|
+
channel_stack->call_stack_size;
|
364
523
|
|
365
|
-
std::pair<
|
366
|
-
|
524
|
+
std::pair<Arena*, void*> arena_with_call = Arena::CreateWithAlloc(
|
525
|
+
initial_size, call_alloc_size, &*args->channel->allocator);
|
367
526
|
arena = arena_with_call.first;
|
368
|
-
call = new (arena_with_call.second)
|
369
|
-
|
527
|
+
call = new (arena_with_call.second) FilterStackCall(arena, *args);
|
528
|
+
GPR_DEBUG_ASSERT(FromC(call->c_ptr()) == call);
|
529
|
+
GPR_DEBUG_ASSERT(FromCallStack(call->call_stack()) == call);
|
530
|
+
*out_call = call->c_ptr();
|
370
531
|
grpc_slice path = grpc_empty_slice();
|
371
|
-
if (call->is_client) {
|
372
|
-
call->
|
373
|
-
call->
|
374
|
-
call->
|
532
|
+
if (call->is_client()) {
|
533
|
+
call->final_op_.client.status_details = nullptr;
|
534
|
+
call->final_op_.client.status = nullptr;
|
535
|
+
call->final_op_.client.error_string = nullptr;
|
375
536
|
GRPC_STATS_INC_CLIENT_CALLS_CREATED();
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
path = grpc_slice_ref_internal(
|
383
|
-
GRPC_MDVALUE(args->add_initial_metadata[i]));
|
384
|
-
}
|
537
|
+
path = grpc_slice_ref_internal(args->path->c_slice());
|
538
|
+
call->send_initial_metadata_.Set(HttpPathMetadata(),
|
539
|
+
std::move(*args->path));
|
540
|
+
if (args->authority.has_value()) {
|
541
|
+
call->send_initial_metadata_.Set(HttpAuthorityMetadata(),
|
542
|
+
std::move(*args->authority));
|
385
543
|
}
|
386
|
-
call->send_extra_metadata_count =
|
387
|
-
static_cast<int>(args->add_initial_metadata_count);
|
388
544
|
} else {
|
389
545
|
GRPC_STATS_INC_SERVER_CALLS_CREATED();
|
390
|
-
call->
|
391
|
-
call->
|
392
|
-
GPR_ASSERT(args->add_initial_metadata_count == 0);
|
393
|
-
call->send_extra_metadata_count = 0;
|
546
|
+
call->final_op_.server.cancelled = nullptr;
|
547
|
+
call->final_op_.server.core_server = args->server;
|
394
548
|
}
|
395
549
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
call->child = new (reinterpret_cast<char*>(arena_with_call.second) +
|
401
|
-
call_and_stack_size) child_call(args->parent);
|
402
|
-
|
403
|
-
GRPC_CALL_INTERNAL_REF(args->parent, "child");
|
404
|
-
GPR_ASSERT(call->is_client);
|
405
|
-
GPR_ASSERT(!args->parent->is_client);
|
406
|
-
|
407
|
-
if (args->propagation_mask & GRPC_PROPAGATE_DEADLINE) {
|
408
|
-
send_deadline = std::min(send_deadline, args->parent->send_deadline);
|
409
|
-
}
|
410
|
-
/* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
|
411
|
-
* GRPC_PROPAGATE_STATS_CONTEXT */
|
412
|
-
/* TODO(ctiller): This should change to use the appropriate census start_op
|
413
|
-
* call. */
|
414
|
-
if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
|
415
|
-
if (0 == (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
|
416
|
-
add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
417
|
-
"Census tracing propagation requested "
|
418
|
-
"without Census context propagation"));
|
419
|
-
}
|
420
|
-
grpc_call_context_set(call, GRPC_CONTEXT_TRACING,
|
421
|
-
args->parent->context[GRPC_CONTEXT_TRACING].value,
|
422
|
-
nullptr);
|
423
|
-
} else if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
|
424
|
-
add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
425
|
-
"Census context propagation requested "
|
426
|
-
"without Census tracing propagation"));
|
427
|
-
}
|
428
|
-
if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
|
429
|
-
call->cancellation_is_inherited = true;
|
430
|
-
if (gpr_atm_acq_load(&args->parent->received_final_op_atm)) {
|
431
|
-
immediately_cancel = true;
|
432
|
-
}
|
433
|
-
}
|
550
|
+
Call* parent = Call::FromC(args->parent);
|
551
|
+
if (parent != nullptr) {
|
552
|
+
add_init_error(&error, absl_status_to_grpc_error(call->InitParent(
|
553
|
+
parent, args->propagation_mask)));
|
434
554
|
}
|
435
|
-
call->send_deadline = send_deadline;
|
436
555
|
/* initial refcount dropped by grpc_call_unref */
|
437
|
-
grpc_call_element_args call_args = {
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
call->arena,
|
444
|
-
&call->call_combiner};
|
445
|
-
add_init_error(&error, grpc_call_stack_init(channel_stack, 1, destroy_call,
|
556
|
+
grpc_call_element_args call_args = {
|
557
|
+
call->call_stack(), args->server_transport_data,
|
558
|
+
call->context_, path,
|
559
|
+
call->start_time_, call->send_deadline(),
|
560
|
+
call->arena(), &call->call_combiner_};
|
561
|
+
add_init_error(&error, grpc_call_stack_init(channel_stack, 1, DestroyCall,
|
446
562
|
call, &call_args));
|
447
563
|
// Publish this call to parent only after the call stack has been initialized.
|
448
|
-
if (
|
449
|
-
|
450
|
-
parent_call* pc = get_or_create_parent_call(args->parent);
|
451
|
-
gpr_mu_lock(&pc->child_list_mu);
|
452
|
-
if (pc->first_child == nullptr) {
|
453
|
-
pc->first_child = call;
|
454
|
-
cc->sibling_next = cc->sibling_prev = call;
|
455
|
-
} else {
|
456
|
-
cc->sibling_next = pc->first_child;
|
457
|
-
cc->sibling_prev = pc->first_child->child->sibling_prev;
|
458
|
-
cc->sibling_next->child->sibling_prev =
|
459
|
-
cc->sibling_prev->child->sibling_next = call;
|
460
|
-
}
|
461
|
-
gpr_mu_unlock(&pc->child_list_mu);
|
564
|
+
if (parent != nullptr) {
|
565
|
+
call->PublishToParent(parent);
|
462
566
|
}
|
463
567
|
|
464
568
|
if (error != GRPC_ERROR_NONE) {
|
465
|
-
|
466
|
-
}
|
467
|
-
if (immediately_cancel) {
|
468
|
-
cancel_with_error(call, GRPC_ERROR_CANCELLED);
|
569
|
+
call->CancelWithError(GRPC_ERROR_REF(error));
|
469
570
|
}
|
470
571
|
if (args->cq != nullptr) {
|
471
572
|
GPR_ASSERT(args->pollset_set_alternative == nullptr &&
|
472
573
|
"Only one of 'cq' and 'pollset_set_alternative' should be "
|
473
574
|
"non-nullptr.");
|
474
575
|
GRPC_CQ_INTERNAL_REF(args->cq, "bind");
|
475
|
-
call->
|
576
|
+
call->pollent_ =
|
476
577
|
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
|
477
578
|
}
|
478
579
|
if (args->pollset_set_alternative != nullptr) {
|
479
|
-
call->
|
580
|
+
call->pollent_ = grpc_polling_entity_create_from_pollset_set(
|
480
581
|
args->pollset_set_alternative);
|
481
582
|
}
|
482
|
-
if (!grpc_polling_entity_is_empty(&call->
|
483
|
-
grpc_call_stack_set_pollset_or_pollset_set(
|
484
|
-
&call->
|
583
|
+
if (!grpc_polling_entity_is_empty(&call->pollent_)) {
|
584
|
+
grpc_call_stack_set_pollset_or_pollset_set(call->call_stack(),
|
585
|
+
&call->pollent_);
|
485
586
|
}
|
486
587
|
|
487
|
-
if (call->is_client) {
|
488
|
-
|
489
|
-
grpc_channel_get_channelz_node(call->
|
588
|
+
if (call->is_client()) {
|
589
|
+
channelz::ChannelNode* channelz_channel =
|
590
|
+
grpc_channel_get_channelz_node(call->channel_);
|
490
591
|
if (channelz_channel != nullptr) {
|
491
592
|
channelz_channel->RecordCallStarted();
|
492
593
|
}
|
493
|
-
} else if (call->
|
494
|
-
|
495
|
-
call->
|
594
|
+
} else if (call->final_op_.server.core_server != nullptr) {
|
595
|
+
channelz::ServerNode* channelz_node =
|
596
|
+
call->final_op_.server.core_server->channelz_node();
|
496
597
|
if (channelz_node != nullptr) {
|
497
598
|
channelz_node->RecordCallStarted();
|
498
599
|
}
|
@@ -503,269 +604,211 @@ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
|
|
503
604
|
return error;
|
504
605
|
}
|
505
606
|
|
506
|
-
void
|
507
|
-
grpc_completion_queue* cq) {
|
607
|
+
void FilterStackCall::SetCompletionQueue(grpc_completion_queue* cq) {
|
508
608
|
GPR_ASSERT(cq);
|
509
609
|
|
510
|
-
if (grpc_polling_entity_pollset_set(&
|
610
|
+
if (grpc_polling_entity_pollset_set(&pollent_) != nullptr) {
|
511
611
|
gpr_log(GPR_ERROR, "A pollset_set is already registered for this call.");
|
512
612
|
abort();
|
513
613
|
}
|
514
|
-
|
614
|
+
cq_ = cq;
|
515
615
|
GRPC_CQ_INTERNAL_REF(cq, "bind");
|
516
|
-
|
517
|
-
grpc_call_stack_set_pollset_or_pollset_set(
|
518
|
-
&call->pollent);
|
519
|
-
}
|
520
|
-
|
521
|
-
#ifndef NDEBUG
|
522
|
-
#define REF_REASON reason
|
523
|
-
#define REF_ARG , const char* reason
|
524
|
-
#else
|
525
|
-
#define REF_REASON ""
|
526
|
-
#define REF_ARG
|
527
|
-
#endif
|
528
|
-
void grpc_call_internal_ref(grpc_call* c REF_ARG) {
|
529
|
-
GRPC_CALL_STACK_REF(CALL_STACK_FROM_CALL(c), REF_REASON);
|
530
|
-
}
|
531
|
-
void grpc_call_internal_unref(grpc_call* c REF_ARG) {
|
532
|
-
GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
|
616
|
+
pollent_ = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
|
617
|
+
grpc_call_stack_set_pollset_or_pollset_set(call_stack(), &pollent_);
|
533
618
|
}
|
534
619
|
|
535
|
-
|
536
|
-
|
537
|
-
grpc_channel* channel = c->
|
538
|
-
|
539
|
-
c->~
|
620
|
+
void FilterStackCall::ReleaseCall(void* call, grpc_error_handle /*error*/) {
|
621
|
+
auto* c = static_cast<FilterStackCall*>(call);
|
622
|
+
grpc_channel* channel = c->channel_;
|
623
|
+
Arena* arena = c->arena();
|
624
|
+
c->~FilterStackCall();
|
540
625
|
grpc_channel_update_call_size_estimate(channel, arena->Destroy());
|
541
626
|
GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
|
542
627
|
}
|
543
628
|
|
544
|
-
|
629
|
+
void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
|
545
630
|
GPR_TIMER_SCOPE("destroy_call", 0);
|
546
|
-
|
547
|
-
c->
|
548
|
-
c->
|
549
|
-
c->
|
550
|
-
|
631
|
+
auto* c = static_cast<FilterStackCall*>(call);
|
632
|
+
c->recv_initial_metadata_.Clear();
|
633
|
+
c->recv_trailing_metadata_.Clear();
|
634
|
+
c->receiving_stream_.reset();
|
635
|
+
ParentCall* pc = c->parent_call();
|
551
636
|
if (pc != nullptr) {
|
552
|
-
pc->~
|
553
|
-
}
|
554
|
-
for (int i = 0; i < c->send_extra_metadata_count; i++) {
|
555
|
-
GRPC_MDELEM_UNREF(c->send_extra_metadata[i].md);
|
637
|
+
pc->~ParentCall();
|
556
638
|
}
|
557
|
-
if (c->
|
558
|
-
GRPC_CQ_INTERNAL_UNREF(c->
|
639
|
+
if (c->cq_) {
|
640
|
+
GRPC_CQ_INTERNAL_UNREF(c->cq_, "bind");
|
559
641
|
}
|
560
642
|
|
561
|
-
grpc_error_handle status_error = c->
|
562
|
-
grpc_error_get_status(status_error, c->send_deadline,
|
563
|
-
&c->
|
564
|
-
&(c->
|
565
|
-
c->
|
566
|
-
c->
|
567
|
-
gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->
|
568
|
-
grpc_call_stack_destroy(
|
569
|
-
GRPC_CLOSURE_INIT(&c->
|
643
|
+
grpc_error_handle status_error = c->status_error_.get();
|
644
|
+
grpc_error_get_status(status_error, c->send_deadline(),
|
645
|
+
&c->final_info_.final_status, nullptr, nullptr,
|
646
|
+
&(c->final_info_.error_string));
|
647
|
+
c->status_error_.set(GRPC_ERROR_NONE);
|
648
|
+
c->final_info_.stats.latency =
|
649
|
+
gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time_);
|
650
|
+
grpc_call_stack_destroy(c->call_stack(), &c->final_info_,
|
651
|
+
GRPC_CLOSURE_INIT(&c->release_call_, ReleaseCall, c,
|
570
652
|
grpc_schedule_on_exec_ctx));
|
571
653
|
}
|
572
654
|
|
573
|
-
void
|
574
|
-
|
575
|
-
|
576
|
-
if (GPR_LIKELY(!c->ext_ref.Unref())) return;
|
577
|
-
|
578
|
-
GPR_TIMER_SCOPE("grpc_call_unref", 0);
|
655
|
+
void Call::MaybeUnpublishFromParent() {
|
656
|
+
ChildCall* cc = child_;
|
657
|
+
if (cc == nullptr) return;
|
579
658
|
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
|
585
|
-
|
586
|
-
if (cc) {
|
587
|
-
parent_call* pc = get_parent_call(cc->parent);
|
588
|
-
gpr_mu_lock(&pc->child_list_mu);
|
589
|
-
if (c == pc->first_child) {
|
659
|
+
ParentCall* pc = cc->parent->parent_call();
|
660
|
+
{
|
661
|
+
MutexLock lock(&pc->child_list_mu);
|
662
|
+
if (this == pc->first_child) {
|
590
663
|
pc->first_child = cc->sibling_next;
|
591
|
-
if (
|
664
|
+
if (this == pc->first_child) {
|
592
665
|
pc->first_child = nullptr;
|
593
666
|
}
|
594
667
|
}
|
595
|
-
cc->sibling_prev->
|
596
|
-
cc->sibling_next->
|
597
|
-
gpr_mu_unlock(&pc->child_list_mu);
|
598
|
-
GRPC_CALL_INTERNAL_UNREF(cc->parent, "child");
|
668
|
+
cc->sibling_prev->child_->sibling_next = cc->sibling_next;
|
669
|
+
cc->sibling_next->child_->sibling_prev = cc->sibling_prev;
|
599
670
|
}
|
671
|
+
cc->parent->InternalUnref("child");
|
672
|
+
}
|
600
673
|
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
674
|
+
void FilterStackCall::ExternalUnref() {
|
675
|
+
if (GPR_LIKELY(!ext_ref_.Unref())) return;
|
676
|
+
|
677
|
+
GPR_TIMER_SCOPE("grpc_call_unref", 0);
|
678
|
+
|
679
|
+
ApplicationCallbackExecCtx callback_exec_ctx;
|
680
|
+
ExecCtx exec_ctx;
|
681
|
+
|
682
|
+
GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (this));
|
683
|
+
|
684
|
+
MaybeUnpublishFromParent();
|
685
|
+
|
686
|
+
GPR_ASSERT(!destroy_called_);
|
687
|
+
destroy_called_ = true;
|
688
|
+
bool cancel = gpr_atm_acq_load(&any_ops_sent_atm_) != 0 &&
|
689
|
+
gpr_atm_acq_load(&received_final_op_atm_) == 0;
|
605
690
|
if (cancel) {
|
606
|
-
|
691
|
+
CancelWithError(GRPC_ERROR_CANCELLED);
|
607
692
|
} else {
|
608
693
|
// Unset the call combiner cancellation closure. This has the
|
609
694
|
// effect of scheduling the previously set cancellation closure, if
|
610
695
|
// any, so that it can release any internal references it may be
|
611
696
|
// holding to the call stack.
|
612
|
-
|
697
|
+
call_combiner_.SetNotifyOnCancel(nullptr);
|
613
698
|
}
|
614
|
-
|
699
|
+
InternalUnref("destroy");
|
615
700
|
}
|
616
701
|
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
return GRPC_CALL_OK;
|
624
|
-
}
|
625
|
-
|
626
|
-
// This is called via the call combiner to start sending a batch down
|
627
|
-
// the filter stack.
|
628
|
-
static void execute_batch_in_call_combiner(void* arg,
|
629
|
-
grpc_error_handle /*ignored*/) {
|
630
|
-
GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
|
631
|
-
grpc_transport_stream_op_batch* batch =
|
632
|
-
static_cast<grpc_transport_stream_op_batch*>(arg);
|
633
|
-
grpc_call* call = static_cast<grpc_call*>(batch->handler_private.extra_arg);
|
634
|
-
grpc_call_element* elem = CALL_ELEM_FROM_CALL(call, 0);
|
635
|
-
GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
|
636
|
-
elem->filter->start_transport_stream_op_batch(elem, batch);
|
702
|
+
char* FilterStackCall::GetPeer() {
|
703
|
+
char* peer_string = reinterpret_cast<char*>(gpr_atm_acq_load(&peer_string_));
|
704
|
+
if (peer_string != nullptr) return gpr_strdup(peer_string);
|
705
|
+
peer_string = grpc_channel_get_target(channel_);
|
706
|
+
if (peer_string != nullptr) return peer_string;
|
707
|
+
return gpr_strdup("unknown");
|
637
708
|
}
|
638
709
|
|
639
710
|
// start_batch_closure points to a caller-allocated closure to be used
|
640
711
|
// for entering the call combiner.
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
712
|
+
void FilterStackCall::ExecuteBatch(grpc_transport_stream_op_batch* batch,
|
713
|
+
grpc_closure* start_batch_closure) {
|
714
|
+
// This is called via the call combiner to start sending a batch down
|
715
|
+
// the filter stack.
|
716
|
+
auto execute_batch_in_call_combiner = [](void* arg, grpc_error_handle) {
|
717
|
+
GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
|
718
|
+
grpc_transport_stream_op_batch* batch =
|
719
|
+
static_cast<grpc_transport_stream_op_batch*>(arg);
|
720
|
+
auto* call =
|
721
|
+
static_cast<FilterStackCall*>(batch->handler_private.extra_arg);
|
722
|
+
grpc_call_element* elem = call->call_elem(0);
|
723
|
+
GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
|
724
|
+
elem->filter->start_transport_stream_op_batch(elem, batch);
|
725
|
+
};
|
726
|
+
batch->handler_private.extra_arg = this;
|
645
727
|
GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch,
|
646
728
|
grpc_schedule_on_exec_ctx);
|
647
|
-
GRPC_CALL_COMBINER_START(
|
729
|
+
GRPC_CALL_COMBINER_START(call_combiner(), start_batch_closure,
|
648
730
|
GRPC_ERROR_NONE, "executing batch");
|
649
731
|
}
|
650
732
|
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
if (peer_string != nullptr) return gpr_strdup(peer_string);
|
655
|
-
peer_string = grpc_channel_get_target(call->channel);
|
656
|
-
if (peer_string != nullptr) return peer_string;
|
657
|
-
return gpr_strdup("unknown");
|
658
|
-
}
|
659
|
-
|
660
|
-
grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
|
661
|
-
return CALL_FROM_TOP_ELEM(surface_element);
|
662
|
-
}
|
663
|
-
|
664
|
-
/*******************************************************************************
|
665
|
-
* CANCELLATION
|
666
|
-
*/
|
667
|
-
|
668
|
-
grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
|
669
|
-
grpc_status_code status,
|
670
|
-
const char* description,
|
671
|
-
void* reserved) {
|
672
|
-
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
673
|
-
grpc_core::ExecCtx exec_ctx;
|
674
|
-
GRPC_API_TRACE(
|
675
|
-
"grpc_call_cancel_with_status("
|
676
|
-
"c=%p, status=%d, description=%s, reserved=%p)",
|
677
|
-
4, (c, (int)status, description, reserved));
|
678
|
-
GPR_ASSERT(reserved == nullptr);
|
679
|
-
cancel_with_status(c, status, description);
|
680
|
-
return GRPC_CALL_OK;
|
681
|
-
}
|
682
|
-
|
683
|
-
struct cancel_state {
|
684
|
-
grpc_call* call;
|
733
|
+
namespace {
|
734
|
+
struct CancelState {
|
735
|
+
FilterStackCall* call;
|
685
736
|
grpc_closure start_batch;
|
686
737
|
grpc_closure finish_batch;
|
687
738
|
};
|
739
|
+
} // namespace
|
740
|
+
|
688
741
|
// The on_complete callback used when sending a cancel_stream batch down
|
689
742
|
// the filter stack. Yields the call combiner when the batch is done.
|
690
743
|
static void done_termination(void* arg, grpc_error_handle /*error*/) {
|
691
|
-
|
692
|
-
GRPC_CALL_COMBINER_STOP(
|
744
|
+
CancelState* state = static_cast<CancelState*>(arg);
|
745
|
+
GRPC_CALL_COMBINER_STOP(state->call->call_combiner(),
|
693
746
|
"on_complete for cancel_stream op");
|
694
|
-
|
695
|
-
|
747
|
+
state->call->InternalUnref("termination");
|
748
|
+
delete state;
|
696
749
|
}
|
697
750
|
|
698
|
-
|
699
|
-
if (!gpr_atm_rel_cas(&
|
751
|
+
void FilterStackCall::CancelWithError(grpc_error_handle error) {
|
752
|
+
if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) {
|
700
753
|
GRPC_ERROR_UNREF(error);
|
701
754
|
return;
|
702
755
|
}
|
703
|
-
|
756
|
+
InternalRef("termination");
|
704
757
|
// Inform the call combiner of the cancellation, so that it can cancel
|
705
758
|
// any in-flight asynchronous actions that may be holding the call
|
706
759
|
// combiner. This ensures that the cancel_stream batch can be sent
|
707
760
|
// down the filter stack in a timely manner.
|
708
|
-
|
709
|
-
|
710
|
-
state->call =
|
761
|
+
call_combiner_.Cancel(GRPC_ERROR_REF(error));
|
762
|
+
CancelState* state = new CancelState;
|
763
|
+
state->call = this;
|
711
764
|
GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
|
712
765
|
grpc_schedule_on_exec_ctx);
|
713
766
|
grpc_transport_stream_op_batch* op =
|
714
767
|
grpc_make_transport_stream_op(&state->finish_batch);
|
715
768
|
op->cancel_stream = true;
|
716
769
|
op->payload->cancel_stream.cancel_error = error;
|
717
|
-
|
718
|
-
}
|
719
|
-
|
720
|
-
void grpc_call_cancel_internal(grpc_call* call) {
|
721
|
-
cancel_with_error(call, GRPC_ERROR_CANCELLED);
|
770
|
+
ExecuteBatch(op, &state->start_batch);
|
722
771
|
}
|
723
772
|
|
724
|
-
|
725
|
-
const char* description) {
|
773
|
+
void Call::CancelWithStatus(grpc_status_code status, const char* description) {
|
726
774
|
// copying 'description' is needed to ensure the grpc_call_cancel_with_status
|
727
775
|
// guarantee that can be short-lived.
|
728
|
-
|
776
|
+
CancelWithError(grpc_error_set_int(
|
729
777
|
grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
|
730
778
|
GRPC_ERROR_STR_GRPC_MESSAGE, description),
|
731
|
-
GRPC_ERROR_INT_GRPC_STATUS, status);
|
732
|
-
}
|
733
|
-
|
734
|
-
static void cancel_with_status(grpc_call* c, grpc_status_code status,
|
735
|
-
const char* description) {
|
736
|
-
cancel_with_error(c, error_from_status(status, description));
|
779
|
+
GRPC_ERROR_INT_GRPC_STATUS, status));
|
737
780
|
}
|
738
781
|
|
739
|
-
|
782
|
+
void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
|
740
783
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
|
741
|
-
gpr_log(GPR_DEBUG, "set_final_status %s",
|
784
|
+
gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR");
|
742
785
|
gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
|
743
786
|
}
|
744
|
-
if (
|
787
|
+
if (is_client()) {
|
745
788
|
std::string status_details;
|
746
|
-
grpc_error_get_status(error,
|
747
|
-
|
748
|
-
|
749
|
-
*
|
789
|
+
grpc_error_get_status(error, send_deadline(), final_op_.client.status,
|
790
|
+
&status_details, nullptr,
|
791
|
+
final_op_.client.error_string);
|
792
|
+
*final_op_.client.status_details =
|
750
793
|
grpc_slice_from_cpp_string(std::move(status_details));
|
751
|
-
|
794
|
+
status_error_.set(error);
|
752
795
|
GRPC_ERROR_UNREF(error);
|
753
|
-
|
754
|
-
grpc_channel_get_channelz_node(
|
796
|
+
channelz::ChannelNode* channelz_channel =
|
797
|
+
grpc_channel_get_channelz_node(channel_);
|
755
798
|
if (channelz_channel != nullptr) {
|
756
|
-
if (*
|
799
|
+
if (*final_op_.client.status != GRPC_STATUS_OK) {
|
757
800
|
channelz_channel->RecordCallFailed();
|
758
801
|
} else {
|
759
802
|
channelz_channel->RecordCallSucceeded();
|
760
803
|
}
|
761
804
|
}
|
762
805
|
} else {
|
763
|
-
*
|
764
|
-
error != GRPC_ERROR_NONE || !
|
765
|
-
|
766
|
-
|
806
|
+
*final_op_.server.cancelled =
|
807
|
+
error != GRPC_ERROR_NONE || !sent_server_trailing_metadata_;
|
808
|
+
channelz::ServerNode* channelz_node =
|
809
|
+
final_op_.server.core_server->channelz_node();
|
767
810
|
if (channelz_node != nullptr) {
|
768
|
-
if (*
|
811
|
+
if (*final_op_.server.cancelled || !status_error_.ok()) {
|
769
812
|
channelz_node->RecordCallFailed();
|
770
813
|
} else {
|
771
814
|
channelz_node->RecordCallSucceeded();
|
@@ -775,333 +818,166 @@ static void set_final_status(grpc_call* call, grpc_error_handle error) {
|
|
775
818
|
}
|
776
819
|
}
|
777
820
|
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
821
|
+
bool FilterStackCall::PrepareApplicationMetadata(size_t count,
|
822
|
+
grpc_metadata* metadata,
|
823
|
+
bool is_trailing) {
|
824
|
+
grpc_metadata_batch* batch =
|
825
|
+
is_trailing ? &send_trailing_metadata_ : &send_initial_metadata_;
|
826
|
+
for (size_t i = 0; i < count; i++) {
|
827
|
+
grpc_metadata* md = &metadata[i];
|
828
|
+
if (!GRPC_LOG_IF_ERROR("validate_metadata",
|
829
|
+
grpc_validate_header_key_is_legal(md->key))) {
|
830
|
+
return false;
|
831
|
+
} else if (!grpc_is_binary_header_internal(md->key) &&
|
832
|
+
!GRPC_LOG_IF_ERROR(
|
833
|
+
"validate_metadata",
|
834
|
+
grpc_validate_header_nonbin_value_is_legal(md->value))) {
|
835
|
+
return false;
|
836
|
+
} else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
|
837
|
+
// HTTP2 hpack encoding has a maximum limit.
|
838
|
+
return false;
|
839
|
+
} else if (grpc_slice_str_cmp(md->key, "content-length") == 0) {
|
840
|
+
// Filter "content-length metadata"
|
841
|
+
continue;
|
842
|
+
}
|
843
|
+
batch->Append(StringViewFromSlice(md->key),
|
844
|
+
Slice(grpc_slice_ref_internal(md->value)),
|
845
|
+
[md](absl::string_view error, const Slice& value) {
|
846
|
+
gpr_log(GPR_DEBUG, "Append error: %s",
|
847
|
+
absl::StrCat("key=", StringViewFromSlice(md->key),
|
848
|
+
" error=", error,
|
849
|
+
" value=", value.as_string_view())
|
850
|
+
.c_str());
|
851
|
+
});
|
852
|
+
}
|
808
853
|
|
809
|
-
|
810
|
-
uint32_t flags;
|
811
|
-
flags = call->test_only_last_message_flags;
|
812
|
-
return flags;
|
854
|
+
return true;
|
813
855
|
}
|
814
856
|
|
815
|
-
|
857
|
+
namespace {
|
858
|
+
class PublishToAppEncoder {
|
859
|
+
public:
|
860
|
+
explicit PublishToAppEncoder(grpc_metadata_array* dest) : dest_(dest) {}
|
816
861
|
|
817
|
-
|
818
|
-
|
819
|
-
uint32_t* encodings_accepted_by_peer,
|
820
|
-
bool stream_encoding) {
|
821
|
-
size_t i;
|
822
|
-
uint32_t algorithm;
|
823
|
-
grpc_slice_buffer accept_encoding_parts;
|
824
|
-
grpc_slice accept_encoding_slice;
|
825
|
-
void* accepted_user_data;
|
826
|
-
|
827
|
-
accepted_user_data =
|
828
|
-
grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
|
829
|
-
if (accepted_user_data != nullptr) {
|
830
|
-
*encodings_accepted_by_peer = static_cast<uint32_t>(
|
831
|
-
reinterpret_cast<uintptr_t>(accepted_user_data) - 1);
|
832
|
-
return;
|
862
|
+
void Encode(const Slice& key, const Slice& value) {
|
863
|
+
Append(key.c_slice(), value.c_slice());
|
833
864
|
}
|
834
865
|
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
&accept_encoding_parts);
|
866
|
+
// Catch anything that is not explicitly handled, and do not publish it to the
|
867
|
+
// application. If new metadata is added to a batch that needs to be
|
868
|
+
// published, it should be called out here.
|
869
|
+
template <typename Which>
|
870
|
+
void Encode(Which, const typename Which::ValueType&) {}
|
841
871
|
|
842
|
-
|
843
|
-
|
844
|
-
int r;
|
845
|
-
grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
|
846
|
-
if (!stream_encoding) {
|
847
|
-
r = grpc_message_compression_algorithm_parse(
|
848
|
-
accept_encoding_entry_slice,
|
849
|
-
reinterpret_cast<grpc_message_compression_algorithm*>(&algorithm));
|
850
|
-
} else {
|
851
|
-
r = grpc_stream_compression_algorithm_parse(
|
852
|
-
accept_encoding_entry_slice,
|
853
|
-
reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
|
854
|
-
}
|
855
|
-
if (r) {
|
856
|
-
grpc_core::SetBit(encodings_accepted_by_peer, algorithm);
|
857
|
-
} else {
|
858
|
-
char* accept_encoding_entry_str =
|
859
|
-
grpc_slice_to_c_string(accept_encoding_entry_slice);
|
860
|
-
gpr_log(GPR_DEBUG,
|
861
|
-
"Unknown entry in accept encoding metadata: '%s'. Ignoring.",
|
862
|
-
accept_encoding_entry_str);
|
863
|
-
gpr_free(accept_encoding_entry_str);
|
864
|
-
}
|
872
|
+
void Encode(UserAgentMetadata, const Slice& slice) {
|
873
|
+
Append(UserAgentMetadata::key(), slice);
|
865
874
|
}
|
866
875
|
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
mdel, destroy_encodings_accepted_by_peer,
|
871
|
-
reinterpret_cast<void*>(
|
872
|
-
static_cast<uintptr_t>(*encodings_accepted_by_peer) + 1));
|
873
|
-
}
|
874
|
-
|
875
|
-
uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
876
|
-
uint32_t encodings_accepted_by_peer;
|
877
|
-
encodings_accepted_by_peer = call->encodings_accepted_by_peer;
|
878
|
-
return encodings_accepted_by_peer;
|
879
|
-
}
|
880
|
-
|
881
|
-
grpc_stream_compression_algorithm
|
882
|
-
grpc_call_test_only_get_incoming_stream_encodings(grpc_call* call) {
|
883
|
-
return call->incoming_stream_compression_algorithm;
|
884
|
-
}
|
885
|
-
|
886
|
-
static grpc_linked_mdelem* linked_from_md(grpc_metadata* md) {
|
887
|
-
return reinterpret_cast<grpc_linked_mdelem*>(&md->internal_data);
|
888
|
-
}
|
889
|
-
|
890
|
-
static grpc_metadata* get_md_elem(grpc_metadata* metadata,
|
891
|
-
grpc_metadata* additional_metadata, int i,
|
892
|
-
int count) {
|
893
|
-
grpc_metadata* res =
|
894
|
-
i < count ? &metadata[i] : &additional_metadata[i - count];
|
895
|
-
GPR_ASSERT(res);
|
896
|
-
return res;
|
897
|
-
}
|
876
|
+
void Encode(HostMetadata, const Slice& slice) {
|
877
|
+
Append(HostMetadata::key(), slice);
|
878
|
+
}
|
898
879
|
|
899
|
-
|
900
|
-
|
901
|
-
int is_trailing,
|
902
|
-
int prepend_extra_metadata,
|
903
|
-
grpc_metadata* additional_metadata,
|
904
|
-
int additional_metadata_count) {
|
905
|
-
int total_count = count + additional_metadata_count;
|
906
|
-
int i;
|
907
|
-
grpc_metadata_batch* batch = is_trailing ? &call->send_trailing_metadata
|
908
|
-
: &call->send_initial_metadata;
|
909
|
-
for (i = 0; i < total_count; i++) {
|
910
|
-
grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
|
911
|
-
grpc_linked_mdelem* l = linked_from_md(md);
|
912
|
-
GPR_ASSERT(sizeof(grpc_linked_mdelem) == sizeof(md->internal_data));
|
913
|
-
if (!GRPC_LOG_IF_ERROR("validate_metadata",
|
914
|
-
grpc_validate_header_key_is_legal(md->key))) {
|
915
|
-
break;
|
916
|
-
} else if (!grpc_is_binary_header_internal(md->key) &&
|
917
|
-
!GRPC_LOG_IF_ERROR(
|
918
|
-
"validate_metadata",
|
919
|
-
grpc_validate_header_nonbin_value_is_legal(md->value))) {
|
920
|
-
break;
|
921
|
-
} else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
|
922
|
-
// HTTP2 hpack encoding has a maximum limit.
|
923
|
-
break;
|
924
|
-
}
|
925
|
-
l->md = grpc_mdelem_from_grpc_metadata(const_cast<grpc_metadata*>(md));
|
880
|
+
void Encode(GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
|
881
|
+
Append(GrpcPreviousRpcAttemptsMetadata::key(), count);
|
926
882
|
}
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
grpc_linked_mdelem* l = linked_from_md(md);
|
931
|
-
GRPC_MDELEM_UNREF(l->md);
|
932
|
-
}
|
933
|
-
return 0;
|
883
|
+
|
884
|
+
void Encode(GrpcRetryPushbackMsMetadata, Duration count) {
|
885
|
+
Append(GrpcRetryPushbackMsMetadata::key(), count.millis());
|
934
886
|
}
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
} else {
|
939
|
-
for (i = 0; i < call->send_extra_metadata_count; i++) {
|
940
|
-
GRPC_LOG_IF_ERROR("prepare_application_metadata",
|
941
|
-
batch->LinkTail(&call->send_extra_metadata[i]));
|
942
|
-
}
|
943
|
-
}
|
887
|
+
|
888
|
+
void Encode(LbTokenMetadata, const Slice& slice) {
|
889
|
+
Append(LbTokenMetadata::key(), slice);
|
944
890
|
}
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
GRPC_MDELEM_UNREF(l->md);
|
951
|
-
}
|
952
|
-
GRPC_LOG_IF_ERROR("prepare_application_metadata", error);
|
891
|
+
|
892
|
+
private:
|
893
|
+
void Append(absl::string_view key, int64_t value) {
|
894
|
+
Append(StaticSlice::FromStaticString(key).c_slice(),
|
895
|
+
Slice::FromInt64(value).c_slice());
|
953
896
|
}
|
954
|
-
call->send_extra_metadata_count = 0;
|
955
897
|
|
956
|
-
|
957
|
-
|
898
|
+
void Append(absl::string_view key, const Slice& value) {
|
899
|
+
Append(StaticSlice::FromStaticString(key).c_slice(), value.c_slice());
|
900
|
+
}
|
958
901
|
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
965
|
-
gpr_log(GPR_ERROR,
|
966
|
-
"Invalid incoming message compression algorithm: '%s'. "
|
967
|
-
"Interpreting incoming data as uncompressed.",
|
968
|
-
md_c_str);
|
969
|
-
gpr_free(md_c_str);
|
970
|
-
return GRPC_MESSAGE_COMPRESS_NONE;
|
971
|
-
}
|
972
|
-
return algorithm;
|
973
|
-
}
|
902
|
+
void Append(grpc_slice key, grpc_slice value) {
|
903
|
+
auto* mdusr = &dest_->metadata[dest_->count++];
|
904
|
+
mdusr->key = key;
|
905
|
+
mdusr->value = value;
|
906
|
+
}
|
974
907
|
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
grpc_stream_compression_algorithm_from_slice(GRPC_MDVALUE(md));
|
979
|
-
if (algorithm == GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT) {
|
980
|
-
char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
981
|
-
gpr_log(GPR_ERROR,
|
982
|
-
"Invalid incoming stream compression algorithm: '%s'. Interpreting "
|
983
|
-
"incoming data as uncompressed.",
|
984
|
-
md_c_str);
|
985
|
-
gpr_free(md_c_str);
|
986
|
-
return GRPC_STREAM_COMPRESS_NONE;
|
987
|
-
}
|
988
|
-
return algorithm;
|
989
|
-
}
|
908
|
+
grpc_metadata_array* const dest_;
|
909
|
+
};
|
910
|
+
} // namespace
|
990
911
|
|
991
|
-
|
992
|
-
|
993
|
-
if (b->
|
994
|
-
if (!
|
995
|
-
if (is_trailing &&
|
912
|
+
void FilterStackCall::PublishAppMetadata(grpc_metadata_batch* b,
|
913
|
+
bool is_trailing) {
|
914
|
+
if (b->count() == 0) return;
|
915
|
+
if (!is_client() && is_trailing) return;
|
916
|
+
if (is_trailing && buffered_metadata_[1] == nullptr) return;
|
996
917
|
GPR_TIMER_SCOPE("publish_app_metadata", 0);
|
997
918
|
grpc_metadata_array* dest;
|
998
|
-
|
999
|
-
dest
|
1000
|
-
|
1001
|
-
|
1002
|
-
dest->capacity * 3 / 2);
|
919
|
+
dest = buffered_metadata_[is_trailing];
|
920
|
+
if (dest->count + b->count() > dest->capacity) {
|
921
|
+
dest->capacity =
|
922
|
+
std::max(dest->capacity + b->count(), dest->capacity * 3 / 2);
|
1003
923
|
dest->metadata = static_cast<grpc_metadata*>(
|
1004
924
|
gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
|
1005
925
|
}
|
1006
|
-
|
1007
|
-
|
1008
|
-
/* we pass back borrowed slices that are valid whilst the call is valid */
|
1009
|
-
mdusr->key = GRPC_MDKEY(md);
|
1010
|
-
mdusr->value = GRPC_MDVALUE(md);
|
1011
|
-
});
|
926
|
+
PublishToAppEncoder encoder(dest);
|
927
|
+
b->Encode(&encoder);
|
1012
928
|
}
|
1013
929
|
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
}
|
1022
|
-
if (b->legacy_index()->named.grpc_encoding != nullptr) {
|
1023
|
-
GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
|
1024
|
-
set_incoming_message_compression_algorithm(
|
1025
|
-
call,
|
1026
|
-
decode_message_compression(b->legacy_index()->named.grpc_encoding->md));
|
1027
|
-
b->Remove(GRPC_BATCH_GRPC_ENCODING);
|
1028
|
-
}
|
1029
|
-
uint32_t message_encodings_accepted_by_peer = 1u;
|
1030
|
-
uint32_t stream_encodings_accepted_by_peer = 1u;
|
1031
|
-
if (b->legacy_index()->named.grpc_accept_encoding != nullptr) {
|
1032
|
-
GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
|
1033
|
-
set_encodings_accepted_by_peer(
|
1034
|
-
call, b->legacy_index()->named.grpc_accept_encoding->md,
|
1035
|
-
&message_encodings_accepted_by_peer, false);
|
1036
|
-
b->Remove(GRPC_BATCH_GRPC_ACCEPT_ENCODING);
|
1037
|
-
}
|
1038
|
-
if (b->legacy_index()->named.accept_encoding != nullptr) {
|
1039
|
-
GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
|
1040
|
-
set_encodings_accepted_by_peer(call,
|
1041
|
-
b->legacy_index()->named.accept_encoding->md,
|
1042
|
-
&stream_encodings_accepted_by_peer, true);
|
1043
|
-
b->Remove(GRPC_BATCH_ACCEPT_ENCODING);
|
1044
|
-
}
|
1045
|
-
call->encodings_accepted_by_peer =
|
1046
|
-
grpc_compression_bitset_from_message_stream_compression_bitset(
|
1047
|
-
message_encodings_accepted_by_peer,
|
1048
|
-
stream_encodings_accepted_by_peer);
|
1049
|
-
publish_app_metadata(call, b, false);
|
930
|
+
void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
|
931
|
+
incoming_compression_algorithm_ =
|
932
|
+
b->Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
|
933
|
+
encodings_accepted_by_peer_ =
|
934
|
+
b->Take(GrpcAcceptEncodingMetadata())
|
935
|
+
.value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
|
936
|
+
PublishAppMetadata(b, false);
|
1050
937
|
}
|
1051
938
|
|
1052
|
-
|
1053
|
-
|
1054
|
-
grpc_call* call = static_cast<grpc_call*>(args);
|
939
|
+
void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
|
940
|
+
grpc_error_handle batch_error) {
|
1055
941
|
if (batch_error != GRPC_ERROR_NONE) {
|
1056
|
-
|
1057
|
-
} else if (b->legacy_index()->named.grpc_status != nullptr) {
|
1058
|
-
grpc_status_code status_code = grpc_get_status_code_from_metadata(
|
1059
|
-
b->legacy_index()->named.grpc_status->md);
|
1060
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
1061
|
-
if (status_code != GRPC_STATUS_OK) {
|
1062
|
-
char* peer = grpc_call_get_peer(call);
|
1063
|
-
error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
1064
|
-
"Error received from peer ", peer)),
|
1065
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
1066
|
-
static_cast<intptr_t>(status_code));
|
1067
|
-
gpr_free(peer);
|
1068
|
-
}
|
1069
|
-
if (b->legacy_index()->named.grpc_message != nullptr) {
|
1070
|
-
error = grpc_error_set_str(
|
1071
|
-
error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1072
|
-
grpc_core::StringViewFromSlice(
|
1073
|
-
GRPC_MDVALUE(b->legacy_index()->named.grpc_message->md)));
|
1074
|
-
b->Remove(GRPC_BATCH_GRPC_MESSAGE);
|
1075
|
-
} else if (error != GRPC_ERROR_NONE) {
|
1076
|
-
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
|
1077
|
-
}
|
1078
|
-
set_final_status(call, GRPC_ERROR_REF(error));
|
1079
|
-
b->Remove(GRPC_BATCH_GRPC_STATUS);
|
1080
|
-
GRPC_ERROR_UNREF(error);
|
1081
|
-
} else if (!call->is_client) {
|
1082
|
-
set_final_status(call, GRPC_ERROR_NONE);
|
942
|
+
SetFinalStatus(batch_error);
|
1083
943
|
} else {
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
944
|
+
absl::optional<grpc_status_code> grpc_status =
|
945
|
+
b->Take(GrpcStatusMetadata());
|
946
|
+
if (grpc_status.has_value()) {
|
947
|
+
grpc_status_code status_code = *grpc_status;
|
948
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
949
|
+
if (status_code != GRPC_STATUS_OK) {
|
950
|
+
char* peer = GetPeer();
|
951
|
+
error = grpc_error_set_int(
|
952
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
953
|
+
absl::StrCat("Error received from peer ", peer)),
|
954
|
+
GRPC_ERROR_INT_GRPC_STATUS, static_cast<intptr_t>(status_code));
|
955
|
+
gpr_free(peer);
|
956
|
+
}
|
957
|
+
auto grpc_message = b->Take(GrpcMessageMetadata());
|
958
|
+
if (grpc_message.has_value()) {
|
959
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
960
|
+
grpc_message->as_string_view());
|
961
|
+
} else if (error != GRPC_ERROR_NONE) {
|
962
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
|
963
|
+
}
|
964
|
+
SetFinalStatus(GRPC_ERROR_REF(error));
|
965
|
+
GRPC_ERROR_UNREF(error);
|
966
|
+
} else if (!is_client()) {
|
967
|
+
SetFinalStatus(GRPC_ERROR_NONE);
|
968
|
+
} else {
|
969
|
+
gpr_log(GPR_DEBUG,
|
970
|
+
"Received trailing metadata with no error and no status");
|
971
|
+
SetFinalStatus(grpc_error_set_int(
|
972
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
|
973
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
|
974
|
+
}
|
975
|
+
}
|
976
|
+
PublishAppMetadata(b, true);
|
1098
977
|
}
|
1099
978
|
|
1100
|
-
|
1101
|
-
|
1102
|
-
*/
|
1103
|
-
|
1104
|
-
static bool are_write_flags_valid(uint32_t flags) {
|
979
|
+
namespace {
|
980
|
+
bool AreWriteFlagsValid(uint32_t flags) {
|
1105
981
|
/* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
|
1106
982
|
const uint32_t allowed_write_positions =
|
1107
983
|
(GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
|
@@ -1109,16 +985,13 @@ static bool are_write_flags_valid(uint32_t flags) {
|
|
1109
985
|
return !(flags & invalid_positions);
|
1110
986
|
}
|
1111
987
|
|
1112
|
-
|
988
|
+
bool AreInitialMetadataFlagsValid(uint32_t flags) {
|
1113
989
|
/* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
|
1114
990
|
uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
|
1115
|
-
if (!is_client) {
|
1116
|
-
invalid_positions |= GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
|
1117
|
-
}
|
1118
991
|
return !(flags & invalid_positions);
|
1119
992
|
}
|
1120
993
|
|
1121
|
-
|
994
|
+
size_t BatchSlotForOp(grpc_op_type type) {
|
1122
995
|
switch (type) {
|
1123
996
|
case GRPC_OP_SEND_INITIAL_METADATA:
|
1124
997
|
return 0;
|
@@ -1137,137 +1010,135 @@ static size_t batch_slot_for_op(grpc_op_type type) {
|
|
1137
1010
|
}
|
1138
1011
|
GPR_UNREACHABLE_CODE(return 123456789);
|
1139
1012
|
}
|
1013
|
+
} // namespace
|
1140
1014
|
|
1141
|
-
|
1142
|
-
|
1143
|
-
size_t slot_idx =
|
1144
|
-
|
1145
|
-
|
1015
|
+
FilterStackCall::BatchControl* FilterStackCall::ReuseOrAllocateBatchControl(
|
1016
|
+
const grpc_op* ops) {
|
1017
|
+
size_t slot_idx = BatchSlotForOp(ops[0].op);
|
1018
|
+
BatchControl** pslot = &active_batches_[slot_idx];
|
1019
|
+
BatchControl* bctl;
|
1146
1020
|
if (*pslot != nullptr) {
|
1147
1021
|
bctl = *pslot;
|
1148
|
-
if (bctl->
|
1022
|
+
if (bctl->call_ != nullptr) {
|
1149
1023
|
return nullptr;
|
1150
1024
|
}
|
1151
|
-
bctl->~
|
1152
|
-
bctl->
|
1153
|
-
new (&bctl->
|
1025
|
+
bctl->~BatchControl();
|
1026
|
+
bctl->op_ = {};
|
1027
|
+
new (&bctl->batch_error_) AtomicError();
|
1154
1028
|
} else {
|
1155
|
-
bctl =
|
1029
|
+
bctl = arena()->New<BatchControl>();
|
1156
1030
|
*pslot = bctl;
|
1157
1031
|
}
|
1158
|
-
bctl->
|
1159
|
-
bctl->
|
1032
|
+
bctl->call_ = this;
|
1033
|
+
bctl->op_.payload = &stream_op_payload_;
|
1160
1034
|
return bctl;
|
1161
1035
|
}
|
1162
1036
|
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1037
|
+
void Call::PropagateCancellationToChildren() {
|
1038
|
+
ParentCall* pc = parent_call();
|
1039
|
+
if (pc != nullptr) {
|
1040
|
+
Call* child;
|
1041
|
+
MutexLock lock(&pc->child_list_mu);
|
1042
|
+
child = pc->first_child;
|
1043
|
+
if (child != nullptr) {
|
1044
|
+
do {
|
1045
|
+
Call* next_child_call = child->child_->sibling_next;
|
1046
|
+
if (child->cancellation_is_inherited_) {
|
1047
|
+
child->InternalRef("propagate_cancel");
|
1048
|
+
child->CancelWithError(GRPC_ERROR_CANCELLED);
|
1049
|
+
child->InternalUnref("propagate_cancel");
|
1050
|
+
}
|
1051
|
+
child = next_child_call;
|
1052
|
+
} while (child != pc->first_child);
|
1053
|
+
}
|
1054
|
+
}
|
1173
1055
|
}
|
1174
1056
|
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
grpc_error_handle error = GRPC_ERROR_REF(bctl->batch_error.get());
|
1057
|
+
void FilterStackCall::BatchControl::PostCompletion() {
|
1058
|
+
FilterStackCall* call = call_;
|
1059
|
+
grpc_error_handle error = GRPC_ERROR_REF(batch_error_.get());
|
1179
1060
|
|
1180
|
-
if (
|
1181
|
-
call->
|
1061
|
+
if (op_.send_initial_metadata) {
|
1062
|
+
call->send_initial_metadata_.Clear();
|
1182
1063
|
}
|
1183
|
-
if (
|
1184
|
-
if (
|
1064
|
+
if (op_.send_message) {
|
1065
|
+
if (op_.payload->send_message.stream_write_closed &&
|
1185
1066
|
error == GRPC_ERROR_NONE) {
|
1186
1067
|
error = grpc_error_add_child(
|
1187
1068
|
error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1188
1069
|
"Attempt to send message after stream was closed."));
|
1189
1070
|
}
|
1190
|
-
call->
|
1071
|
+
call->sending_message_ = false;
|
1191
1072
|
}
|
1192
|
-
if (
|
1193
|
-
call->
|
1073
|
+
if (op_.send_trailing_metadata) {
|
1074
|
+
call->send_trailing_metadata_.Clear();
|
1194
1075
|
}
|
1195
|
-
if (
|
1076
|
+
if (op_.recv_trailing_metadata) {
|
1196
1077
|
/* propagate cancellation to any interested children */
|
1197
|
-
gpr_atm_rel_store(&call->
|
1198
|
-
|
1199
|
-
if (pc != nullptr) {
|
1200
|
-
grpc_call* child;
|
1201
|
-
gpr_mu_lock(&pc->child_list_mu);
|
1202
|
-
child = pc->first_child;
|
1203
|
-
if (child != nullptr) {
|
1204
|
-
do {
|
1205
|
-
next_child_call = child->child->sibling_next;
|
1206
|
-
if (child->cancellation_is_inherited) {
|
1207
|
-
GRPC_CALL_INTERNAL_REF(child, "propagate_cancel");
|
1208
|
-
cancel_with_error(child, GRPC_ERROR_CANCELLED);
|
1209
|
-
GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel");
|
1210
|
-
}
|
1211
|
-
child = next_child_call;
|
1212
|
-
} while (child != pc->first_child);
|
1213
|
-
}
|
1214
|
-
gpr_mu_unlock(&pc->child_list_mu);
|
1215
|
-
}
|
1078
|
+
gpr_atm_rel_store(&call->received_final_op_atm_, 1);
|
1079
|
+
call->PropagateCancellationToChildren();
|
1216
1080
|
GRPC_ERROR_UNREF(error);
|
1217
1081
|
error = GRPC_ERROR_NONE;
|
1218
1082
|
}
|
1219
|
-
if (error != GRPC_ERROR_NONE &&
|
1220
|
-
*call->
|
1221
|
-
grpc_byte_buffer_destroy(*call->
|
1222
|
-
*call->
|
1083
|
+
if (error != GRPC_ERROR_NONE && op_.recv_message &&
|
1084
|
+
*call->receiving_buffer_ != nullptr) {
|
1085
|
+
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1086
|
+
*call->receiving_buffer_ = nullptr;
|
1223
1087
|
}
|
1224
|
-
|
1088
|
+
batch_error_.set(GRPC_ERROR_NONE);
|
1225
1089
|
|
1226
|
-
if (
|
1090
|
+
if (completion_data_.notify_tag.is_closure) {
|
1227
1091
|
/* unrefs error */
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
GRPC_CALL_INTERNAL_UNREF(call, "completion");
|
1092
|
+
call_ = nullptr;
|
1093
|
+
Closure::Run(DEBUG_LOCATION,
|
1094
|
+
static_cast<grpc_closure*>(completion_data_.notify_tag.tag),
|
1095
|
+
error);
|
1096
|
+
call->InternalUnref("completion");
|
1234
1097
|
} else {
|
1235
1098
|
/* unrefs error */
|
1236
|
-
grpc_cq_end_op(
|
1237
|
-
|
1238
|
-
|
1099
|
+
grpc_cq_end_op(
|
1100
|
+
call->cq_, completion_data_.notify_tag.tag, error,
|
1101
|
+
[](void* user_data, grpc_cq_completion* /*storage*/) {
|
1102
|
+
BatchControl* bctl = static_cast<BatchControl*>(user_data);
|
1103
|
+
Call* call = bctl->call_;
|
1104
|
+
bctl->call_ = nullptr;
|
1105
|
+
call->InternalUnref("completion");
|
1106
|
+
},
|
1107
|
+
this, &completion_data_.cq_completion);
|
1239
1108
|
}
|
1240
1109
|
}
|
1241
1110
|
|
1242
|
-
|
1243
|
-
if (GPR_UNLIKELY(
|
1244
|
-
|
1111
|
+
void FilterStackCall::BatchControl::FinishStep() {
|
1112
|
+
if (GPR_UNLIKELY(completed_batch_step())) {
|
1113
|
+
PostCompletion();
|
1245
1114
|
}
|
1246
1115
|
}
|
1247
1116
|
|
1248
|
-
|
1117
|
+
void FilterStackCall::BatchControl::ContinueReceivingSlices() {
|
1249
1118
|
grpc_error_handle error;
|
1250
|
-
|
1119
|
+
FilterStackCall* call = call_;
|
1251
1120
|
for (;;) {
|
1252
|
-
size_t remaining = call->
|
1253
|
-
(*call->
|
1121
|
+
size_t remaining = call->receiving_stream_->length() -
|
1122
|
+
(*call->receiving_buffer_)->data.raw.slice_buffer.length;
|
1254
1123
|
if (remaining == 0) {
|
1255
|
-
call->
|
1256
|
-
call->
|
1257
|
-
|
1124
|
+
call->receiving_message_ = false;
|
1125
|
+
call->receiving_stream_.reset();
|
1126
|
+
FinishStep();
|
1258
1127
|
return;
|
1259
1128
|
}
|
1260
|
-
if (call->
|
1261
|
-
|
1129
|
+
if (call->receiving_stream_->Next(remaining,
|
1130
|
+
&call->receiving_slice_ready_)) {
|
1131
|
+
error = call->receiving_stream_->Pull(&call->receiving_slice_);
|
1262
1132
|
if (error == GRPC_ERROR_NONE) {
|
1263
|
-
grpc_slice_buffer_add(
|
1264
|
-
|
1133
|
+
grpc_slice_buffer_add(
|
1134
|
+
&(*call->receiving_buffer_)->data.raw.slice_buffer,
|
1135
|
+
call->receiving_slice_);
|
1265
1136
|
} else {
|
1266
|
-
call->
|
1267
|
-
grpc_byte_buffer_destroy(*call->
|
1268
|
-
*call->
|
1269
|
-
call->
|
1270
|
-
|
1137
|
+
call->receiving_stream_.reset();
|
1138
|
+
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1139
|
+
*call->receiving_buffer_ = nullptr;
|
1140
|
+
call->receiving_message_ = false;
|
1141
|
+
FinishStep();
|
1271
1142
|
GRPC_ERROR_UNREF(error);
|
1272
1143
|
return;
|
1273
1144
|
}
|
@@ -1277,18 +1148,18 @@ static void continue_receiving_slices(batch_control* bctl) {
|
|
1277
1148
|
}
|
1278
1149
|
}
|
1279
1150
|
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1151
|
+
void FilterStackCall::BatchControl::ReceivingSliceReady(
|
1152
|
+
grpc_error_handle error) {
|
1153
|
+
FilterStackCall* call = call_;
|
1283
1154
|
bool release_error = false;
|
1284
1155
|
|
1285
1156
|
if (error == GRPC_ERROR_NONE) {
|
1286
1157
|
grpc_slice slice;
|
1287
|
-
error = call->
|
1158
|
+
error = call->receiving_stream_->Pull(&slice);
|
1288
1159
|
if (error == GRPC_ERROR_NONE) {
|
1289
|
-
grpc_slice_buffer_add(&(*call->
|
1160
|
+
grpc_slice_buffer_add(&(*call->receiving_buffer_)->data.raw.slice_buffer,
|
1290
1161
|
slice);
|
1291
|
-
|
1162
|
+
ContinueReceivingSlices();
|
1292
1163
|
} else {
|
1293
1164
|
/* Error returned by ByteStream::Pull() needs to be released manually */
|
1294
1165
|
release_error = true;
|
@@ -1299,191 +1170,133 @@ static void receiving_slice_ready(void* bctlp, grpc_error_handle error) {
|
|
1299
1170
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
|
1300
1171
|
GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
|
1301
1172
|
}
|
1302
|
-
call->
|
1303
|
-
grpc_byte_buffer_destroy(*call->
|
1304
|
-
*call->
|
1305
|
-
call->
|
1306
|
-
|
1173
|
+
call->receiving_stream_.reset();
|
1174
|
+
grpc_byte_buffer_destroy(*call->receiving_buffer_);
|
1175
|
+
*call->receiving_buffer_ = nullptr;
|
1176
|
+
call->receiving_message_ = false;
|
1177
|
+
FinishStep();
|
1307
1178
|
if (release_error) {
|
1308
1179
|
GRPC_ERROR_UNREF(error);
|
1309
1180
|
}
|
1310
1181
|
}
|
1311
1182
|
}
|
1312
1183
|
|
1313
|
-
|
1314
|
-
|
1315
|
-
if (call->
|
1316
|
-
*call->
|
1317
|
-
call->
|
1318
|
-
|
1184
|
+
void FilterStackCall::BatchControl::ProcessDataAfterMetadata() {
|
1185
|
+
FilterStackCall* call = call_;
|
1186
|
+
if (call->receiving_stream_ == nullptr) {
|
1187
|
+
*call->receiving_buffer_ = nullptr;
|
1188
|
+
call->receiving_message_ = false;
|
1189
|
+
FinishStep();
|
1319
1190
|
} else {
|
1320
|
-
call->
|
1321
|
-
if ((call->
|
1322
|
-
(call->
|
1323
|
-
|
1324
|
-
|
1325
|
-
GPR_ASSERT(
|
1326
|
-
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
1327
|
-
&algo, call->incoming_message_compression_algorithm,
|
1328
|
-
(grpc_stream_compression_algorithm)0));
|
1329
|
-
*call->receiving_buffer =
|
1330
|
-
grpc_raw_compressed_byte_buffer_create(nullptr, 0, algo);
|
1191
|
+
call->test_only_last_message_flags_ = call->receiving_stream_->flags();
|
1192
|
+
if ((call->receiving_stream_->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
|
1193
|
+
(call->incoming_compression_algorithm_ != GRPC_COMPRESS_NONE)) {
|
1194
|
+
*call->receiving_buffer_ = grpc_raw_compressed_byte_buffer_create(
|
1195
|
+
nullptr, 0, call->incoming_compression_algorithm_);
|
1331
1196
|
} else {
|
1332
|
-
*call->
|
1197
|
+
*call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
|
1333
1198
|
}
|
1334
|
-
GRPC_CLOSURE_INIT(
|
1335
|
-
|
1336
|
-
|
1199
|
+
GRPC_CLOSURE_INIT(
|
1200
|
+
&call->receiving_slice_ready_,
|
1201
|
+
[](void* bctl, grpc_error_handle error) {
|
1202
|
+
static_cast<BatchControl*>(bctl)->ReceivingSliceReady(error);
|
1203
|
+
},
|
1204
|
+
this, grpc_schedule_on_exec_ctx);
|
1205
|
+
ContinueReceivingSlices();
|
1337
1206
|
}
|
1338
1207
|
}
|
1339
1208
|
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1209
|
+
void FilterStackCall::BatchControl::ReceivingStreamReady(
|
1210
|
+
grpc_error_handle error) {
|
1211
|
+
FilterStackCall* call = call_;
|
1343
1212
|
if (error != GRPC_ERROR_NONE) {
|
1344
|
-
call->
|
1345
|
-
if (
|
1346
|
-
|
1213
|
+
call->receiving_stream_.reset();
|
1214
|
+
if (batch_error_.ok()) {
|
1215
|
+
batch_error_.set(error);
|
1347
1216
|
}
|
1348
|
-
|
1217
|
+
call->CancelWithError(GRPC_ERROR_REF(error));
|
1349
1218
|
}
|
1350
|
-
/* If recv_state is
|
1219
|
+
/* If recv_state is kRecvNone, we will save the batch_control
|
1351
1220
|
* object with rel_cas, and will not use it after the cas. Its corresponding
|
1352
1221
|
* acq_load is in receiving_initial_metadata_ready() */
|
1353
|
-
if (error != GRPC_ERROR_NONE || call->
|
1354
|
-
!gpr_atm_rel_cas(&call->
|
1355
|
-
reinterpret_cast<gpr_atm>(
|
1356
|
-
|
1222
|
+
if (error != GRPC_ERROR_NONE || call->receiving_stream_ == nullptr ||
|
1223
|
+
!gpr_atm_rel_cas(&call->recv_state_, kRecvNone,
|
1224
|
+
reinterpret_cast<gpr_atm>(this))) {
|
1225
|
+
ProcessDataAfterMetadata();
|
1357
1226
|
}
|
1358
1227
|
}
|
1359
1228
|
|
1360
|
-
|
1361
|
-
|
1362
|
-
// before processing the received message.
|
1363
|
-
static void receiving_stream_ready_in_call_combiner(void* bctlp,
|
1364
|
-
grpc_error_handle error) {
|
1365
|
-
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1366
|
-
grpc_call* call = bctl->call;
|
1367
|
-
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
|
1368
|
-
receiving_stream_ready(bctlp, error);
|
1369
|
-
}
|
1370
|
-
|
1371
|
-
static void GPR_ATTRIBUTE_NOINLINE
|
1372
|
-
handle_both_stream_and_msg_compression_set(grpc_call* call) {
|
1373
|
-
std::string error_msg = absl::StrFormat(
|
1374
|
-
"Incoming stream has both stream compression (%d) and message "
|
1375
|
-
"compression (%d).",
|
1376
|
-
call->incoming_stream_compression_algorithm,
|
1377
|
-
call->incoming_message_compression_algorithm);
|
1378
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1379
|
-
cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg.c_str());
|
1380
|
-
}
|
1381
|
-
|
1382
|
-
static void GPR_ATTRIBUTE_NOINLINE
|
1383
|
-
handle_error_parsing_compression_algorithm(grpc_call* call) {
|
1384
|
-
std::string error_msg = absl::StrFormat(
|
1385
|
-
"Error in incoming message compression (%d) or stream "
|
1386
|
-
"compression (%d).",
|
1387
|
-
call->incoming_stream_compression_algorithm,
|
1388
|
-
call->incoming_message_compression_algorithm);
|
1389
|
-
cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg.c_str());
|
1390
|
-
}
|
1391
|
-
|
1392
|
-
static void GPR_ATTRIBUTE_NOINLINE handle_invalid_compression(
|
1393
|
-
grpc_call* call, grpc_compression_algorithm compression_algorithm) {
|
1394
|
-
std::string error_msg = absl::StrFormat(
|
1395
|
-
"Invalid compression algorithm value '%d'.", compression_algorithm);
|
1396
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1397
|
-
cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
|
1398
|
-
}
|
1399
|
-
|
1400
|
-
static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
|
1401
|
-
grpc_call* call, grpc_compression_algorithm compression_algorithm) {
|
1229
|
+
void FilterStackCall::HandleCompressionAlgorithmDisabled(
|
1230
|
+
grpc_compression_algorithm compression_algorithm) {
|
1402
1231
|
const char* algo_name = nullptr;
|
1403
1232
|
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1404
1233
|
std::string error_msg =
|
1405
1234
|
absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
|
1406
1235
|
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1407
|
-
|
1236
|
+
CancelWithStatus(GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
|
1408
1237
|
}
|
1409
1238
|
|
1410
|
-
|
1411
|
-
|
1239
|
+
void FilterStackCall::HandleCompressionAlgorithmNotAccepted(
|
1240
|
+
grpc_compression_algorithm compression_algorithm) {
|
1412
1241
|
const char* algo_name = nullptr;
|
1413
1242
|
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1414
1243
|
gpr_log(GPR_ERROR,
|
1415
|
-
"Compression algorithm ('%s') not present in the
|
1416
|
-
"accepted encodings (
|
1417
|
-
algo_name,
|
1418
|
-
}
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
handle_invalid_compression(call, compression_algorithm);
|
1440
|
-
} else if (GPR_UNLIKELY(
|
1441
|
-
grpc_compression_options_is_algorithm_enabled_internal(
|
1442
|
-
&compression_options, compression_algorithm) == 0)) {
|
1443
|
-
/* check if algorithm is supported by current channel config */
|
1444
|
-
handle_compression_algorithm_disabled(call, compression_algorithm);
|
1445
|
-
}
|
1446
|
-
/* GRPC_COMPRESS_NONE is always set. */
|
1447
|
-
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
|
1448
|
-
if (GPR_UNLIKELY(!grpc_core::GetBit(call->encodings_accepted_by_peer,
|
1449
|
-
compression_algorithm))) {
|
1450
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1451
|
-
handle_compression_algorithm_not_accepted(call, compression_algorithm);
|
1452
|
-
}
|
1244
|
+
"Compression algorithm ('%s') not present in the "
|
1245
|
+
"accepted encodings (%s)",
|
1246
|
+
algo_name, encodings_accepted_by_peer_.ToString().c_str());
|
1247
|
+
}
|
1248
|
+
|
1249
|
+
void FilterStackCall::BatchControl::ValidateFilteredMetadata() {
|
1250
|
+
FilterStackCall* call = call_;
|
1251
|
+
|
1252
|
+
const grpc_compression_options compression_options =
|
1253
|
+
grpc_channel_compression_options(call->channel_);
|
1254
|
+
const grpc_compression_algorithm compression_algorithm =
|
1255
|
+
call->incoming_compression_algorithm_;
|
1256
|
+
if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32(
|
1257
|
+
compression_options.enabled_algorithms_bitset)
|
1258
|
+
.IsSet(compression_algorithm))) {
|
1259
|
+
/* check if algorithm is supported by current channel config */
|
1260
|
+
call->HandleCompressionAlgorithmDisabled(compression_algorithm);
|
1261
|
+
}
|
1262
|
+
/* GRPC_COMPRESS_NONE is always set. */
|
1263
|
+
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
|
1264
|
+
if (GPR_UNLIKELY(
|
1265
|
+
!call->encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
|
1266
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1267
|
+
call->HandleCompressionAlgorithmNotAccepted(compression_algorithm);
|
1453
1268
|
}
|
1454
1269
|
}
|
1455
1270
|
}
|
1456
1271
|
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
grpc_call* call = bctl->call;
|
1272
|
+
void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
|
1273
|
+
grpc_error_handle error) {
|
1274
|
+
FilterStackCall* call = call_;
|
1461
1275
|
|
1462
|
-
GRPC_CALL_COMBINER_STOP(
|
1276
|
+
GRPC_CALL_COMBINER_STOP(call->call_combiner(), "recv_initial_metadata_ready");
|
1463
1277
|
|
1464
1278
|
if (error == GRPC_ERROR_NONE) {
|
1465
|
-
grpc_metadata_batch* md = &call->
|
1466
|
-
|
1279
|
+
grpc_metadata_batch* md = &call->recv_initial_metadata_;
|
1280
|
+
call->RecvInitialFilter(md);
|
1467
1281
|
|
1468
1282
|
/* TODO(ctiller): this could be moved into recv_initial_filter now */
|
1469
1283
|
GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
|
1470
|
-
|
1284
|
+
ValidateFilteredMetadata();
|
1471
1285
|
|
1472
|
-
absl::optional<
|
1473
|
-
|
1474
|
-
|
1475
|
-
call->send_deadline = *deadline;
|
1286
|
+
absl::optional<Timestamp> deadline = md->get(GrpcTimeoutMetadata());
|
1287
|
+
if (deadline.has_value() && !call->is_client()) {
|
1288
|
+
call_->set_send_deadline(*deadline);
|
1476
1289
|
}
|
1477
1290
|
} else {
|
1478
|
-
if (
|
1479
|
-
|
1291
|
+
if (batch_error_.ok()) {
|
1292
|
+
batch_error_.set(error);
|
1480
1293
|
}
|
1481
|
-
|
1294
|
+
call->CancelWithError(GRPC_ERROR_REF(error));
|
1482
1295
|
}
|
1483
1296
|
|
1484
1297
|
grpc_closure* saved_rsr_closure = nullptr;
|
1485
1298
|
while (true) {
|
1486
|
-
gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->
|
1299
|
+
gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state_);
|
1487
1300
|
/* Should only receive initial metadata once */
|
1488
1301
|
GPR_ASSERT(rsr_bctlp != 1);
|
1489
1302
|
if (rsr_bctlp == 0) {
|
@@ -1492,96 +1305,100 @@ static void receiving_initial_metadata_ready(void* bctlp,
|
|
1492
1305
|
* no_barrier_cas is used, as this function won't access the batch_control
|
1493
1306
|
* object saved by receiving_stream_ready() if the initial metadata is
|
1494
1307
|
* received first. */
|
1495
|
-
if (gpr_atm_no_barrier_cas(&call->
|
1496
|
-
|
1308
|
+
if (gpr_atm_no_barrier_cas(&call->recv_state_, kRecvNone,
|
1309
|
+
kRecvInitialMetadataFirst)) {
|
1497
1310
|
break;
|
1498
1311
|
}
|
1499
1312
|
} else {
|
1500
1313
|
/* Already received messages */
|
1501
|
-
saved_rsr_closure =
|
1502
|
-
|
1503
|
-
|
1314
|
+
saved_rsr_closure = GRPC_CLOSURE_CREATE(
|
1315
|
+
[](void* bctl, grpc_error_handle error) {
|
1316
|
+
static_cast<BatchControl*>(bctl)->ReceivingStreamReady(error);
|
1317
|
+
},
|
1318
|
+
reinterpret_cast<BatchControl*>(rsr_bctlp),
|
1319
|
+
grpc_schedule_on_exec_ctx);
|
1504
1320
|
/* No need to modify recv_state */
|
1505
1321
|
break;
|
1506
1322
|
}
|
1507
1323
|
}
|
1508
1324
|
if (saved_rsr_closure != nullptr) {
|
1509
|
-
|
1510
|
-
GRPC_ERROR_REF(error));
|
1325
|
+
Closure::Run(DEBUG_LOCATION, saved_rsr_closure, GRPC_ERROR_REF(error));
|
1511
1326
|
}
|
1512
1327
|
|
1513
|
-
|
1328
|
+
FinishStep();
|
1514
1329
|
}
|
1515
1330
|
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
finish_batch_step(bctl);
|
1331
|
+
void FilterStackCall::BatchControl::ReceivingTrailingMetadataReady(
|
1332
|
+
grpc_error_handle error) {
|
1333
|
+
GRPC_CALL_COMBINER_STOP(call_->call_combiner(),
|
1334
|
+
"recv_trailing_metadata_ready");
|
1335
|
+
grpc_metadata_batch* md = &call_->recv_trailing_metadata_;
|
1336
|
+
call_->RecvTrailingFilter(md, GRPC_ERROR_REF(error));
|
1337
|
+
FinishStep();
|
1524
1338
|
}
|
1525
1339
|
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
if (bctl->batch_error.ok()) {
|
1531
|
-
bctl->batch_error.set(error);
|
1340
|
+
void FilterStackCall::BatchControl::FinishBatch(grpc_error_handle error) {
|
1341
|
+
GRPC_CALL_COMBINER_STOP(call_->call_combiner(), "on_complete");
|
1342
|
+
if (batch_error_.ok()) {
|
1343
|
+
batch_error_.set(error);
|
1532
1344
|
}
|
1533
1345
|
if (error != GRPC_ERROR_NONE) {
|
1534
|
-
|
1346
|
+
call_->CancelWithError(GRPC_ERROR_REF(error));
|
1535
1347
|
}
|
1536
|
-
|
1537
|
-
}
|
1538
|
-
|
1539
|
-
static void free_no_op_completion(void* /*p*/, grpc_cq_completion* completion) {
|
1540
|
-
gpr_free(completion);
|
1348
|
+
FinishStep();
|
1541
1349
|
}
|
1542
1350
|
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1351
|
+
grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
1352
|
+
void* notify_tag,
|
1353
|
+
bool is_notify_tag_closure) {
|
1546
1354
|
GPR_TIMER_SCOPE("call_start_batch", 0);
|
1547
1355
|
|
1548
1356
|
size_t i;
|
1549
1357
|
const grpc_op* op;
|
1550
|
-
|
1358
|
+
BatchControl* bctl;
|
1551
1359
|
bool has_send_ops = false;
|
1552
1360
|
int num_recv_ops = 0;
|
1553
1361
|
grpc_call_error error = GRPC_CALL_OK;
|
1554
1362
|
grpc_transport_stream_op_batch* stream_op;
|
1555
1363
|
grpc_transport_stream_op_batch_payload* stream_op_payload;
|
1364
|
+
uint32_t seen_ops = 0;
|
1365
|
+
|
1366
|
+
for (i = 0; i < nops; i++) {
|
1367
|
+
if (seen_ops & (1u << ops[i].op)) {
|
1368
|
+
return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1369
|
+
}
|
1370
|
+
seen_ops |= (1u << ops[i].op);
|
1371
|
+
}
|
1556
1372
|
|
1557
1373
|
GRPC_CALL_LOG_BATCH(GPR_INFO, ops, nops);
|
1558
1374
|
|
1559
1375
|
if (nops == 0) {
|
1560
1376
|
if (!is_notify_tag_closure) {
|
1561
|
-
GPR_ASSERT(grpc_cq_begin_op(
|
1562
|
-
grpc_cq_end_op(
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1377
|
+
GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag));
|
1378
|
+
grpc_cq_end_op(
|
1379
|
+
cq_, notify_tag, GRPC_ERROR_NONE,
|
1380
|
+
[](void*, grpc_cq_completion* completion) { gpr_free(completion); },
|
1381
|
+
nullptr,
|
1382
|
+
static_cast<grpc_cq_completion*>(
|
1383
|
+
gpr_malloc(sizeof(grpc_cq_completion))));
|
1566
1384
|
} else {
|
1567
|
-
|
1568
|
-
|
1569
|
-
GRPC_ERROR_NONE);
|
1385
|
+
Closure::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(notify_tag),
|
1386
|
+
GRPC_ERROR_NONE);
|
1570
1387
|
}
|
1571
1388
|
error = GRPC_CALL_OK;
|
1572
1389
|
goto done;
|
1573
1390
|
}
|
1574
1391
|
|
1575
|
-
bctl =
|
1392
|
+
bctl = ReuseOrAllocateBatchControl(ops);
|
1576
1393
|
if (bctl == nullptr) {
|
1577
1394
|
return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1578
1395
|
}
|
1579
|
-
bctl->
|
1580
|
-
bctl->
|
1396
|
+
bctl->completion_data_.notify_tag.tag = notify_tag;
|
1397
|
+
bctl->completion_data_.notify_tag.is_closure =
|
1581
1398
|
static_cast<uint8_t>(is_notify_tag_closure != 0);
|
1582
1399
|
|
1583
|
-
stream_op = &bctl->
|
1584
|
-
stream_op_payload = &
|
1400
|
+
stream_op = &bctl->op_;
|
1401
|
+
stream_op_payload = &stream_op_payload_;
|
1585
1402
|
|
1586
1403
|
/* rewrite batch ops into a transport op */
|
1587
1404
|
for (i = 0; i < nops; i++) {
|
@@ -1593,11 +1410,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1593
1410
|
switch (op->op) {
|
1594
1411
|
case GRPC_OP_SEND_INITIAL_METADATA: {
|
1595
1412
|
/* Flag validation: currently allow no flags */
|
1596
|
-
if (!
|
1413
|
+
if (!AreInitialMetadataFlagsValid(op->flags)) {
|
1597
1414
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1598
1415
|
goto done_with_error;
|
1599
1416
|
}
|
1600
|
-
if (
|
1417
|
+
if (sent_initial_metadata_) {
|
1601
1418
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1602
1419
|
goto done_with_error;
|
1603
1420
|
}
|
@@ -1606,10 +1423,6 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1606
1423
|
// GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
|
1607
1424
|
// with the compression algorithm mapped from compression level.
|
1608
1425
|
/* process compression level */
|
1609
|
-
grpc_metadata& compression_md = call->compression_md;
|
1610
|
-
compression_md.key = grpc_empty_slice();
|
1611
|
-
compression_md.value = grpc_empty_slice();
|
1612
|
-
size_t additional_metadata_count = 0;
|
1613
1426
|
grpc_compression_level effective_compression_level =
|
1614
1427
|
GRPC_COMPRESS_LEVEL_NONE;
|
1615
1428
|
bool level_set = false;
|
@@ -1619,56 +1432,52 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1619
1432
|
level_set = true;
|
1620
1433
|
} else {
|
1621
1434
|
const grpc_compression_options copts =
|
1622
|
-
grpc_channel_compression_options(
|
1435
|
+
grpc_channel_compression_options(channel_);
|
1623
1436
|
if (copts.default_level.is_set) {
|
1624
1437
|
level_set = true;
|
1625
1438
|
effective_compression_level = copts.default_level.level;
|
1626
1439
|
}
|
1627
1440
|
}
|
1628
1441
|
// Currently, only server side supports compression level setting.
|
1629
|
-
if (level_set && !
|
1442
|
+
if (level_set && !is_client()) {
|
1630
1443
|
const grpc_compression_algorithm calgo =
|
1631
|
-
|
1632
|
-
|
1444
|
+
encodings_accepted_by_peer_.CompressionAlgorithmForLevel(
|
1445
|
+
effective_compression_level);
|
1633
1446
|
// The following metadata will be checked and removed by the message
|
1634
1447
|
// compression filter. It will be used as the call's compression
|
1635
1448
|
// algorithm.
|
1636
|
-
|
1637
|
-
compression_md.value = grpc_compression_algorithm_slice(calgo);
|
1638
|
-
additional_metadata_count++;
|
1449
|
+
send_initial_metadata_.Set(GrpcInternalEncodingRequest(), calgo);
|
1639
1450
|
}
|
1640
|
-
if (op->data.send_initial_metadata.count
|
1641
|
-
INT_MAX) {
|
1451
|
+
if (op->data.send_initial_metadata.count > INT_MAX) {
|
1642
1452
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1643
1453
|
goto done_with_error;
|
1644
1454
|
}
|
1645
1455
|
stream_op->send_initial_metadata = true;
|
1646
|
-
|
1647
|
-
if (!
|
1648
|
-
|
1649
|
-
|
1650
|
-
&compression_md, static_cast<int>(additional_metadata_count))) {
|
1456
|
+
sent_initial_metadata_ = true;
|
1457
|
+
if (!PrepareApplicationMetadata(op->data.send_initial_metadata.count,
|
1458
|
+
op->data.send_initial_metadata.metadata,
|
1459
|
+
false)) {
|
1651
1460
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1652
1461
|
goto done_with_error;
|
1653
1462
|
}
|
1463
|
+
// Ignore any te metadata key value pairs specified.
|
1464
|
+
send_initial_metadata_.Remove(TeMetadata());
|
1654
1465
|
/* TODO(ctiller): just make these the same variable? */
|
1655
|
-
if (
|
1656
|
-
|
1657
|
-
call->send_deadline);
|
1466
|
+
if (is_client() && send_deadline() != Timestamp::InfFuture()) {
|
1467
|
+
send_initial_metadata_.Set(GrpcTimeoutMetadata(), send_deadline());
|
1658
1468
|
}
|
1659
1469
|
stream_op_payload->send_initial_metadata.send_initial_metadata =
|
1660
|
-
&
|
1470
|
+
&send_initial_metadata_;
|
1661
1471
|
stream_op_payload->send_initial_metadata.send_initial_metadata_flags =
|
1662
1472
|
op->flags;
|
1663
|
-
if (
|
1664
|
-
stream_op_payload->send_initial_metadata.peer_string =
|
1665
|
-
&call->peer_string;
|
1473
|
+
if (is_client()) {
|
1474
|
+
stream_op_payload->send_initial_metadata.peer_string = &peer_string_;
|
1666
1475
|
}
|
1667
1476
|
has_send_ops = true;
|
1668
1477
|
break;
|
1669
1478
|
}
|
1670
1479
|
case GRPC_OP_SEND_MESSAGE: {
|
1671
|
-
if (!
|
1480
|
+
if (!AreWriteFlagsValid(op->flags)) {
|
1672
1481
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1673
1482
|
goto done_with_error;
|
1674
1483
|
}
|
@@ -1676,7 +1485,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1676
1485
|
error = GRPC_CALL_ERROR_INVALID_MESSAGE;
|
1677
1486
|
goto done_with_error;
|
1678
1487
|
}
|
1679
|
-
if (
|
1488
|
+
if (sending_message_) {
|
1680
1489
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1681
1490
|
goto done_with_error;
|
1682
1491
|
}
|
@@ -1689,11 +1498,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1689
1498
|
flags |= GRPC_WRITE_INTERNAL_COMPRESS;
|
1690
1499
|
}
|
1691
1500
|
stream_op->send_message = true;
|
1692
|
-
|
1693
|
-
|
1501
|
+
sending_message_ = true;
|
1502
|
+
sending_stream_.Init(
|
1694
1503
|
&op->data.send_message.send_message->data.raw.slice_buffer, flags);
|
1695
1504
|
stream_op_payload->send_message.send_message.reset(
|
1696
|
-
|
1505
|
+
sending_stream_.get());
|
1697
1506
|
has_send_ops = true;
|
1698
1507
|
break;
|
1699
1508
|
}
|
@@ -1703,18 +1512,18 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1703
1512
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1704
1513
|
goto done_with_error;
|
1705
1514
|
}
|
1706
|
-
if (!
|
1515
|
+
if (!is_client()) {
|
1707
1516
|
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
|
1708
1517
|
goto done_with_error;
|
1709
1518
|
}
|
1710
|
-
if (
|
1519
|
+
if (sent_final_op_) {
|
1711
1520
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1712
1521
|
goto done_with_error;
|
1713
1522
|
}
|
1714
1523
|
stream_op->send_trailing_metadata = true;
|
1715
|
-
|
1524
|
+
sent_final_op_ = true;
|
1716
1525
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1717
|
-
&
|
1526
|
+
&send_trailing_metadata_;
|
1718
1527
|
has_send_ops = true;
|
1719
1528
|
break;
|
1720
1529
|
}
|
@@ -1724,11 +1533,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1724
1533
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1725
1534
|
goto done_with_error;
|
1726
1535
|
}
|
1727
|
-
if (
|
1536
|
+
if (is_client()) {
|
1728
1537
|
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
|
1729
1538
|
goto done_with_error;
|
1730
1539
|
}
|
1731
|
-
if (
|
1540
|
+
if (sent_final_op_) {
|
1732
1541
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1733
1542
|
goto done_with_error;
|
1734
1543
|
}
|
@@ -1738,11 +1547,15 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1738
1547
|
goto done_with_error;
|
1739
1548
|
}
|
1740
1549
|
stream_op->send_trailing_metadata = true;
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1745
|
-
|
1550
|
+
sent_final_op_ = true;
|
1551
|
+
|
1552
|
+
if (!PrepareApplicationMetadata(
|
1553
|
+
op->data.send_status_from_server.trailing_metadata_count,
|
1554
|
+
op->data.send_status_from_server.trailing_metadata, true)) {
|
1555
|
+
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1556
|
+
goto done_with_error;
|
1557
|
+
}
|
1558
|
+
|
1746
1559
|
grpc_error_handle status_error =
|
1747
1560
|
op->data.send_status_from_server.status == GRPC_STATUS_OK
|
1748
1561
|
? GRPC_ERROR_NONE
|
@@ -1753,40 +1566,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1753
1566
|
static_cast<intptr_t>(
|
1754
1567
|
op->data.send_status_from_server.status));
|
1755
1568
|
if (op->data.send_status_from_server.status_details != nullptr) {
|
1756
|
-
|
1757
|
-
|
1758
|
-
grpc_slice_copy(
|
1759
|
-
*op->data.send_status_from_server.status_details));
|
1760
|
-
call->send_extra_metadata_count++;
|
1569
|
+
send_trailing_metadata_.Set(
|
1570
|
+
GrpcMessageMetadata(),
|
1571
|
+
Slice(grpc_slice_copy(
|
1572
|
+
*op->data.send_status_from_server.status_details)));
|
1761
1573
|
if (status_error != GRPC_ERROR_NONE) {
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1765
|
-
|
1766
|
-
gpr_free(msg);
|
1574
|
+
status_error = grpc_error_set_str(
|
1575
|
+
status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1576
|
+
StringViewFromSlice(
|
1577
|
+
*op->data.send_status_from_server.status_details));
|
1767
1578
|
}
|
1768
1579
|
}
|
1769
1580
|
|
1770
|
-
|
1581
|
+
status_error_.set(status_error);
|
1771
1582
|
GRPC_ERROR_UNREF(status_error);
|
1772
1583
|
|
1773
|
-
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
nullptr, 0)) {
|
1779
|
-
for (int n = 0; n < call->send_extra_metadata_count; n++) {
|
1780
|
-
GRPC_MDELEM_UNREF(call->send_extra_metadata[n].md);
|
1781
|
-
}
|
1782
|
-
call->send_extra_metadata_count = 0;
|
1783
|
-
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1784
|
-
goto done_with_error;
|
1785
|
-
}
|
1584
|
+
send_trailing_metadata_.Set(GrpcStatusMetadata(),
|
1585
|
+
op->data.send_status_from_server.status);
|
1586
|
+
|
1587
|
+
// Ignore any te metadata key value pairs specified.
|
1588
|
+
send_trailing_metadata_.Remove(TeMetadata());
|
1786
1589
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1787
|
-
&
|
1590
|
+
&send_trailing_metadata_;
|
1788
1591
|
stream_op_payload->send_trailing_metadata.sent =
|
1789
|
-
&
|
1592
|
+
&sent_server_trailing_metadata_;
|
1790
1593
|
has_send_ops = true;
|
1791
1594
|
break;
|
1792
1595
|
}
|
@@ -1796,27 +1599,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1796
1599
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1797
1600
|
goto done_with_error;
|
1798
1601
|
}
|
1799
|
-
if (
|
1602
|
+
if (received_initial_metadata_) {
|
1800
1603
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1801
1604
|
goto done_with_error;
|
1802
1605
|
}
|
1803
|
-
|
1804
|
-
|
1606
|
+
received_initial_metadata_ = true;
|
1607
|
+
buffered_metadata_[0] =
|
1805
1608
|
op->data.recv_initial_metadata.recv_initial_metadata;
|
1806
|
-
GRPC_CLOSURE_INIT(
|
1807
|
-
|
1808
|
-
|
1609
|
+
GRPC_CLOSURE_INIT(
|
1610
|
+
&receiving_initial_metadata_ready_,
|
1611
|
+
[](void* bctl, grpc_error_handle error) {
|
1612
|
+
static_cast<BatchControl*>(bctl)->ReceivingInitialMetadataReady(
|
1613
|
+
error);
|
1614
|
+
},
|
1615
|
+
bctl, grpc_schedule_on_exec_ctx);
|
1809
1616
|
stream_op->recv_initial_metadata = true;
|
1810
1617
|
stream_op_payload->recv_initial_metadata.recv_initial_metadata =
|
1811
|
-
&
|
1618
|
+
&recv_initial_metadata_;
|
1812
1619
|
stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
|
1813
|
-
&
|
1814
|
-
if (
|
1620
|
+
&receiving_initial_metadata_ready_;
|
1621
|
+
if (is_client()) {
|
1815
1622
|
stream_op_payload->recv_initial_metadata.trailing_metadata_available =
|
1816
|
-
&
|
1623
|
+
&is_trailers_only_;
|
1817
1624
|
} else {
|
1818
|
-
stream_op_payload->recv_initial_metadata.peer_string =
|
1819
|
-
&call->peer_string;
|
1625
|
+
stream_op_payload->recv_initial_metadata.peer_string = &peer_string_;
|
1820
1626
|
}
|
1821
1627
|
++num_recv_ops;
|
1822
1628
|
break;
|
@@ -1827,21 +1633,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1827
1633
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1828
1634
|
goto done_with_error;
|
1829
1635
|
}
|
1830
|
-
if (
|
1636
|
+
if (receiving_message_) {
|
1831
1637
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1832
1638
|
goto done_with_error;
|
1833
1639
|
}
|
1834
|
-
|
1640
|
+
receiving_message_ = true;
|
1835
1641
|
stream_op->recv_message = true;
|
1836
|
-
|
1837
|
-
stream_op_payload->recv_message.recv_message = &
|
1642
|
+
receiving_buffer_ = op->data.recv_message.recv_message;
|
1643
|
+
stream_op_payload->recv_message.recv_message = &receiving_stream_;
|
1838
1644
|
stream_op_payload->recv_message.call_failed_before_recv_message =
|
1839
|
-
&
|
1840
|
-
GRPC_CLOSURE_INIT(
|
1841
|
-
|
1842
|
-
|
1645
|
+
&call_failed_before_recv_message_;
|
1646
|
+
GRPC_CLOSURE_INIT(
|
1647
|
+
&receiving_stream_ready_,
|
1648
|
+
[](void* bctlp, grpc_error_handle error) {
|
1649
|
+
auto* bctl = static_cast<BatchControl*>(bctlp);
|
1650
|
+
auto* call = bctl->call_;
|
1651
|
+
// Yields the call combiner before processing the received
|
1652
|
+
// message.
|
1653
|
+
GRPC_CALL_COMBINER_STOP(call->call_combiner(),
|
1654
|
+
"recv_message_ready");
|
1655
|
+
bctl->ReceivingStreamReady(error);
|
1656
|
+
},
|
1657
|
+
bctl, grpc_schedule_on_exec_ctx);
|
1843
1658
|
stream_op_payload->recv_message.recv_message_ready =
|
1844
|
-
&
|
1659
|
+
&receiving_stream_ready_;
|
1845
1660
|
++num_recv_ops;
|
1846
1661
|
break;
|
1847
1662
|
}
|
@@ -1851,32 +1666,36 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1851
1666
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1852
1667
|
goto done_with_error;
|
1853
1668
|
}
|
1854
|
-
if (!
|
1669
|
+
if (!is_client()) {
|
1855
1670
|
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
|
1856
1671
|
goto done_with_error;
|
1857
1672
|
}
|
1858
|
-
if (
|
1673
|
+
if (requested_final_op_) {
|
1859
1674
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1860
1675
|
goto done_with_error;
|
1861
1676
|
}
|
1862
|
-
|
1863
|
-
|
1677
|
+
requested_final_op_ = true;
|
1678
|
+
buffered_metadata_[1] =
|
1864
1679
|
op->data.recv_status_on_client.trailing_metadata;
|
1865
|
-
|
1866
|
-
|
1680
|
+
final_op_.client.status = op->data.recv_status_on_client.status;
|
1681
|
+
final_op_.client.status_details =
|
1867
1682
|
op->data.recv_status_on_client.status_details;
|
1868
|
-
|
1683
|
+
final_op_.client.error_string =
|
1869
1684
|
op->data.recv_status_on_client.error_string;
|
1870
1685
|
stream_op->recv_trailing_metadata = true;
|
1871
1686
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
|
1872
|
-
&
|
1687
|
+
&recv_trailing_metadata_;
|
1873
1688
|
stream_op_payload->recv_trailing_metadata.collect_stats =
|
1874
|
-
&
|
1875
|
-
GRPC_CLOSURE_INIT(
|
1876
|
-
|
1877
|
-
|
1689
|
+
&final_info_.stats.transport_stream_stats;
|
1690
|
+
GRPC_CLOSURE_INIT(
|
1691
|
+
&receiving_trailing_metadata_ready_,
|
1692
|
+
[](void* bctl, grpc_error_handle error) {
|
1693
|
+
static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
|
1694
|
+
error);
|
1695
|
+
},
|
1696
|
+
bctl, grpc_schedule_on_exec_ctx);
|
1878
1697
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1879
|
-
&
|
1698
|
+
&receiving_trailing_metadata_ready_;
|
1880
1699
|
++num_recv_ops;
|
1881
1700
|
break;
|
1882
1701
|
}
|
@@ -1886,47 +1705,54 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1886
1705
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1887
1706
|
goto done_with_error;
|
1888
1707
|
}
|
1889
|
-
if (
|
1708
|
+
if (is_client()) {
|
1890
1709
|
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
|
1891
1710
|
goto done_with_error;
|
1892
1711
|
}
|
1893
|
-
if (
|
1712
|
+
if (requested_final_op_) {
|
1894
1713
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1895
1714
|
goto done_with_error;
|
1896
1715
|
}
|
1897
|
-
|
1898
|
-
|
1899
|
-
op->data.recv_close_on_server.cancelled;
|
1716
|
+
requested_final_op_ = true;
|
1717
|
+
final_op_.server.cancelled = op->data.recv_close_on_server.cancelled;
|
1900
1718
|
stream_op->recv_trailing_metadata = true;
|
1901
1719
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
|
1902
|
-
&
|
1720
|
+
&recv_trailing_metadata_;
|
1903
1721
|
stream_op_payload->recv_trailing_metadata.collect_stats =
|
1904
|
-
&
|
1905
|
-
GRPC_CLOSURE_INIT(
|
1906
|
-
|
1907
|
-
|
1722
|
+
&final_info_.stats.transport_stream_stats;
|
1723
|
+
GRPC_CLOSURE_INIT(
|
1724
|
+
&receiving_trailing_metadata_ready_,
|
1725
|
+
[](void* bctl, grpc_error_handle error) {
|
1726
|
+
static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
|
1727
|
+
error);
|
1728
|
+
},
|
1729
|
+
bctl, grpc_schedule_on_exec_ctx);
|
1908
1730
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1909
|
-
&
|
1731
|
+
&receiving_trailing_metadata_ready_;
|
1910
1732
|
++num_recv_ops;
|
1911
1733
|
break;
|
1912
1734
|
}
|
1913
1735
|
}
|
1914
1736
|
}
|
1915
1737
|
|
1916
|
-
|
1738
|
+
InternalRef("completion");
|
1917
1739
|
if (!is_notify_tag_closure) {
|
1918
|
-
GPR_ASSERT(grpc_cq_begin_op(
|
1740
|
+
GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag));
|
1919
1741
|
}
|
1920
1742
|
bctl->set_num_steps_to_complete((has_send_ops ? 1 : 0) + num_recv_ops);
|
1921
1743
|
|
1922
1744
|
if (has_send_ops) {
|
1923
|
-
GRPC_CLOSURE_INIT(
|
1924
|
-
|
1925
|
-
|
1745
|
+
GRPC_CLOSURE_INIT(
|
1746
|
+
&bctl->finish_batch_,
|
1747
|
+
[](void* bctl, grpc_error_handle error) {
|
1748
|
+
static_cast<BatchControl*>(bctl)->FinishBatch(error);
|
1749
|
+
},
|
1750
|
+
bctl, grpc_schedule_on_exec_ctx);
|
1751
|
+
stream_op->on_complete = &bctl->finish_batch_;
|
1926
1752
|
}
|
1927
1753
|
|
1928
|
-
gpr_atm_rel_store(&
|
1929
|
-
|
1754
|
+
gpr_atm_rel_store(&any_ops_sent_atm_, 1);
|
1755
|
+
ExecuteBatch(stream_op, &bctl->start_batch_);
|
1930
1756
|
|
1931
1757
|
done:
|
1932
1758
|
return error;
|
@@ -1934,87 +1760,172 @@ done:
|
|
1934
1760
|
done_with_error:
|
1935
1761
|
/* reverse any mutations that occurred */
|
1936
1762
|
if (stream_op->send_initial_metadata) {
|
1937
|
-
|
1938
|
-
|
1763
|
+
sent_initial_metadata_ = false;
|
1764
|
+
send_initial_metadata_.Clear();
|
1939
1765
|
}
|
1940
1766
|
if (stream_op->send_message) {
|
1941
|
-
|
1942
|
-
call->sending_stream->Orphan()
|
1767
|
+
sending_message_ = false;
|
1768
|
+
// No need to invoke call->sending_stream->Orphan() explicitly.
|
1769
|
+
// stream_op_payload->send_message.send_message.reset() calls Deletor
|
1770
|
+
// of call->sending_stream which in-turn invokes the Orphan() method.
|
1943
1771
|
stream_op_payload->send_message.send_message.reset();
|
1944
1772
|
}
|
1945
1773
|
if (stream_op->send_trailing_metadata) {
|
1946
|
-
|
1947
|
-
|
1774
|
+
sent_final_op_ = false;
|
1775
|
+
send_trailing_metadata_.Clear();
|
1948
1776
|
}
|
1949
1777
|
if (stream_op->recv_initial_metadata) {
|
1950
|
-
|
1778
|
+
received_initial_metadata_ = false;
|
1951
1779
|
}
|
1952
1780
|
if (stream_op->recv_message) {
|
1953
|
-
|
1781
|
+
receiving_message_ = false;
|
1954
1782
|
}
|
1955
1783
|
if (stream_op->recv_trailing_metadata) {
|
1956
|
-
|
1784
|
+
requested_final_op_ = false;
|
1957
1785
|
}
|
1958
1786
|
goto done;
|
1959
1787
|
}
|
1960
1788
|
|
1789
|
+
void FilterStackCall::ContextSet(grpc_context_index elem, void* value,
|
1790
|
+
void (*destroy)(void*)) {
|
1791
|
+
if (context_[elem].destroy) {
|
1792
|
+
context_[elem].destroy(context_[elem].value);
|
1793
|
+
}
|
1794
|
+
context_[elem].value = value;
|
1795
|
+
context_[elem].destroy = destroy;
|
1796
|
+
}
|
1797
|
+
|
1798
|
+
} // namespace grpc_core
|
1799
|
+
|
1800
|
+
void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
|
1801
|
+
grpc_core::ExecCtx exec_ctx;
|
1802
|
+
return grpc_core::Call::FromC(call)->arena()->Alloc(size);
|
1803
|
+
}
|
1804
|
+
|
1805
|
+
size_t grpc_call_get_initial_size_estimate() {
|
1806
|
+
return grpc_core::FilterStackCall::InitialSizeEstimate();
|
1807
|
+
}
|
1808
|
+
|
1809
|
+
grpc_error_handle grpc_call_create(grpc_call_create_args* args,
|
1810
|
+
grpc_call** out_call) {
|
1811
|
+
return grpc_core::FilterStackCall::Create(args, out_call);
|
1812
|
+
}
|
1813
|
+
|
1814
|
+
void grpc_call_set_completion_queue(grpc_call* call,
|
1815
|
+
grpc_completion_queue* cq) {
|
1816
|
+
grpc_core::Call::FromC(call)->SetCompletionQueue(cq);
|
1817
|
+
}
|
1818
|
+
|
1819
|
+
void grpc_call_ref(grpc_call* c) { grpc_core::Call::FromC(c)->ExternalRef(); }
|
1820
|
+
|
1821
|
+
void grpc_call_unref(grpc_call* c) {
|
1822
|
+
grpc_core::Call::FromC(c)->ExternalUnref();
|
1823
|
+
}
|
1824
|
+
|
1825
|
+
char* grpc_call_get_peer(grpc_call* call) {
|
1826
|
+
return grpc_core::Call::FromC(call)->GetPeer();
|
1827
|
+
}
|
1828
|
+
|
1829
|
+
grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
|
1830
|
+
return grpc_core::FilterStackCall::FromTopElem(surface_element)->c_ptr();
|
1831
|
+
}
|
1832
|
+
|
1833
|
+
grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
|
1834
|
+
GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
|
1835
|
+
GPR_ASSERT(reserved == nullptr);
|
1836
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1837
|
+
grpc_core::ExecCtx exec_ctx;
|
1838
|
+
grpc_core::Call::FromC(call)->CancelWithError(GRPC_ERROR_CANCELLED);
|
1839
|
+
return GRPC_CALL_OK;
|
1840
|
+
}
|
1841
|
+
|
1842
|
+
grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
|
1843
|
+
grpc_status_code status,
|
1844
|
+
const char* description,
|
1845
|
+
void* reserved) {
|
1846
|
+
GRPC_API_TRACE(
|
1847
|
+
"grpc_call_cancel_with_status("
|
1848
|
+
"c=%p, status=%d, description=%s, reserved=%p)",
|
1849
|
+
4, (c, (int)status, description, reserved));
|
1850
|
+
GPR_ASSERT(reserved == nullptr);
|
1851
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1852
|
+
grpc_core::ExecCtx exec_ctx;
|
1853
|
+
grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
|
1854
|
+
return GRPC_CALL_OK;
|
1855
|
+
}
|
1856
|
+
|
1857
|
+
void grpc_call_cancel_internal(grpc_call* call) {
|
1858
|
+
grpc_core::Call::FromC(call)->CancelWithError(GRPC_ERROR_CANCELLED);
|
1859
|
+
}
|
1860
|
+
|
1861
|
+
grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
|
1862
|
+
grpc_call* call) {
|
1863
|
+
return grpc_core::Call::FromC(call)->test_only_compression_algorithm();
|
1864
|
+
}
|
1865
|
+
|
1866
|
+
uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
1867
|
+
return grpc_core::Call::FromC(call)->test_only_message_flags();
|
1868
|
+
}
|
1869
|
+
|
1870
|
+
uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
1871
|
+
return grpc_core::Call::FromC(call)->test_only_encodings_accepted_by_peer();
|
1872
|
+
}
|
1873
|
+
|
1874
|
+
grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
|
1875
|
+
return grpc_core::Call::FromC(call)->arena();
|
1876
|
+
}
|
1877
|
+
|
1878
|
+
grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
|
1879
|
+
return grpc_core::Call::FromC(call)->call_stack();
|
1880
|
+
}
|
1881
|
+
|
1961
1882
|
grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
|
1962
1883
|
size_t nops, void* tag, void* reserved) {
|
1963
|
-
grpc_call_error err;
|
1964
|
-
|
1965
1884
|
GRPC_API_TRACE(
|
1966
1885
|
"grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, "
|
1967
1886
|
"reserved=%p)",
|
1968
1887
|
5, (call, ops, (unsigned long)nops, tag, reserved));
|
1969
1888
|
|
1970
1889
|
if (reserved != nullptr) {
|
1971
|
-
|
1890
|
+
return GRPC_CALL_ERROR;
|
1972
1891
|
} else {
|
1973
1892
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1974
1893
|
grpc_core::ExecCtx exec_ctx;
|
1975
|
-
|
1894
|
+
return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
|
1976
1895
|
}
|
1977
|
-
|
1978
|
-
return err;
|
1979
1896
|
}
|
1980
1897
|
|
1981
1898
|
grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
|
1982
1899
|
const grpc_op* ops,
|
1983
1900
|
size_t nops,
|
1984
1901
|
grpc_closure* closure) {
|
1985
|
-
return
|
1902
|
+
return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
|
1986
1903
|
}
|
1987
1904
|
|
1988
1905
|
void grpc_call_context_set(grpc_call* call, grpc_context_index elem,
|
1989
1906
|
void* value, void (*destroy)(void* value)) {
|
1990
|
-
|
1991
|
-
call->context[elem].destroy(call->context[elem].value);
|
1992
|
-
}
|
1993
|
-
call->context[elem].value = value;
|
1994
|
-
call->context[elem].destroy = destroy;
|
1907
|
+
return grpc_core::Call::FromC(call)->ContextSet(elem, value, destroy);
|
1995
1908
|
}
|
1996
1909
|
|
1997
1910
|
void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
|
1998
|
-
return call->
|
1911
|
+
return grpc_core::Call::FromC(call)->ContextGet(elem);
|
1999
1912
|
}
|
2000
1913
|
|
2001
|
-
uint8_t grpc_call_is_client(grpc_call* call) {
|
1914
|
+
uint8_t grpc_call_is_client(grpc_call* call) {
|
1915
|
+
return grpc_core::Call::FromC(call)->is_client();
|
1916
|
+
}
|
2002
1917
|
|
2003
1918
|
grpc_compression_algorithm grpc_call_compression_for_level(
|
2004
1919
|
grpc_call* call, grpc_compression_level level) {
|
2005
|
-
|
2006
|
-
compression_algorithm_for_level_locked(call, level);
|
2007
|
-
return algo;
|
1920
|
+
return grpc_core::Call::FromC(call)->compression_for_level(level);
|
2008
1921
|
}
|
2009
1922
|
|
2010
1923
|
bool grpc_call_is_trailers_only(const grpc_call* call) {
|
2011
|
-
|
2012
|
-
GPR_DEBUG_ASSERT(!result || call->recv_initial_metadata.empty());
|
2013
|
-
return result;
|
1924
|
+
return grpc_core::Call::FromC(call)->is_trailers_only();
|
2014
1925
|
}
|
2015
1926
|
|
2016
1927
|
int grpc_call_failed_before_recv_message(const grpc_call* c) {
|
2017
|
-
return c->
|
1928
|
+
return grpc_core::Call::FromC(c)->failed_before_recv_message();
|
2018
1929
|
}
|
2019
1930
|
|
2020
1931
|
const char* grpc_call_error_to_string(grpc_call_error error) {
|