grpc 1.40.0 → 1.46.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +462 -267
- data/etc/roots.pem +335 -326
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/event_engine/endpoint_config.h +6 -11
- data/include/grpc/event_engine/event_engine.h +164 -95
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
- data/include/grpc/event_engine/memory_allocator.h +226 -0
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +1 -3
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +54 -18
- data/include/grpc/grpc_posix.h +22 -18
- data/include/grpc/grpc_security.h +328 -193
- data/include/grpc/grpc_security_constants.h +2 -14
- data/include/grpc/impl/codegen/atm.h +5 -3
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
- data/include/grpc/impl/codegen/atm_windows.h +2 -0
- data/include/grpc/impl/codegen/byte_buffer.h +2 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/fork.h +2 -0
- data/include/grpc/impl/codegen/gpr_slice.h +2 -0
- data/include/grpc/impl/codegen/gpr_types.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +28 -26
- data/include/grpc/impl/codegen/log.h +2 -0
- data/include/grpc/impl/codegen/port_platform.h +37 -22
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +6 -1
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +2 -0
- data/include/grpc/slice.h +1 -12
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +1 -1
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_windows.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/sync.h +1 -1
- data/include/grpc/support/sync_abseil.h +1 -1
- data/include/grpc/support/sync_custom.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_windows.h +1 -1
- data/include/grpc/support/time.h +2 -2
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- 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/channel_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +24 -27
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +14 -9
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +75 -94
- data/src/core/ext/filters/client_channel/client_channel.cc +532 -501
- data/src/core/ext/filters/client_channel/client_channel.h +115 -64
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -24
- data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +5 -6
- data/src/core/ext/filters/client_channel/connector.h +19 -19
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -7
- 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 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +128 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -159
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +30 -34
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- 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/child_policy_handler.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -18
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +247 -150
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- 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 +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +17 -18
- 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 +73 -39
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +226 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +126 -79
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2542 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +68 -62
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +106 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +119 -159
- 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_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +162 -77
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +29 -19
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +331 -488
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +115 -106
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +296 -324
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +23 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +37 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +153 -275
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +38 -25
- 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 +96 -254
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +23 -20
- 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 +85 -69
- 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 +509 -439
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -15
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +282 -238
- 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 +14 -59
- 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 +51 -37
- data/src/core/ext/filters/client_channel/subchannel.cc +132 -197
- data/src/core/ext/filters/client_channel/subchannel.h +36 -56
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- 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 +31 -33
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +158 -401
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -27
- data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +83 -548
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +55 -73
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +49 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +22 -35
- data/src/core/ext/filters/http/server/http_server_filter.cc +64 -274
- data/src/core/ext/filters/message_size/message_size_filter.cc +49 -58
- 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/filters/{workarounds/workaround_cronet_compression_filter.h → server_config_selector/server_config_selector_filter.h} +11 -6
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +245 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +294 -95
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +368 -349
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -4
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +3 -5
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +63 -44
- data/src/core/ext/transport/chttp2/transport/flow_control.h +18 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +11 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +10 -9
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -8
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +40 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +12 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +764 -1062
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +75 -178
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +22 -48
- data/src/core/ext/transport/chttp2/transport/parsing.cc +61 -212
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.cc +7 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +125 -169
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +132 -173
- 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 +248 -210
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1382 -685
- 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 +44 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +52 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +57 -18
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -117
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +761 -386
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +240 -200
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1376 -667
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +224 -95
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +337 -255
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1901 -790
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +50 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +280 -99
- 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 +75 -54
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +398 -190
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +53 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +220 -171
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1224 -567
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +106 -46
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +561 -171
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +17 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -95
- 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 +146 -118
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +853 -415
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +797 -345
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +65 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +205 -122
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1097 -393
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +36 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +28 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +97 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +83 -34
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +101 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +54 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +214 -109
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +449 -131
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +389 -188
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +42 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +99 -72
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +541 -259
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +105 -80
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +610 -307
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +32 -17
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +112 -49
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +25 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +79 -40
- 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 +83 -62
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +463 -235
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +93 -60
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +483 -214
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +130 -100
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +628 -282
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +54 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +291 -142
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +665 -567
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3977 -1883
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +168 -72
- 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 +28 -14
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +91 -46
- 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 +18 -5
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +42 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +46 -29
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +219 -112
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +52 -37
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +282 -134
- 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 +27 -14
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +94 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +284 -225
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1673 -738
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -54
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +621 -216
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +42 -27
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -87
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +673 -259
- 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 +16 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +92 -73
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +516 -260
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +121 -62
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +74 -57
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +379 -186
- 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 +35 -19
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +149 -81
- 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 +29 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +116 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +58 -31
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +56 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +36 -21
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +137 -69
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +137 -65
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +99 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +170 -83
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +273 -145
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +268 -132
- 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 +10 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
- 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 +24 -10
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +76 -36
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +118 -52
- 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 +20 -7
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -19
- 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 +23 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +24 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +155 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +791 -385
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +159 -127
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +869 -402
- data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
- data/src/core/ext/upb-generated/google/api/http.upb.h +236 -115
- 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 +19 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +46 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2263 -1053
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +44 -20
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +197 -93
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +44 -20
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +296 -149
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +60 -30
- 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 +33 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +111 -48
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +753 -365
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +90 -41
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +70 -35
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +448 -232
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
- 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 +76 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +213 -57
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +62 -18
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +17 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -20
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +57 -18
- data/src/core/ext/upb-generated/validate/validate.upb.c +407 -311
- data/src/core/ext/upb-generated/validate/validate.upb.h +2904 -1200
- 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 +105 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
- 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 +19 -6
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +38 -19
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +32 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +112 -55
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +27 -13
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +61 -30
- 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 +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +63 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +35 -21
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +144 -70
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +24 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +66 -30
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
- 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 +46 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
- 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 +445 -458
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
- 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 +121 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +75 -70
- 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 -184
- 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 +263 -252
- 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 +98 -83
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
- 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 +40 -47
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +30 -25
- 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 +845 -913
- 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 +291 -311
- 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 +173 -141
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
- 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 -211
- 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 +24 -27
- 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 +107 -164
- 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 +10 -18
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
- 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 +64 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- 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 +18 -22
- 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 +32 -38
- 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 +20 -26
- 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 +23 -27
- 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 +39 -45
- 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 +25 -29
- 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 +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
- 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 +214 -3608
- data/src/core/ext/xds/xds_api.h +62 -580
- data/src/core/ext/xds/xds_bootstrap.cc +241 -167
- data/src/core/ext/xds/xds_bootstrap.h +43 -15
- data/src/core/ext/xds/xds_certificate_provider.cc +5 -3
- data/src/core/ext/xds/xds_certificate_provider.h +10 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
- data/src/core/ext/xds/xds_client.cc +872 -899
- data/src/core/ext/xds/xds_client.h +132 -159
- data/src/core/ext/xds/xds_client_stats.cc +31 -30
- data/src/core/ext/xds/xds_client_stats.h +12 -11
- 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 +11 -10
- data/src/core/ext/xds/xds_http_fault_filter.h +6 -5
- data/src/core/ext/xds/xds_http_filters.cc +12 -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/{lib/transport/authority_override.h → ext/xds/xds_resource_type.cc} +11 -15
- 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 +1057 -289
- data/src/core/lib/address_utils/parse_address.cc +26 -8
- 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 +173 -16
- data/src/core/lib/channel/channel_args.h +214 -1
- 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 +15 -6
- data/src/core/lib/channel/channel_stack.h +39 -6
- data/src/core/lib/channel/channel_stack_builder.cc +24 -283
- data/src/core/lib/channel/channel_stack_builder.h +118 -157
- 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 +8 -10
- data/src/core/lib/channel/channel_trace.h +2 -1
- data/src/core/lib/channel/channelz.cc +44 -39
- data/src/core/lib/channel/channelz.h +29 -29
- data/src/core/lib/channel/channelz_registry.cc +8 -7
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +10 -6
- data/src/core/lib/channel/connected_channel.h +2 -2
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/handshaker.cc +3 -2
- data/src/core/lib/channel/handshaker.h +2 -3
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -70
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- 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/channel/status_util.h +2 -2
- data/src/core/lib/compression/compression.cc +22 -114
- data/src/core/lib/compression/compression_internal.cc +139 -207
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +13 -13
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +104 -0
- data/src/core/lib/config/core_configuration.h +196 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +1 -0
- data/src/core/lib/debug/stats_data.cc +17 -20
- data/src/core/lib/debug/stats_data.h +19 -21
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +4 -3
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -2
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/{iomgr/event_engine/iomgr.h → event_engine/default_event_engine_factory.cc} +11 -8
- 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/event_engine/sockaddr.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +4 -3
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -2
- data/src/core/lib/gpr/env_posix.cc +2 -3
- data/src/core/lib/gpr/log.cc +3 -3
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +7 -4
- data/src/core/lib/gpr/log_posix.cc +6 -3
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/string.h +2 -2
- data/src/core/lib/gpr/sync.cc +2 -2
- data/src/core/lib/gpr/sync_abseil.cc +7 -6
- data/src/core/lib/gpr/sync_posix.cc +4 -3
- data/src/core/lib/gpr/time.cc +5 -3
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +126 -40
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +97 -32
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +207 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +253 -0
- data/src/core/lib/{transport/authority_override.cc → gprpp/construct_destruct.h} +16 -17
- 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/dual_ref_counted.h +25 -26
- data/src/core/lib/gprpp/fork.cc +14 -12
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +14 -14
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +10 -8
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +7 -7
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +4 -4
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +21 -19
- 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 +65 -37
- data/src/core/lib/gprpp/status_helper.h +14 -16
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +434 -0
- data/src/core/lib/gprpp/thd_posix.cc +5 -5
- data/src/core/lib/gprpp/thd_windows.cc +4 -11
- data/src/core/lib/gprpp/time.cc +198 -0
- data/src/core/lib/gprpp/time.h +292 -0
- data/src/core/lib/gprpp/time_util.cc +2 -2
- data/src/core/lib/gprpp/time_util.h +2 -2
- data/src/core/lib/http/format_request.cc +29 -25
- data/src/core/lib/http/format_request.h +8 -6
- data/src/core/lib/http/httpcli.cc +298 -208
- data/src/core/lib/http/httpcli.h +183 -85
- data/src/core/lib/http/httpcli_security_connector.cc +67 -81
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +82 -11
- data/src/core/lib/http/parser.h +16 -2
- data/src/core/lib/iomgr/buffer_list.cc +11 -10
- data/src/core/lib/iomgr/buffer_list.h +19 -20
- data/src/core/lib/iomgr/call_combiner.cc +45 -16
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +34 -26
- data/src/core/lib/iomgr/combiner.h +1 -0
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +0 -4
- data/src/core/lib/iomgr/endpoint.h +1 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +15 -42
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair.h +1 -0
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +1 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +123 -59
- data/src/core/lib/iomgr/error.h +73 -20
- data/src/core/lib/iomgr/error_cfstream.cc +7 -2
- data/src/core/lib/iomgr/error_internal.h +1 -0
- data/src/core/lib/iomgr/ev_apple.cc +6 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -31
- data/src/core/lib/iomgr/ev_poll_posix.cc +49 -52
- data/src/core/lib/iomgr/ev_posix.cc +10 -12
- data/src/core/lib/iomgr/ev_posix.h +1 -1
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +7 -27
- data/src/core/lib/iomgr/event_engine/endpoint.h +1 -2
- data/src/core/lib/iomgr/event_engine/iomgr.cc +10 -30
- data/src/core/lib/iomgr/event_engine/pollset.cc +6 -6
- 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 +70 -47
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +70 -37
- data/src/core/lib/iomgr/event_engine/timer.cc +13 -8
- data/src/core/lib/iomgr/exec_ctx.cc +28 -109
- data/src/core/lib/iomgr/exec_ctx.h +28 -52
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -2
- data/src/core/lib/iomgr/executor/threadpool.h +2 -1
- data/src/core/lib/iomgr/executor.cc +30 -39
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +2 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +10 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr.h +2 -2
- data/src/core/lib/iomgr/iomgr_internal.cc +6 -10
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- 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 +3 -4
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/polling_entity.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_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +6 -16
- data/src/core/lib/iomgr/python_util.h +1 -0
- data/src/core/lib/iomgr/resolve_address.cc +7 -25
- data/src/core/lib/iomgr/resolve_address.h +47 -48
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +90 -78
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +99 -82
- 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.h +1 -1
- data/src/core/lib/iomgr/{socket_utils_uv.cc → sockaddr_utils_posix.cc} +21 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.h +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -22
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.h +5 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -24
- data/src/core/lib/iomgr/tcp_client_posix.cc +17 -27
- data/src/core/lib/iomgr/tcp_client_posix.h +4 -2
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -10
- data/src/core/lib/iomgr/tcp_posix.cc +143 -120
- data/src/core/lib/iomgr/tcp_posix.h +9 -12
- data/src/core/lib/iomgr/tcp_server.h +4 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +40 -29
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +21 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -10
- data/src/core/lib/iomgr/tcp_windows.cc +22 -39
- data/src/core/lib/iomgr/tcp_windows.h +1 -1
- data/src/core/lib/iomgr/timer.cc +3 -2
- data/src/core/lib/iomgr/timer.h +11 -7
- data/src/core/lib/iomgr/timer_generic.cc +113 -124
- data/src/core/lib/iomgr/timer_generic.h +1 -0
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +15 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -0
- data/src/core/lib/iomgr/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +17 -5
- data/src/core/lib/json/json_reader.cc +92 -52
- data/src/core/lib/json/json_util.cc +71 -3
- data/src/core/lib/json/json_util.h +67 -117
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/matchers/matchers.h +0 -1
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- 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 -29
- 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 +5 -5
- 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 +18 -14
- data/src/core/lib/{gprpp → resource_quota}/arena.h +37 -16
- 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 +12 -4
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +39 -36
- 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 +15 -10
- 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/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- 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 +28 -86
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
- data/src/core/lib/security/credentials/credentials.cc +11 -10
- data/src/core/lib/security/credentials/credentials.h +81 -82
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +61 -59
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +112 -68
- data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -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 +35 -18
- 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/credentials_generic.cc +1 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +77 -20
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
- 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 +5 -7
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +56 -51
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +59 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
- 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 +160 -181
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +61 -33
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +98 -156
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -18
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +10 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +62 -12
- 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 +75 -151
- 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 +13 -24
- 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_fallback.cc +1 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +4 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
- data/src/core/lib/security/security_connector/security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/security_connector.h +26 -22
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +14 -20
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +41 -36
- data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +366 -211
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +69 -48
- data/src/core/lib/security/transport/auth_filters.h +39 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +98 -363
- data/src/core/lib/security/transport/secure_endpoint.cc +202 -143
- data/src/core/lib/security/transport/secure_endpoint.h +2 -1
- data/src/core/lib/security/transport/security_handshaker.cc +95 -54
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +41 -37
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/security/util/json_util.cc +6 -8
- data/src/core/lib/service_config/service_config.h +82 -0
- data/src/core/lib/service_config/service_config_call_data.h +72 -0
- data/src/core/{ext/filters/client_channel/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
- data/src/core/{ext/filters/client_channel/service_config.h → lib/service_config/service_config_impl.h} +16 -18
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +31 -27
- data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.h +39 -28
- data/src/core/lib/slice/percent_encoding.cc +84 -97
- data/src/core/lib/slice/percent_encoding.h +23 -28
- data/src/core/lib/slice/slice.cc +80 -200
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_api.cc} +15 -12
- data/src/core/lib/slice/slice_buffer.cc +10 -7
- data/src/core/lib/slice/slice_internal.h +15 -277
- data/src/core/lib/slice/slice_refcount.cc +35 -0
- data/src/core/lib/slice/slice_refcount.h +46 -0
- data/src/core/lib/slice/slice_refcount_base.h +61 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
- data/src/core/lib/surface/call.cc +1142 -1247
- data/src/core/lib/surface/call.h +8 -28
- data/src/core/lib/surface/call_details.cc +2 -2
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/channel.cc +72 -103
- data/src/core/lib/surface/channel.h +15 -23
- data/src/core/lib/surface/channel_init.cc +22 -76
- data/src/core/lib/surface/channel_init.h +44 -40
- data/src/core/lib/surface/channel_ping.cc +1 -2
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +70 -78
- data/src/core/lib/surface/completion_queue_factory.cc +2 -1
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/init.cc +81 -57
- data/src/core/lib/surface/init.h +0 -3
- data/src/core/lib/surface/lame_client.cc +47 -32
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +71 -118
- data/src/core/lib/surface/server.h +40 -37
- data/src/core/lib/surface/validate_metadata.cc +49 -18
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +11 -12
- 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/byte_stream.h +1 -0
- data/src/core/lib/transport/connectivity_state.cc +8 -5
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/error_utils.cc +48 -20
- data/src/core/lib/transport/error_utils.h +3 -2
- data/src/core/lib/transport/metadata_batch.h +1352 -171
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +401 -0
- 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 +11 -32
- 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 +7 -29
- 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 +69 -102
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
- data/src/core/tsi/alts/crypt/gsec.h +2 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -27
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -15
- 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/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +42 -87
- 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.cc +20 -53
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +229 -62
- data/src/core/tsi/ssl_transport_security.h +50 -9
- data/src/core/tsi/transport_security.cc +15 -3
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_grpc.h +1 -0
- data/src/core/tsi/transport_security_interface.h +28 -0
- data/src/ruby/ext/grpc/extconf.rb +21 -11
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +5 -5
- data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
- data/src/ruby/ext/grpc/rb_channel.c +15 -10
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc.c +5 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +30 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +45 -51
- data/src/ruby/ext/grpc/rb_server.c +13 -9
- data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/src/ruby/spec/client_server_spec.rb +1 -1
- 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.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +15 -10
- 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/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +685 -673
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +67 -54
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +55 -37
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.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/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +86 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +57 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +291 -199
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +9 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
- 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/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -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/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +36 -2
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -2
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +32 -9
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- 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 +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.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 -22
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +233 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +6 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +232 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
- 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 +2 -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 +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +23 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +76 -31
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1504 -561
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +3 -0
- 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 +35 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +26 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +5 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +24 -18
- 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 +29 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +110 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +725 -189
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -16
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -16
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +310 -359
- data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +110 -159
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -142
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +106 -99
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +90 -51
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +11 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -51
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +121 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +210 -212
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +48 -34
- 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/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- 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 +774 -351
- data/third_party/upb/upb/decode.h +66 -12
- data/third_party/upb/upb/decode_fast.c +596 -581
- data/third_party/upb/upb/decode_fast.h +40 -13
- data/third_party/upb/upb/decode_internal.h +211 -0
- data/third_party/upb/upb/def.c +2151 -1068
- data/third_party/upb/upb/def.h +352 -258
- data/third_party/upb/upb/def.hpp +160 -161
- data/third_party/upb/upb/encode.c +291 -165
- data/third_party/upb/upb/encode.h +38 -13
- 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 +274 -102
- data/third_party/upb/upb/msg.h +83 -582
- data/third_party/upb/upb/msg_internal.h +831 -0
- data/third_party/upb/upb/port_def.inc +93 -24
- data/third_party/upb/upb/port_undef.inc +39 -1
- data/third_party/upb/upb/reflection.c +312 -240
- data/third_party/upb/upb/reflection.h +119 -67
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +406 -197
- data/third_party/upb/upb/table_internal.h +385 -0
- data/third_party/upb/upb/text_encode.c +141 -90
- data/third_party/upb/upb/text_encode.h +31 -5
- data/third_party/upb/upb/upb.c +164 -66
- data/third_party/upb/upb/upb.h +182 -146
- data/third_party/upb/upb/upb.hpp +50 -23
- data/third_party/upb/upb/upb_internal.h +68 -0
- 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 +559 -260
- data/include/grpc/event_engine/slice_allocator.h +0 -66
- 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 -84
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -441
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -562
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -125
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -91
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -213
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -54
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -77
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -129
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -243
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- 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 -56
- 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 -56
- 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 -56
- 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 -56
- 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 -56
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
- 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/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -61
- data/src/core/lib/compression/compression_args.cc +0 -135
- data/src/core/lib/compression/compression_args.h +0 -56
- data/src/core/lib/compression/stream_compression.cc +0 -80
- data/src/core/lib/compression/stream_compression.h +0 -116
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -90
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/gpr/tls_gcc.h +0 -52
- data/src/core/lib/gpr/tls_msvc.h +0 -54
- data/src/core/lib/gpr/tls_pthread.cc +0 -30
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gpr/tls_stdcpp.h +0 -48
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1661
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- 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/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/pollset_custom.cc +0 -106
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/pollset_uv.cc +0 -95
- data/src/core/lib/iomgr/pollset_uv.h +0 -36
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
- data/src/core/lib/iomgr/resource_quota.cc +0 -1019
- data/src/core/lib/iomgr/resource_quota.h +0 -177
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -160
- data/src/core/lib/iomgr/tcp_custom.cc +0 -389
- data/src/core/lib/iomgr/tcp_custom.h +0 -85
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -484
- data/src/core/lib/iomgr/tcp_uv.cc +0 -421
- data/src/core/lib/iomgr/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -748
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
- data/src/core/lib/slice/slice_intern.cc +0 -373
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/surface/init_secure.cc +0 -81
- data/src/core/lib/transport/metadata.cc +0 -693
- data/src/core/lib/transport/metadata.h +0 -446
- data/src/core/lib/transport/metadata_batch.cc +0 -430
- data/src/core/lib/transport/static_metadata.cc +0 -1249
- data/src/core/lib/transport/static_metadata.h +0 -604
- data/src/core/lib/transport/status_metadata.cc +0 -62
- 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
- data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
- data/third_party/upb/upb/decode.int.h +0 -163
- data/third_party/upb/upb/table.int.h +0 -475
- data/third_party/upb/upb/upb.int.h +0 -29
@@ -18,12 +18,15 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include "src/core/lib/surface/call.h"
|
22
|
+
|
21
23
|
#include <assert.h>
|
22
24
|
#include <limits.h>
|
23
25
|
#include <stdio.h>
|
24
26
|
#include <stdlib.h>
|
25
27
|
#include <string.h>
|
26
28
|
|
29
|
+
#include <atomic>
|
27
30
|
#include <string>
|
28
31
|
|
29
32
|
#include "absl/strings/str_cat.h"
|
@@ -37,212 +40,357 @@
|
|
37
40
|
#include <grpc/support/string_util.h>
|
38
41
|
|
39
42
|
#include "src/core/lib/channel/channel_stack.h"
|
40
|
-
#include "src/core/lib/
|
43
|
+
#include "src/core/lib/channel/context.h"
|
44
|
+
#include "src/core/lib/compression/compression_internal.h"
|
41
45
|
#include "src/core/lib/debug/stats.h"
|
42
46
|
#include "src/core/lib/gpr/alloc.h"
|
43
47
|
#include "src/core/lib/gpr/string.h"
|
44
48
|
#include "src/core/lib/gpr/time_precise.h"
|
45
49
|
#include "src/core/lib/gpr/useful.h"
|
46
|
-
#include "src/core/lib/gprpp/arena.h"
|
47
50
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
48
51
|
#include "src/core/lib/gprpp/ref_counted.h"
|
49
52
|
#include "src/core/lib/iomgr/timer.h"
|
50
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"
|
56
|
+
#include "src/core/lib/slice/slice_split.h"
|
51
57
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
52
|
-
#include "src/core/lib/slice/slice_utils.h"
|
53
58
|
#include "src/core/lib/surface/api_trace.h"
|
54
|
-
#include "src/core/lib/surface/call.h"
|
55
59
|
#include "src/core/lib/surface/call_test_only.h"
|
56
60
|
#include "src/core/lib/surface/channel.h"
|
57
61
|
#include "src/core/lib/surface/completion_queue.h"
|
58
62
|
#include "src/core/lib/surface/server.h"
|
59
63
|
#include "src/core/lib/surface/validate_metadata.h"
|
60
64
|
#include "src/core/lib/transport/error_utils.h"
|
61
|
-
#include "src/core/lib/transport/metadata.h"
|
62
|
-
#include "src/core/lib/transport/static_metadata.h"
|
63
|
-
#include "src/core/lib/transport/status_metadata.h"
|
64
65
|
#include "src/core/lib/transport/transport.h"
|
65
66
|
|
66
|
-
|
67
|
-
|
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
|
-
|
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)));
|
112
159
|
}
|
113
|
-
|
114
|
-
|
160
|
+
|
161
|
+
bool Completed() override {
|
162
|
+
return gpr_atm_acq_load(&received_final_op_atm_) != 0;
|
115
163
|
}
|
116
|
-
};
|
117
164
|
|
118
|
-
|
119
|
-
|
120
|
-
|
165
|
+
// TODO(ctiller): return absl::StatusOr<SomeSmartPointer<Call>>?
|
166
|
+
static grpc_error_handle Create(grpc_call_create_args* args,
|
167
|
+
grpc_call** out_call);
|
121
168
|
|
122
|
-
|
123
|
-
|
124
|
-
}
|
169
|
+
static Call* FromTopElem(grpc_call_element* elem) {
|
170
|
+
return FromCallStack(grpc_call_stack_from_top_element(elem));
|
171
|
+
}
|
125
172
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
parent->mu */
|
132
|
-
grpc_call* sibling_next = nullptr;
|
133
|
-
grpc_call* sibling_prev = nullptr;
|
134
|
-
};
|
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
|
+
}
|
135
178
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
struct grpc_call {
|
140
|
-
grpc_call(grpc_core::Arena* arena, const grpc_call_create_args& args)
|
141
|
-
: arena(arena),
|
142
|
-
cq(args.cq),
|
143
|
-
channel(args.channel),
|
144
|
-
is_client(args.server_transport_data == nullptr),
|
145
|
-
stream_op_payload(context) {
|
146
|
-
for (int i = 0; i < 2; i++) {
|
147
|
-
for (int j = 0; j < 2; j++) {
|
148
|
-
metadata_batch[i][j].deadline = GRPC_MILLIS_INF_FUTURE;
|
149
|
-
}
|
150
|
-
}
|
179
|
+
grpc_call_element* call_elem(size_t idx) {
|
180
|
+
return grpc_call_stack_element(call_stack(), idx);
|
151
181
|
}
|
152
182
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
183
|
+
CallCombiner* call_combiner() { return &call_combiner_; }
|
184
|
+
|
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);
|
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;
|
160
214
|
}
|
161
215
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
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
|
+
}
|
284
|
+
|
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();
|
171
333
|
|
172
|
-
/* client or server call */
|
173
|
-
bool is_client;
|
174
334
|
/** has grpc_call_unref been called */
|
175
|
-
bool
|
176
|
-
/** flag indicating that cancellation is inherited */
|
177
|
-
bool cancellation_is_inherited = false;
|
335
|
+
bool destroy_called_ = false;
|
178
336
|
// Trailers-only response status
|
179
|
-
bool
|
337
|
+
bool is_trailers_only_ = false;
|
180
338
|
/** which ops are in-flight */
|
181
|
-
bool
|
182
|
-
bool
|
183
|
-
bool
|
184
|
-
bool
|
185
|
-
bool
|
186
|
-
bool
|
187
|
-
gpr_atm
|
188
|
-
gpr_atm
|
189
|
-
|
190
|
-
|
191
|
-
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_;
|
192
350
|
|
193
351
|
/* first idx: is_receiving, second idx: is_trailing */
|
194
|
-
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()};
|
195
356
|
|
196
357
|
/* Buffered read metadata waiting to be returned to the application.
|
197
358
|
Element 0 is initial metadata, element 1 is trailing metadata. */
|
198
|
-
grpc_metadata_array*
|
199
|
-
|
200
|
-
grpc_metadata compression_md;
|
359
|
+
grpc_metadata_array* buffered_metadata_[2] = {};
|
201
360
|
|
202
361
|
// A char* indicating the peer name.
|
203
|
-
gpr_atm
|
362
|
+
gpr_atm peer_string_ = 0;
|
204
363
|
|
205
364
|
/* Call data useful used for reporting. Only valid after the call has
|
206
365
|
* completed */
|
207
|
-
grpc_call_final_info
|
366
|
+
grpc_call_final_info final_info_;
|
208
367
|
|
209
368
|
/* Compression algorithm for *incoming* data */
|
210
|
-
|
211
|
-
|
212
|
-
/* Stream compression algorithm for *incoming* data */
|
213
|
-
grpc_stream_compression_algorithm incoming_stream_compression_algorithm =
|
214
|
-
GRPC_STREAM_COMPRESS_NONE;
|
369
|
+
grpc_compression_algorithm incoming_compression_algorithm_ =
|
370
|
+
GRPC_COMPRESS_NONE;
|
215
371
|
/* Supported encodings (compression algorithms), a bitset.
|
216
372
|
* Always support no compression. */
|
217
|
-
|
218
|
-
/* Supported stream encodings (stream compression algorithms), a bitset */
|
219
|
-
uint32_t stream_encodings_accepted_by_peer = 0;
|
373
|
+
CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
|
220
374
|
|
221
375
|
/* Contexts for various subsystems (security, tracing, ...). */
|
222
|
-
grpc_call_context_element
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
grpc_slice receiving_slice = grpc_empty_slice();
|
236
|
-
grpc_closure receiving_slice_ready;
|
237
|
-
grpc_closure receiving_stream_ready;
|
238
|
-
grpc_closure receiving_initial_metadata_ready;
|
239
|
-
grpc_closure receiving_trailing_metadata_ready;
|
240
|
-
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;
|
241
389
|
// Status about operation of call
|
242
|
-
bool
|
243
|
-
gpr_atm
|
390
|
+
bool sent_server_trailing_metadata_ = false;
|
391
|
+
gpr_atm cancelled_with_error_ = 0;
|
244
392
|
|
245
|
-
grpc_closure
|
393
|
+
grpc_closure release_call_;
|
246
394
|
|
247
395
|
union {
|
248
396
|
struct {
|
@@ -253,10 +401,10 @@ struct grpc_call {
|
|
253
401
|
struct {
|
254
402
|
int* cancelled;
|
255
403
|
// backpointer to owning server if this is a server side call.
|
256
|
-
|
404
|
+
Server* core_server;
|
257
405
|
} server;
|
258
|
-
}
|
259
|
-
|
406
|
+
} final_op_;
|
407
|
+
AtomicError status_error_;
|
260
408
|
|
261
409
|
/* recv_state can contain one of the following values:
|
262
410
|
RECV_NONE : : no initial metadata and messages received
|
@@ -274,226 +422,178 @@ struct grpc_call {
|
|
274
422
|
|
275
423
|
For 1, 4: See receiving_initial_metadata_ready() function
|
276
424
|
For 2, 3: See receiving_stream_ready() function */
|
277
|
-
gpr_atm
|
425
|
+
gpr_atm recv_state_ = 0;
|
278
426
|
};
|
279
427
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
#define CALL_STACK_FROM_CALL(call) \
|
284
|
-
(grpc_call_stack*)((char*)(call) + \
|
285
|
-
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
|
286
|
-
#define CALL_FROM_CALL_STACK(call_stack) \
|
287
|
-
(grpc_call*)(((char*)(call_stack)) - \
|
288
|
-
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
|
289
|
-
|
290
|
-
#define CALL_ELEM_FROM_CALL(call, idx) \
|
291
|
-
grpc_call_stack_element(CALL_STACK_FROM_CALL(call), idx)
|
292
|
-
#define CALL_FROM_TOP_ELEM(top_elem) \
|
293
|
-
CALL_FROM_CALL_STACK(grpc_call_stack_from_top_element(top_elem))
|
294
|
-
|
295
|
-
static void execute_batch(grpc_call* call,
|
296
|
-
grpc_transport_stream_op_batch* batch,
|
297
|
-
grpc_closure* start_batch_closure);
|
298
|
-
|
299
|
-
static void cancel_with_status(grpc_call* c, grpc_status_code status,
|
300
|
-
const char* description);
|
301
|
-
static void cancel_with_error(grpc_call* c, grpc_error_handle error);
|
302
|
-
static void destroy_call(void* call_stack, grpc_error_handle error);
|
303
|
-
static void receiving_slice_ready(void* bctlp, grpc_error_handle error);
|
304
|
-
static void set_final_status(grpc_call* call, grpc_error_handle error);
|
305
|
-
static void process_data_after_md(batch_control* bctl);
|
306
|
-
static void post_batch_completion(batch_control* bctl);
|
307
|
-
|
308
|
-
static void add_init_error(grpc_error_handle* composite,
|
309
|
-
grpc_error_handle new_err) {
|
310
|
-
if (new_err == GRPC_ERROR_NONE) return;
|
311
|
-
if (*composite == GRPC_ERROR_NONE) {
|
312
|
-
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
|
313
|
-
}
|
314
|
-
*composite = grpc_error_add_child(*composite, new_err);
|
315
|
-
}
|
316
|
-
|
317
|
-
void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
|
318
|
-
return call->arena->Alloc(size);
|
319
|
-
}
|
320
|
-
|
321
|
-
static parent_call* get_or_create_parent_call(grpc_call* call) {
|
322
|
-
parent_call* p =
|
323
|
-
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);
|
324
430
|
if (p == nullptr) {
|
325
|
-
p =
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
p
|
331
|
-
|
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;
|
332
438
|
}
|
333
439
|
}
|
334
440
|
return p;
|
335
441
|
}
|
336
442
|
|
337
|
-
|
338
|
-
return
|
339
|
-
gpr_atm_acq_load(&call->parent_call_atm));
|
443
|
+
Call::ParentCall* Call::parent_call() {
|
444
|
+
return parent_call_.load(std::memory_order_acquire);
|
340
445
|
}
|
341
446
|
|
342
|
-
|
343
|
-
|
344
|
-
|
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
|
+
}
|
345
496
|
}
|
346
497
|
|
347
|
-
grpc_error_handle
|
348
|
-
|
498
|
+
grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
|
499
|
+
grpc_call** out_call) {
|
349
500
|
GPR_TIMER_SCOPE("grpc_call_create", 0);
|
350
501
|
|
351
502
|
GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
|
352
503
|
|
353
|
-
|
354
|
-
|
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;
|
355
515
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
356
516
|
grpc_channel_stack* channel_stack =
|
357
517
|
grpc_channel_get_channel_stack(args->channel);
|
358
518
|
size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
|
359
519
|
GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
|
360
|
-
size_t call_and_stack_size =
|
361
|
-
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
|
362
|
-
channel_stack->call_stack_size;
|
363
520
|
size_t call_alloc_size =
|
364
|
-
|
521
|
+
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)) +
|
522
|
+
channel_stack->call_stack_size;
|
365
523
|
|
366
|
-
std::pair<
|
367
|
-
|
524
|
+
std::pair<Arena*, void*> arena_with_call = Arena::CreateWithAlloc(
|
525
|
+
initial_size, call_alloc_size, &*args->channel->allocator);
|
368
526
|
arena = arena_with_call.first;
|
369
|
-
call = new (arena_with_call.second)
|
370
|
-
|
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();
|
371
531
|
grpc_slice path = grpc_empty_slice();
|
372
|
-
if (call->is_client) {
|
373
|
-
call->
|
374
|
-
call->
|
375
|
-
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;
|
376
536
|
GRPC_STATS_INC_CLIENT_CALLS_CREATED();
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
path = grpc_slice_ref_internal(
|
384
|
-
GRPC_MDVALUE(args->add_initial_metadata[i]));
|
385
|
-
}
|
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));
|
386
543
|
}
|
387
|
-
call->send_extra_metadata_count =
|
388
|
-
static_cast<int>(args->add_initial_metadata_count);
|
389
544
|
} else {
|
390
545
|
GRPC_STATS_INC_SERVER_CALLS_CREATED();
|
391
|
-
call->
|
392
|
-
call->
|
393
|
-
GPR_ASSERT(args->add_initial_metadata_count == 0);
|
394
|
-
call->send_extra_metadata_count = 0;
|
546
|
+
call->final_op_.server.cancelled = nullptr;
|
547
|
+
call->final_op_.server.core_server = args->server;
|
395
548
|
}
|
396
549
|
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
call->child = new (reinterpret_cast<char*>(arena_with_call.second) +
|
402
|
-
call_and_stack_size) child_call(args->parent);
|
403
|
-
|
404
|
-
GRPC_CALL_INTERNAL_REF(args->parent, "child");
|
405
|
-
GPR_ASSERT(call->is_client);
|
406
|
-
GPR_ASSERT(!args->parent->is_client);
|
407
|
-
|
408
|
-
if (args->propagation_mask & GRPC_PROPAGATE_DEADLINE) {
|
409
|
-
send_deadline = GPR_MIN(send_deadline, args->parent->send_deadline);
|
410
|
-
}
|
411
|
-
/* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
|
412
|
-
* GRPC_PROPAGATE_STATS_CONTEXT */
|
413
|
-
/* TODO(ctiller): This should change to use the appropriate census start_op
|
414
|
-
* call. */
|
415
|
-
if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
|
416
|
-
if (0 == (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
|
417
|
-
add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
418
|
-
"Census tracing propagation requested "
|
419
|
-
"without Census context propagation"));
|
420
|
-
}
|
421
|
-
grpc_call_context_set(call, GRPC_CONTEXT_TRACING,
|
422
|
-
args->parent->context[GRPC_CONTEXT_TRACING].value,
|
423
|
-
nullptr);
|
424
|
-
} else if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
|
425
|
-
add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
426
|
-
"Census context propagation requested "
|
427
|
-
"without Census tracing propagation"));
|
428
|
-
}
|
429
|
-
if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
|
430
|
-
call->cancellation_is_inherited = true;
|
431
|
-
if (gpr_atm_acq_load(&args->parent->received_final_op_atm)) {
|
432
|
-
immediately_cancel = true;
|
433
|
-
}
|
434
|
-
}
|
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)));
|
435
554
|
}
|
436
|
-
call->send_deadline = send_deadline;
|
437
555
|
/* initial refcount dropped by grpc_call_unref */
|
438
|
-
grpc_call_element_args call_args = {
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
call->arena,
|
445
|
-
&call->call_combiner};
|
446
|
-
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,
|
447
562
|
call, &call_args));
|
448
563
|
// Publish this call to parent only after the call stack has been initialized.
|
449
|
-
if (
|
450
|
-
|
451
|
-
parent_call* pc = get_or_create_parent_call(args->parent);
|
452
|
-
gpr_mu_lock(&pc->child_list_mu);
|
453
|
-
if (pc->first_child == nullptr) {
|
454
|
-
pc->first_child = call;
|
455
|
-
cc->sibling_next = cc->sibling_prev = call;
|
456
|
-
} else {
|
457
|
-
cc->sibling_next = pc->first_child;
|
458
|
-
cc->sibling_prev = pc->first_child->child->sibling_prev;
|
459
|
-
cc->sibling_next->child->sibling_prev =
|
460
|
-
cc->sibling_prev->child->sibling_next = call;
|
461
|
-
}
|
462
|
-
gpr_mu_unlock(&pc->child_list_mu);
|
564
|
+
if (parent != nullptr) {
|
565
|
+
call->PublishToParent(parent);
|
463
566
|
}
|
464
567
|
|
465
568
|
if (error != GRPC_ERROR_NONE) {
|
466
|
-
|
467
|
-
}
|
468
|
-
if (immediately_cancel) {
|
469
|
-
cancel_with_error(call, GRPC_ERROR_CANCELLED);
|
569
|
+
call->CancelWithError(GRPC_ERROR_REF(error));
|
470
570
|
}
|
471
571
|
if (args->cq != nullptr) {
|
472
572
|
GPR_ASSERT(args->pollset_set_alternative == nullptr &&
|
473
573
|
"Only one of 'cq' and 'pollset_set_alternative' should be "
|
474
574
|
"non-nullptr.");
|
475
575
|
GRPC_CQ_INTERNAL_REF(args->cq, "bind");
|
476
|
-
call->
|
576
|
+
call->pollent_ =
|
477
577
|
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
|
478
578
|
}
|
479
579
|
if (args->pollset_set_alternative != nullptr) {
|
480
|
-
call->
|
580
|
+
call->pollent_ = grpc_polling_entity_create_from_pollset_set(
|
481
581
|
args->pollset_set_alternative);
|
482
582
|
}
|
483
|
-
if (!grpc_polling_entity_is_empty(&call->
|
484
|
-
grpc_call_stack_set_pollset_or_pollset_set(
|
485
|
-
&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_);
|
486
586
|
}
|
487
587
|
|
488
|
-
if (call->is_client) {
|
489
|
-
|
490
|
-
grpc_channel_get_channelz_node(call->
|
588
|
+
if (call->is_client()) {
|
589
|
+
channelz::ChannelNode* channelz_channel =
|
590
|
+
grpc_channel_get_channelz_node(call->channel_);
|
491
591
|
if (channelz_channel != nullptr) {
|
492
592
|
channelz_channel->RecordCallStarted();
|
493
593
|
}
|
494
|
-
} else if (call->
|
495
|
-
|
496
|
-
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();
|
497
597
|
if (channelz_node != nullptr) {
|
498
598
|
channelz_node->RecordCallStarted();
|
499
599
|
}
|
@@ -504,276 +604,211 @@ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
|
|
504
604
|
return error;
|
505
605
|
}
|
506
606
|
|
507
|
-
void
|
508
|
-
grpc_completion_queue* cq) {
|
607
|
+
void FilterStackCall::SetCompletionQueue(grpc_completion_queue* cq) {
|
509
608
|
GPR_ASSERT(cq);
|
510
609
|
|
511
|
-
if (grpc_polling_entity_pollset_set(&
|
610
|
+
if (grpc_polling_entity_pollset_set(&pollent_) != nullptr) {
|
512
611
|
gpr_log(GPR_ERROR, "A pollset_set is already registered for this call.");
|
513
612
|
abort();
|
514
613
|
}
|
515
|
-
|
614
|
+
cq_ = cq;
|
516
615
|
GRPC_CQ_INTERNAL_REF(cq, "bind");
|
517
|
-
|
518
|
-
grpc_call_stack_set_pollset_or_pollset_set(
|
519
|
-
&call->pollent);
|
616
|
+
pollent_ = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
|
617
|
+
grpc_call_stack_set_pollset_or_pollset_set(call_stack(), &pollent_);
|
520
618
|
}
|
521
619
|
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
#define REF_ARG
|
528
|
-
#endif
|
529
|
-
void grpc_call_internal_ref(grpc_call* c REF_ARG) {
|
530
|
-
GRPC_CALL_STACK_REF(CALL_STACK_FROM_CALL(c), REF_REASON);
|
531
|
-
}
|
532
|
-
void grpc_call_internal_unref(grpc_call* c REF_ARG) {
|
533
|
-
GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
|
534
|
-
}
|
535
|
-
|
536
|
-
static void release_call(void* call, grpc_error_handle /*error*/) {
|
537
|
-
grpc_call* c = static_cast<grpc_call*>(call);
|
538
|
-
grpc_channel* channel = c->channel;
|
539
|
-
grpc_core::Arena* arena = c->arena;
|
540
|
-
c->~grpc_call();
|
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();
|
541
625
|
grpc_channel_update_call_size_estimate(channel, arena->Destroy());
|
542
626
|
GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
|
543
627
|
}
|
544
628
|
|
545
|
-
|
629
|
+
void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
|
546
630
|
GPR_TIMER_SCOPE("destroy_call", 0);
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
&c->metadata_batch[1 /* is_receiving */][i /* is_initial */]);
|
553
|
-
}
|
554
|
-
c->receiving_stream.reset();
|
555
|
-
parent_call* pc = get_parent_call(c);
|
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();
|
556
636
|
if (pc != nullptr) {
|
557
|
-
pc->~
|
558
|
-
}
|
559
|
-
for (ii = 0; ii < c->send_extra_metadata_count; ii++) {
|
560
|
-
GRPC_MDELEM_UNREF(c->send_extra_metadata[ii].md);
|
637
|
+
pc->~ParentCall();
|
561
638
|
}
|
562
|
-
if (c->
|
563
|
-
GRPC_CQ_INTERNAL_UNREF(c->
|
639
|
+
if (c->cq_) {
|
640
|
+
GRPC_CQ_INTERNAL_UNREF(c->cq_, "bind");
|
564
641
|
}
|
565
642
|
|
566
|
-
grpc_error_handle status_error =
|
567
|
-
|
568
|
-
|
569
|
-
&c->
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
GRPC_CLOSURE_INIT(&c->release_call, release_call, 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,
|
576
652
|
grpc_schedule_on_exec_ctx));
|
577
653
|
}
|
578
654
|
|
579
|
-
void
|
580
|
-
|
581
|
-
|
582
|
-
if (GPR_LIKELY(!c->ext_ref.Unref())) return;
|
583
|
-
|
584
|
-
GPR_TIMER_SCOPE("grpc_call_unref", 0);
|
585
|
-
|
586
|
-
child_call* cc = c->child;
|
587
|
-
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
588
|
-
grpc_core::ExecCtx exec_ctx;
|
589
|
-
|
590
|
-
GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
|
655
|
+
void Call::MaybeUnpublishFromParent() {
|
656
|
+
ChildCall* cc = child_;
|
657
|
+
if (cc == nullptr) return;
|
591
658
|
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
if (
|
659
|
+
ParentCall* pc = cc->parent->parent_call();
|
660
|
+
{
|
661
|
+
MutexLock lock(&pc->child_list_mu);
|
662
|
+
if (this == pc->first_child) {
|
596
663
|
pc->first_child = cc->sibling_next;
|
597
|
-
if (
|
664
|
+
if (this == pc->first_child) {
|
598
665
|
pc->first_child = nullptr;
|
599
666
|
}
|
600
667
|
}
|
601
|
-
cc->sibling_prev->
|
602
|
-
cc->sibling_next->
|
603
|
-
gpr_mu_unlock(&pc->child_list_mu);
|
604
|
-
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;
|
605
670
|
}
|
671
|
+
cc->parent->InternalUnref("child");
|
672
|
+
}
|
673
|
+
|
674
|
+
void FilterStackCall::ExternalUnref() {
|
675
|
+
if (GPR_LIKELY(!ext_ref_.Unref())) return;
|
676
|
+
|
677
|
+
GPR_TIMER_SCOPE("grpc_call_unref", 0);
|
606
678
|
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
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;
|
611
690
|
if (cancel) {
|
612
|
-
|
691
|
+
CancelWithError(GRPC_ERROR_CANCELLED);
|
613
692
|
} else {
|
614
693
|
// Unset the call combiner cancellation closure. This has the
|
615
694
|
// effect of scheduling the previously set cancellation closure, if
|
616
695
|
// any, so that it can release any internal references it may be
|
617
696
|
// holding to the call stack.
|
618
|
-
|
697
|
+
call_combiner_.SetNotifyOnCancel(nullptr);
|
619
698
|
}
|
620
|
-
|
621
|
-
}
|
622
|
-
|
623
|
-
grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
|
624
|
-
GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
|
625
|
-
GPR_ASSERT(!reserved);
|
626
|
-
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
627
|
-
grpc_core::ExecCtx exec_ctx;
|
628
|
-
cancel_with_error(call, GRPC_ERROR_CANCELLED);
|
629
|
-
return GRPC_CALL_OK;
|
699
|
+
InternalUnref("destroy");
|
630
700
|
}
|
631
701
|
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
static_cast<grpc_transport_stream_op_batch*>(arg);
|
639
|
-
grpc_call* call = static_cast<grpc_call*>(batch->handler_private.extra_arg);
|
640
|
-
grpc_call_element* elem = CALL_ELEM_FROM_CALL(call, 0);
|
641
|
-
GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
|
642
|
-
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");
|
643
708
|
}
|
644
709
|
|
645
710
|
// start_batch_closure points to a caller-allocated closure to be used
|
646
711
|
// for entering the call combiner.
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
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;
|
651
727
|
GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch,
|
652
728
|
grpc_schedule_on_exec_ctx);
|
653
|
-
GRPC_CALL_COMBINER_START(
|
729
|
+
GRPC_CALL_COMBINER_START(call_combiner(), start_batch_closure,
|
654
730
|
GRPC_ERROR_NONE, "executing batch");
|
655
731
|
}
|
656
732
|
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
if (peer_string != nullptr) return gpr_strdup(peer_string);
|
661
|
-
peer_string = grpc_channel_get_target(call->channel);
|
662
|
-
if (peer_string != nullptr) return peer_string;
|
663
|
-
return gpr_strdup("unknown");
|
664
|
-
}
|
665
|
-
|
666
|
-
grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
|
667
|
-
return CALL_FROM_TOP_ELEM(surface_element);
|
668
|
-
}
|
669
|
-
|
670
|
-
/*******************************************************************************
|
671
|
-
* CANCELLATION
|
672
|
-
*/
|
673
|
-
|
674
|
-
grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
|
675
|
-
grpc_status_code status,
|
676
|
-
const char* description,
|
677
|
-
void* reserved) {
|
678
|
-
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
679
|
-
grpc_core::ExecCtx exec_ctx;
|
680
|
-
GRPC_API_TRACE(
|
681
|
-
"grpc_call_cancel_with_status("
|
682
|
-
"c=%p, status=%d, description=%s, reserved=%p)",
|
683
|
-
4, (c, (int)status, description, reserved));
|
684
|
-
GPR_ASSERT(reserved == nullptr);
|
685
|
-
cancel_with_status(c, status, description);
|
686
|
-
return GRPC_CALL_OK;
|
687
|
-
}
|
688
|
-
|
689
|
-
struct cancel_state {
|
690
|
-
grpc_call* call;
|
733
|
+
namespace {
|
734
|
+
struct CancelState {
|
735
|
+
FilterStackCall* call;
|
691
736
|
grpc_closure start_batch;
|
692
737
|
grpc_closure finish_batch;
|
693
738
|
};
|
739
|
+
} // namespace
|
740
|
+
|
694
741
|
// The on_complete callback used when sending a cancel_stream batch down
|
695
742
|
// the filter stack. Yields the call combiner when the batch is done.
|
696
743
|
static void done_termination(void* arg, grpc_error_handle /*error*/) {
|
697
|
-
|
698
|
-
GRPC_CALL_COMBINER_STOP(
|
744
|
+
CancelState* state = static_cast<CancelState*>(arg);
|
745
|
+
GRPC_CALL_COMBINER_STOP(state->call->call_combiner(),
|
699
746
|
"on_complete for cancel_stream op");
|
700
|
-
|
701
|
-
|
747
|
+
state->call->InternalUnref("termination");
|
748
|
+
delete state;
|
702
749
|
}
|
703
750
|
|
704
|
-
|
705
|
-
if (!gpr_atm_rel_cas(&
|
751
|
+
void FilterStackCall::CancelWithError(grpc_error_handle error) {
|
752
|
+
if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) {
|
706
753
|
GRPC_ERROR_UNREF(error);
|
707
754
|
return;
|
708
755
|
}
|
709
|
-
|
756
|
+
InternalRef("termination");
|
710
757
|
// Inform the call combiner of the cancellation, so that it can cancel
|
711
758
|
// any in-flight asynchronous actions that may be holding the call
|
712
759
|
// combiner. This ensures that the cancel_stream batch can be sent
|
713
760
|
// down the filter stack in a timely manner.
|
714
|
-
|
715
|
-
|
716
|
-
state->call =
|
761
|
+
call_combiner_.Cancel(GRPC_ERROR_REF(error));
|
762
|
+
CancelState* state = new CancelState;
|
763
|
+
state->call = this;
|
717
764
|
GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
|
718
765
|
grpc_schedule_on_exec_ctx);
|
719
766
|
grpc_transport_stream_op_batch* op =
|
720
767
|
grpc_make_transport_stream_op(&state->finish_batch);
|
721
768
|
op->cancel_stream = true;
|
722
769
|
op->payload->cancel_stream.cancel_error = error;
|
723
|
-
|
724
|
-
}
|
725
|
-
|
726
|
-
void grpc_call_cancel_internal(grpc_call* call) {
|
727
|
-
cancel_with_error(call, GRPC_ERROR_CANCELLED);
|
770
|
+
ExecuteBatch(op, &state->start_batch);
|
728
771
|
}
|
729
772
|
|
730
|
-
|
731
|
-
const char* description) {
|
773
|
+
void Call::CancelWithStatus(grpc_status_code status, const char* description) {
|
732
774
|
// copying 'description' is needed to ensure the grpc_call_cancel_with_status
|
733
775
|
// guarantee that can be short-lived.
|
734
|
-
|
776
|
+
CancelWithError(grpc_error_set_int(
|
735
777
|
grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
|
736
|
-
GRPC_ERROR_STR_GRPC_MESSAGE,
|
737
|
-
|
738
|
-
GRPC_ERROR_INT_GRPC_STATUS, status);
|
739
|
-
}
|
740
|
-
|
741
|
-
static void cancel_with_status(grpc_call* c, grpc_status_code status,
|
742
|
-
const char* description) {
|
743
|
-
cancel_with_error(c, error_from_status(status, description));
|
778
|
+
GRPC_ERROR_STR_GRPC_MESSAGE, description),
|
779
|
+
GRPC_ERROR_INT_GRPC_STATUS, status));
|
744
780
|
}
|
745
781
|
|
746
|
-
|
782
|
+
void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
|
747
783
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
|
748
|
-
gpr_log(GPR_DEBUG, "set_final_status %s",
|
784
|
+
gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR");
|
749
785
|
gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
|
750
786
|
}
|
751
|
-
if (
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
787
|
+
if (is_client()) {
|
788
|
+
std::string status_details;
|
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 =
|
793
|
+
grpc_slice_from_cpp_string(std::move(status_details));
|
794
|
+
status_error_.set(error);
|
795
|
+
GRPC_ERROR_UNREF(error);
|
796
|
+
channelz::ChannelNode* channelz_channel =
|
797
|
+
grpc_channel_get_channelz_node(channel_);
|
761
798
|
if (channelz_channel != nullptr) {
|
762
|
-
if (*
|
799
|
+
if (*final_op_.client.status != GRPC_STATUS_OK) {
|
763
800
|
channelz_channel->RecordCallFailed();
|
764
801
|
} else {
|
765
802
|
channelz_channel->RecordCallSucceeded();
|
766
803
|
}
|
767
804
|
}
|
768
805
|
} else {
|
769
|
-
*
|
770
|
-
error != GRPC_ERROR_NONE || !
|
771
|
-
|
772
|
-
|
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();
|
773
810
|
if (channelz_node != nullptr) {
|
774
|
-
if (*
|
775
|
-
reinterpret_cast<grpc_error_handle>(
|
776
|
-
gpr_atm_acq_load(&call->status_error)) != GRPC_ERROR_NONE) {
|
811
|
+
if (*final_op_.server.cancelled || !status_error_.ok()) {
|
777
812
|
channelz_node->RecordCallFailed();
|
778
813
|
} else {
|
779
814
|
channelz_node->RecordCallSucceeded();
|
@@ -783,330 +818,166 @@ static void set_final_status(grpc_call* call, grpc_error_handle error) {
|
|
783
818
|
}
|
784
819
|
}
|
785
820
|
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
static void set_incoming_message_compression_algorithm(
|
791
|
-
grpc_call* call, grpc_message_compression_algorithm algo) {
|
792
|
-
GPR_ASSERT(algo < GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT);
|
793
|
-
call->incoming_message_compression_algorithm = algo;
|
794
|
-
}
|
795
|
-
|
796
|
-
static void set_incoming_stream_compression_algorithm(
|
797
|
-
grpc_call* call, grpc_stream_compression_algorithm algo) {
|
798
|
-
GPR_ASSERT(algo < GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT);
|
799
|
-
call->incoming_stream_compression_algorithm = algo;
|
800
|
-
}
|
801
|
-
|
802
|
-
grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
|
803
|
-
grpc_call* call) {
|
804
|
-
grpc_compression_algorithm algorithm = GRPC_COMPRESS_NONE;
|
805
|
-
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
806
|
-
&algorithm, call->incoming_message_compression_algorithm,
|
807
|
-
call->incoming_stream_compression_algorithm);
|
808
|
-
return algorithm;
|
809
|
-
}
|
810
|
-
|
811
|
-
static grpc_compression_algorithm compression_algorithm_for_level_locked(
|
812
|
-
grpc_call* call, grpc_compression_level level) {
|
813
|
-
return grpc_compression_algorithm_for_level(level,
|
814
|
-
call->encodings_accepted_by_peer);
|
815
|
-
}
|
816
|
-
|
817
|
-
uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
818
|
-
uint32_t flags;
|
819
|
-
flags = call->test_only_last_message_flags;
|
820
|
-
return flags;
|
821
|
-
}
|
822
|
-
|
823
|
-
static void destroy_encodings_accepted_by_peer(void* /*p*/) {}
|
824
|
-
|
825
|
-
static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
|
826
|
-
grpc_mdelem mdel,
|
827
|
-
uint32_t* encodings_accepted_by_peer,
|
828
|
-
bool stream_encoding) {
|
829
|
-
size_t i;
|
830
|
-
uint32_t algorithm;
|
831
|
-
grpc_slice_buffer accept_encoding_parts;
|
832
|
-
grpc_slice accept_encoding_slice;
|
833
|
-
void* accepted_user_data;
|
834
|
-
|
835
|
-
accepted_user_data =
|
836
|
-
grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
|
837
|
-
if (accepted_user_data != nullptr) {
|
838
|
-
*encodings_accepted_by_peer = static_cast<uint32_t>(
|
839
|
-
reinterpret_cast<uintptr_t>(accepted_user_data) - 1);
|
840
|
-
return;
|
841
|
-
}
|
842
|
-
|
843
|
-
*encodings_accepted_by_peer = 0;
|
844
|
-
|
845
|
-
accept_encoding_slice = GRPC_MDVALUE(mdel);
|
846
|
-
grpc_slice_buffer_init(&accept_encoding_parts);
|
847
|
-
grpc_slice_split_without_space(accept_encoding_slice, ",",
|
848
|
-
&accept_encoding_parts);
|
849
|
-
|
850
|
-
GPR_BITSET(encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
|
851
|
-
for (i = 0; i < accept_encoding_parts.count; i++) {
|
852
|
-
int r;
|
853
|
-
grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
|
854
|
-
if (!stream_encoding) {
|
855
|
-
r = grpc_message_compression_algorithm_parse(
|
856
|
-
accept_encoding_entry_slice,
|
857
|
-
reinterpret_cast<grpc_message_compression_algorithm*>(&algorithm));
|
858
|
-
} else {
|
859
|
-
r = grpc_stream_compression_algorithm_parse(
|
860
|
-
accept_encoding_entry_slice,
|
861
|
-
reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
|
862
|
-
}
|
863
|
-
if (r) {
|
864
|
-
GPR_BITSET(encodings_accepted_by_peer, algorithm);
|
865
|
-
} else {
|
866
|
-
char* accept_encoding_entry_str =
|
867
|
-
grpc_slice_to_c_string(accept_encoding_entry_slice);
|
868
|
-
gpr_log(GPR_DEBUG,
|
869
|
-
"Unknown entry in accept encoding metadata: '%s'. Ignoring.",
|
870
|
-
accept_encoding_entry_str);
|
871
|
-
gpr_free(accept_encoding_entry_str);
|
872
|
-
}
|
873
|
-
}
|
874
|
-
|
875
|
-
grpc_slice_buffer_destroy_internal(&accept_encoding_parts);
|
876
|
-
|
877
|
-
grpc_mdelem_set_user_data(
|
878
|
-
mdel, destroy_encodings_accepted_by_peer,
|
879
|
-
reinterpret_cast<void*>(
|
880
|
-
static_cast<uintptr_t>(*encodings_accepted_by_peer) + 1));
|
881
|
-
}
|
882
|
-
|
883
|
-
uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
884
|
-
uint32_t encodings_accepted_by_peer;
|
885
|
-
encodings_accepted_by_peer = call->encodings_accepted_by_peer;
|
886
|
-
return encodings_accepted_by_peer;
|
887
|
-
}
|
888
|
-
|
889
|
-
grpc_stream_compression_algorithm
|
890
|
-
grpc_call_test_only_get_incoming_stream_encodings(grpc_call* call) {
|
891
|
-
return call->incoming_stream_compression_algorithm;
|
892
|
-
}
|
893
|
-
|
894
|
-
static grpc_linked_mdelem* linked_from_md(grpc_metadata* md) {
|
895
|
-
return reinterpret_cast<grpc_linked_mdelem*>(&md->internal_data);
|
896
|
-
}
|
897
|
-
|
898
|
-
static grpc_metadata* get_md_elem(grpc_metadata* metadata,
|
899
|
-
grpc_metadata* additional_metadata, int i,
|
900
|
-
int count) {
|
901
|
-
grpc_metadata* res =
|
902
|
-
i < count ? &metadata[i] : &additional_metadata[i - count];
|
903
|
-
GPR_ASSERT(res);
|
904
|
-
return res;
|
905
|
-
}
|
906
|
-
|
907
|
-
static int prepare_application_metadata(grpc_call* call, int count,
|
908
|
-
grpc_metadata* metadata,
|
909
|
-
int is_trailing,
|
910
|
-
int prepend_extra_metadata,
|
911
|
-
grpc_metadata* additional_metadata,
|
912
|
-
int additional_metadata_count) {
|
913
|
-
int total_count = count + additional_metadata_count;
|
914
|
-
int i;
|
821
|
+
bool FilterStackCall::PrepareApplicationMetadata(size_t count,
|
822
|
+
grpc_metadata* metadata,
|
823
|
+
bool is_trailing) {
|
915
824
|
grpc_metadata_batch* batch =
|
916
|
-
&
|
917
|
-
for (i = 0; i <
|
918
|
-
grpc_metadata* md =
|
919
|
-
grpc_linked_mdelem* l = linked_from_md(md);
|
920
|
-
GPR_ASSERT(sizeof(grpc_linked_mdelem) == sizeof(md->internal_data));
|
825
|
+
is_trailing ? &send_trailing_metadata_ : &send_initial_metadata_;
|
826
|
+
for (size_t i = 0; i < count; i++) {
|
827
|
+
grpc_metadata* md = &metadata[i];
|
921
828
|
if (!GRPC_LOG_IF_ERROR("validate_metadata",
|
922
829
|
grpc_validate_header_key_is_legal(md->key))) {
|
923
|
-
|
830
|
+
return false;
|
924
831
|
} else if (!grpc_is_binary_header_internal(md->key) &&
|
925
832
|
!GRPC_LOG_IF_ERROR(
|
926
833
|
"validate_metadata",
|
927
834
|
grpc_validate_header_nonbin_value_is_legal(md->value))) {
|
928
|
-
|
835
|
+
return false;
|
929
836
|
} else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
|
930
837
|
// HTTP2 hpack encoding has a maximum limit.
|
931
|
-
|
838
|
+
return false;
|
839
|
+
} else if (grpc_slice_str_cmp(md->key, "content-length") == 0) {
|
840
|
+
// Filter "content-length metadata"
|
841
|
+
continue;
|
932
842
|
}
|
933
|
-
|
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
|
+
});
|
934
852
|
}
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
853
|
+
|
854
|
+
return true;
|
855
|
+
}
|
856
|
+
|
857
|
+
namespace {
|
858
|
+
class PublishToAppEncoder {
|
859
|
+
public:
|
860
|
+
explicit PublishToAppEncoder(grpc_metadata_array* dest) : dest_(dest) {}
|
861
|
+
|
862
|
+
void Encode(const Slice& key, const Slice& value) {
|
863
|
+
Append(key.c_slice(), value.c_slice());
|
942
864
|
}
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
}
|
865
|
+
|
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&) {}
|
871
|
+
|
872
|
+
void Encode(UserAgentMetadata, const Slice& slice) {
|
873
|
+
Append(UserAgentMetadata::key(), slice);
|
953
874
|
}
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
grpc_error_handle error = grpc_metadata_batch_link_tail(batch, l);
|
958
|
-
if (error != GRPC_ERROR_NONE) {
|
959
|
-
GRPC_MDELEM_UNREF(l->md);
|
960
|
-
}
|
961
|
-
GRPC_LOG_IF_ERROR("prepare_application_metadata", error);
|
875
|
+
|
876
|
+
void Encode(HostMetadata, const Slice& slice) {
|
877
|
+
Append(HostMetadata::key(), slice);
|
962
878
|
}
|
963
|
-
call->send_extra_metadata_count = 0;
|
964
879
|
|
965
|
-
|
966
|
-
|
880
|
+
void Encode(GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
|
881
|
+
Append(GrpcPreviousRpcAttemptsMetadata::key(), count);
|
882
|
+
}
|
967
883
|
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
grpc_message_compression_algorithm_from_slice(GRPC_MDVALUE(md));
|
972
|
-
if (algorithm == GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT) {
|
973
|
-
char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
974
|
-
gpr_log(GPR_ERROR,
|
975
|
-
"Invalid incoming message compression algorithm: '%s'. "
|
976
|
-
"Interpreting incoming data as uncompressed.",
|
977
|
-
md_c_str);
|
978
|
-
gpr_free(md_c_str);
|
979
|
-
return GRPC_MESSAGE_COMPRESS_NONE;
|
980
|
-
}
|
981
|
-
return algorithm;
|
982
|
-
}
|
884
|
+
void Encode(GrpcRetryPushbackMsMetadata, Duration count) {
|
885
|
+
Append(GrpcRetryPushbackMsMetadata::key(), count.millis());
|
886
|
+
}
|
983
887
|
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
}
|
997
|
-
|
998
|
-
|
888
|
+
void Encode(LbTokenMetadata, const Slice& slice) {
|
889
|
+
Append(LbTokenMetadata::key(), slice);
|
890
|
+
}
|
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());
|
896
|
+
}
|
897
|
+
|
898
|
+
void Append(absl::string_view key, const Slice& value) {
|
899
|
+
Append(StaticSlice::FromStaticString(key).c_slice(), value.c_slice());
|
900
|
+
}
|
901
|
+
|
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
|
+
}
|
907
|
+
|
908
|
+
grpc_metadata_array* const dest_;
|
909
|
+
};
|
910
|
+
} // namespace
|
999
911
|
|
1000
|
-
|
1001
|
-
|
1002
|
-
if (b->
|
1003
|
-
if (!
|
1004
|
-
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;
|
1005
917
|
GPR_TIMER_SCOPE("publish_app_metadata", 0);
|
1006
918
|
grpc_metadata_array* dest;
|
1007
|
-
|
1008
|
-
dest
|
1009
|
-
if (dest->count + b->list.count > dest->capacity) {
|
919
|
+
dest = buffered_metadata_[is_trailing];
|
920
|
+
if (dest->count + b->count() > dest->capacity) {
|
1010
921
|
dest->capacity =
|
1011
|
-
|
922
|
+
std::max(dest->capacity + b->count(), dest->capacity * 3 / 2);
|
1012
923
|
dest->metadata = static_cast<grpc_metadata*>(
|
1013
924
|
gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
|
1014
925
|
}
|
1015
|
-
|
1016
|
-
|
1017
|
-
/* we pass back borrowed slices that are valid whilst the call is valid */
|
1018
|
-
mdusr->key = GRPC_MDKEY(l->md);
|
1019
|
-
mdusr->value = GRPC_MDVALUE(l->md);
|
1020
|
-
}
|
926
|
+
PublishToAppEncoder encoder(dest);
|
927
|
+
b->Encode(&encoder);
|
1021
928
|
}
|
1022
929
|
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
if (b->idx.named.grpc_encoding != nullptr) {
|
1031
|
-
GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
|
1032
|
-
set_incoming_message_compression_algorithm(
|
1033
|
-
call, decode_message_compression(b->idx.named.grpc_encoding->md));
|
1034
|
-
grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ENCODING);
|
1035
|
-
}
|
1036
|
-
uint32_t message_encodings_accepted_by_peer = 1u;
|
1037
|
-
uint32_t stream_encodings_accepted_by_peer = 1u;
|
1038
|
-
if (b->idx.named.grpc_accept_encoding != nullptr) {
|
1039
|
-
GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
|
1040
|
-
set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md,
|
1041
|
-
&message_encodings_accepted_by_peer, false);
|
1042
|
-
grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ACCEPT_ENCODING);
|
1043
|
-
}
|
1044
|
-
if (b->idx.named.accept_encoding != nullptr) {
|
1045
|
-
GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
|
1046
|
-
set_encodings_accepted_by_peer(call, b->idx.named.accept_encoding->md,
|
1047
|
-
&stream_encodings_accepted_by_peer, true);
|
1048
|
-
grpc_metadata_batch_remove(b, GRPC_BATCH_ACCEPT_ENCODING);
|
1049
|
-
}
|
1050
|
-
call->encodings_accepted_by_peer =
|
1051
|
-
grpc_compression_bitset_from_message_stream_compression_bitset(
|
1052
|
-
message_encodings_accepted_by_peer,
|
1053
|
-
stream_encodings_accepted_by_peer);
|
1054
|
-
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);
|
1055
937
|
}
|
1056
938
|
|
1057
|
-
|
1058
|
-
|
1059
|
-
grpc_call* call = static_cast<grpc_call*>(args);
|
939
|
+
void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
|
940
|
+
grpc_error_handle batch_error) {
|
1060
941
|
if (batch_error != GRPC_ERROR_NONE) {
|
1061
|
-
|
1062
|
-
} else if (b->idx.named.grpc_status != nullptr) {
|
1063
|
-
grpc_status_code status_code =
|
1064
|
-
grpc_get_status_code_from_metadata(b->idx.named.grpc_status->md);
|
1065
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
1066
|
-
if (status_code != GRPC_STATUS_OK) {
|
1067
|
-
char* peer = grpc_call_get_peer(call);
|
1068
|
-
error = grpc_error_set_int(
|
1069
|
-
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1070
|
-
absl::StrCat("Error received from peer ", peer).c_str()),
|
1071
|
-
GRPC_ERROR_INT_GRPC_STATUS, static_cast<intptr_t>(status_code));
|
1072
|
-
gpr_free(peer);
|
1073
|
-
}
|
1074
|
-
if (b->idx.named.grpc_message != nullptr) {
|
1075
|
-
error = grpc_error_set_str(
|
1076
|
-
error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1077
|
-
grpc_slice_ref_internal(GRPC_MDVALUE(b->idx.named.grpc_message->md)));
|
1078
|
-
grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_MESSAGE);
|
1079
|
-
} else if (error != GRPC_ERROR_NONE) {
|
1080
|
-
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1081
|
-
grpc_empty_slice());
|
1082
|
-
}
|
1083
|
-
set_final_status(call, GRPC_ERROR_REF(error));
|
1084
|
-
grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_STATUS);
|
1085
|
-
GRPC_ERROR_UNREF(error);
|
1086
|
-
} else if (!call->is_client) {
|
1087
|
-
set_final_status(call, GRPC_ERROR_NONE);
|
942
|
+
SetFinalStatus(batch_error);
|
1088
943
|
} else {
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
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);
|
1103
977
|
}
|
1104
978
|
|
1105
|
-
|
1106
|
-
|
1107
|
-
*/
|
1108
|
-
|
1109
|
-
static bool are_write_flags_valid(uint32_t flags) {
|
979
|
+
namespace {
|
980
|
+
bool AreWriteFlagsValid(uint32_t flags) {
|
1110
981
|
/* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
|
1111
982
|
const uint32_t allowed_write_positions =
|
1112
983
|
(GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
|
@@ -1114,16 +985,13 @@ static bool are_write_flags_valid(uint32_t flags) {
|
|
1114
985
|
return !(flags & invalid_positions);
|
1115
986
|
}
|
1116
987
|
|
1117
|
-
|
988
|
+
bool AreInitialMetadataFlagsValid(uint32_t flags) {
|
1118
989
|
/* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
|
1119
990
|
uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
|
1120
|
-
if (!is_client) {
|
1121
|
-
invalid_positions |= GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
|
1122
|
-
}
|
1123
991
|
return !(flags & invalid_positions);
|
1124
992
|
}
|
1125
993
|
|
1126
|
-
|
994
|
+
size_t BatchSlotForOp(grpc_op_type type) {
|
1127
995
|
switch (type) {
|
1128
996
|
case GRPC_OP_SEND_INITIAL_METADATA:
|
1129
997
|
return 0;
|
@@ -1142,142 +1010,135 @@ static size_t batch_slot_for_op(grpc_op_type type) {
|
|
1142
1010
|
}
|
1143
1011
|
GPR_UNREACHABLE_CODE(return 123456789);
|
1144
1012
|
}
|
1013
|
+
} // namespace
|
1145
1014
|
|
1146
|
-
|
1147
|
-
|
1148
|
-
size_t slot_idx =
|
1149
|
-
|
1150
|
-
|
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;
|
1151
1020
|
if (*pslot != nullptr) {
|
1152
1021
|
bctl = *pslot;
|
1153
|
-
if (bctl->
|
1022
|
+
if (bctl->call_ != nullptr) {
|
1154
1023
|
return nullptr;
|
1155
1024
|
}
|
1156
|
-
bctl->~
|
1157
|
-
bctl->
|
1025
|
+
bctl->~BatchControl();
|
1026
|
+
bctl->op_ = {};
|
1027
|
+
new (&bctl->batch_error_) AtomicError();
|
1158
1028
|
} else {
|
1159
|
-
bctl =
|
1029
|
+
bctl = arena()->New<BatchControl>();
|
1160
1030
|
*pslot = bctl;
|
1161
1031
|
}
|
1162
|
-
bctl->
|
1163
|
-
bctl->
|
1032
|
+
bctl->call_ = this;
|
1033
|
+
bctl->op_.payload = &stream_op_payload_;
|
1164
1034
|
return bctl;
|
1165
1035
|
}
|
1166
1036
|
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
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
|
+
}
|
1180
1055
|
}
|
1181
1056
|
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
grpc_error_handle error = GRPC_ERROR_REF(reinterpret_cast<grpc_error_handle>(
|
1186
|
-
gpr_atm_acq_load(&bctl->batch_error)));
|
1057
|
+
void FilterStackCall::BatchControl::PostCompletion() {
|
1058
|
+
FilterStackCall* call = call_;
|
1059
|
+
grpc_error_handle error = GRPC_ERROR_REF(batch_error_.get());
|
1187
1060
|
|
1188
|
-
if (
|
1189
|
-
|
1190
|
-
&call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
|
1061
|
+
if (op_.send_initial_metadata) {
|
1062
|
+
call->send_initial_metadata_.Clear();
|
1191
1063
|
}
|
1192
|
-
if (
|
1193
|
-
if (
|
1064
|
+
if (op_.send_message) {
|
1065
|
+
if (op_.payload->send_message.stream_write_closed &&
|
1194
1066
|
error == GRPC_ERROR_NONE) {
|
1195
1067
|
error = grpc_error_add_child(
|
1196
1068
|
error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1197
1069
|
"Attempt to send message after stream was closed."));
|
1198
1070
|
}
|
1199
|
-
call->
|
1071
|
+
call->sending_message_ = false;
|
1200
1072
|
}
|
1201
|
-
if (
|
1202
|
-
|
1203
|
-
&call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]);
|
1073
|
+
if (op_.send_trailing_metadata) {
|
1074
|
+
call->send_trailing_metadata_.Clear();
|
1204
1075
|
}
|
1205
|
-
if (
|
1076
|
+
if (op_.recv_trailing_metadata) {
|
1206
1077
|
/* propagate cancellation to any interested children */
|
1207
|
-
gpr_atm_rel_store(&call->
|
1208
|
-
|
1209
|
-
if (pc != nullptr) {
|
1210
|
-
grpc_call* child;
|
1211
|
-
gpr_mu_lock(&pc->child_list_mu);
|
1212
|
-
child = pc->first_child;
|
1213
|
-
if (child != nullptr) {
|
1214
|
-
do {
|
1215
|
-
next_child_call = child->child->sibling_next;
|
1216
|
-
if (child->cancellation_is_inherited) {
|
1217
|
-
GRPC_CALL_INTERNAL_REF(child, "propagate_cancel");
|
1218
|
-
cancel_with_error(child, GRPC_ERROR_CANCELLED);
|
1219
|
-
GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel");
|
1220
|
-
}
|
1221
|
-
child = next_child_call;
|
1222
|
-
} while (child != pc->first_child);
|
1223
|
-
}
|
1224
|
-
gpr_mu_unlock(&pc->child_list_mu);
|
1225
|
-
}
|
1078
|
+
gpr_atm_rel_store(&call->received_final_op_atm_, 1);
|
1079
|
+
call->PropagateCancellationToChildren();
|
1226
1080
|
GRPC_ERROR_UNREF(error);
|
1227
1081
|
error = GRPC_ERROR_NONE;
|
1228
1082
|
}
|
1229
|
-
if (error != GRPC_ERROR_NONE &&
|
1230
|
-
*call->
|
1231
|
-
grpc_byte_buffer_destroy(*call->
|
1232
|
-
*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;
|
1233
1087
|
}
|
1234
|
-
|
1088
|
+
batch_error_.set(GRPC_ERROR_NONE);
|
1235
1089
|
|
1236
|
-
if (
|
1090
|
+
if (completion_data_.notify_tag.is_closure) {
|
1237
1091
|
/* unrefs error */
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
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");
|
1244
1097
|
} else {
|
1245
1098
|
/* unrefs error */
|
1246
|
-
grpc_cq_end_op(
|
1247
|
-
|
1248
|
-
|
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);
|
1249
1108
|
}
|
1250
1109
|
}
|
1251
1110
|
|
1252
|
-
|
1253
|
-
if (GPR_UNLIKELY(
|
1254
|
-
|
1111
|
+
void FilterStackCall::BatchControl::FinishStep() {
|
1112
|
+
if (GPR_UNLIKELY(completed_batch_step())) {
|
1113
|
+
PostCompletion();
|
1255
1114
|
}
|
1256
1115
|
}
|
1257
1116
|
|
1258
|
-
|
1117
|
+
void FilterStackCall::BatchControl::ContinueReceivingSlices() {
|
1259
1118
|
grpc_error_handle error;
|
1260
|
-
|
1119
|
+
FilterStackCall* call = call_;
|
1261
1120
|
for (;;) {
|
1262
|
-
size_t remaining = call->
|
1263
|
-
(*call->
|
1121
|
+
size_t remaining = call->receiving_stream_->length() -
|
1122
|
+
(*call->receiving_buffer_)->data.raw.slice_buffer.length;
|
1264
1123
|
if (remaining == 0) {
|
1265
|
-
call->
|
1266
|
-
call->
|
1267
|
-
|
1124
|
+
call->receiving_message_ = false;
|
1125
|
+
call->receiving_stream_.reset();
|
1126
|
+
FinishStep();
|
1268
1127
|
return;
|
1269
1128
|
}
|
1270
|
-
if (call->
|
1271
|
-
|
1129
|
+
if (call->receiving_stream_->Next(remaining,
|
1130
|
+
&call->receiving_slice_ready_)) {
|
1131
|
+
error = call->receiving_stream_->Pull(&call->receiving_slice_);
|
1272
1132
|
if (error == GRPC_ERROR_NONE) {
|
1273
|
-
grpc_slice_buffer_add(
|
1274
|
-
|
1133
|
+
grpc_slice_buffer_add(
|
1134
|
+
&(*call->receiving_buffer_)->data.raw.slice_buffer,
|
1135
|
+
call->receiving_slice_);
|
1275
1136
|
} else {
|
1276
|
-
call->
|
1277
|
-
grpc_byte_buffer_destroy(*call->
|
1278
|
-
*call->
|
1279
|
-
call->
|
1280
|
-
|
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();
|
1281
1142
|
GRPC_ERROR_UNREF(error);
|
1282
1143
|
return;
|
1283
1144
|
}
|
@@ -1287,18 +1148,18 @@ static void continue_receiving_slices(batch_control* bctl) {
|
|
1287
1148
|
}
|
1288
1149
|
}
|
1289
1150
|
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1151
|
+
void FilterStackCall::BatchControl::ReceivingSliceReady(
|
1152
|
+
grpc_error_handle error) {
|
1153
|
+
FilterStackCall* call = call_;
|
1293
1154
|
bool release_error = false;
|
1294
1155
|
|
1295
1156
|
if (error == GRPC_ERROR_NONE) {
|
1296
1157
|
grpc_slice slice;
|
1297
|
-
error = call->
|
1158
|
+
error = call->receiving_stream_->Pull(&slice);
|
1298
1159
|
if (error == GRPC_ERROR_NONE) {
|
1299
|
-
grpc_slice_buffer_add(&(*call->
|
1160
|
+
grpc_slice_buffer_add(&(*call->receiving_buffer_)->data.raw.slice_buffer,
|
1300
1161
|
slice);
|
1301
|
-
|
1162
|
+
ContinueReceivingSlices();
|
1302
1163
|
} else {
|
1303
1164
|
/* Error returned by ByteStream::Pull() needs to be released manually */
|
1304
1165
|
release_error = true;
|
@@ -1309,194 +1170,133 @@ static void receiving_slice_ready(void* bctlp, grpc_error_handle error) {
|
|
1309
1170
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
|
1310
1171
|
GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
|
1311
1172
|
}
|
1312
|
-
call->
|
1313
|
-
grpc_byte_buffer_destroy(*call->
|
1314
|
-
*call->
|
1315
|
-
call->
|
1316
|
-
|
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();
|
1317
1178
|
if (release_error) {
|
1318
1179
|
GRPC_ERROR_UNREF(error);
|
1319
1180
|
}
|
1320
1181
|
}
|
1321
1182
|
}
|
1322
1183
|
|
1323
|
-
|
1324
|
-
|
1325
|
-
if (call->
|
1326
|
-
*call->
|
1327
|
-
call->
|
1328
|
-
|
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();
|
1329
1190
|
} else {
|
1330
|
-
call->
|
1331
|
-
if ((call->
|
1332
|
-
(call->
|
1333
|
-
|
1334
|
-
|
1335
|
-
GPR_ASSERT(
|
1336
|
-
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
1337
|
-
&algo, call->incoming_message_compression_algorithm,
|
1338
|
-
(grpc_stream_compression_algorithm)0));
|
1339
|
-
*call->receiving_buffer =
|
1340
|
-
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_);
|
1341
1196
|
} else {
|
1342
|
-
*call->
|
1197
|
+
*call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
|
1343
1198
|
}
|
1344
|
-
GRPC_CLOSURE_INIT(
|
1345
|
-
|
1346
|
-
|
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();
|
1347
1206
|
}
|
1348
1207
|
}
|
1349
1208
|
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1209
|
+
void FilterStackCall::BatchControl::ReceivingStreamReady(
|
1210
|
+
grpc_error_handle error) {
|
1211
|
+
FilterStackCall* call = call_;
|
1353
1212
|
if (error != GRPC_ERROR_NONE) {
|
1354
|
-
call->
|
1355
|
-
if (
|
1356
|
-
|
1357
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1358
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
|
1213
|
+
call->receiving_stream_.reset();
|
1214
|
+
if (batch_error_.ok()) {
|
1215
|
+
batch_error_.set(error);
|
1359
1216
|
}
|
1360
|
-
|
1217
|
+
call->CancelWithError(GRPC_ERROR_REF(error));
|
1361
1218
|
}
|
1362
|
-
/* If recv_state is
|
1219
|
+
/* If recv_state is kRecvNone, we will save the batch_control
|
1363
1220
|
* object with rel_cas, and will not use it after the cas. Its corresponding
|
1364
1221
|
* acq_load is in receiving_initial_metadata_ready() */
|
1365
|
-
if (error != GRPC_ERROR_NONE || call->
|
1366
|
-
!gpr_atm_rel_cas(&call->
|
1367
|
-
reinterpret_cast<gpr_atm>(
|
1368
|
-
|
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();
|
1369
1226
|
}
|
1370
1227
|
}
|
1371
1228
|
|
1372
|
-
|
1373
|
-
|
1374
|
-
// before processing the received message.
|
1375
|
-
static void receiving_stream_ready_in_call_combiner(void* bctlp,
|
1376
|
-
grpc_error_handle error) {
|
1377
|
-
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1378
|
-
grpc_call* call = bctl->call;
|
1379
|
-
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
|
1380
|
-
receiving_stream_ready(bctlp, error);
|
1381
|
-
}
|
1382
|
-
|
1383
|
-
static void GPR_ATTRIBUTE_NOINLINE
|
1384
|
-
handle_both_stream_and_msg_compression_set(grpc_call* call) {
|
1385
|
-
std::string error_msg = absl::StrFormat(
|
1386
|
-
"Incoming stream has both stream compression (%d) and message "
|
1387
|
-
"compression (%d).",
|
1388
|
-
call->incoming_stream_compression_algorithm,
|
1389
|
-
call->incoming_message_compression_algorithm);
|
1390
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1391
|
-
cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg.c_str());
|
1392
|
-
}
|
1393
|
-
|
1394
|
-
static void GPR_ATTRIBUTE_NOINLINE
|
1395
|
-
handle_error_parsing_compression_algorithm(grpc_call* call) {
|
1396
|
-
std::string error_msg = absl::StrFormat(
|
1397
|
-
"Error in incoming message compression (%d) or stream "
|
1398
|
-
"compression (%d).",
|
1399
|
-
call->incoming_stream_compression_algorithm,
|
1400
|
-
call->incoming_message_compression_algorithm);
|
1401
|
-
cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg.c_str());
|
1402
|
-
}
|
1403
|
-
|
1404
|
-
static void GPR_ATTRIBUTE_NOINLINE handle_invalid_compression(
|
1405
|
-
grpc_call* call, grpc_compression_algorithm compression_algorithm) {
|
1406
|
-
std::string error_msg = absl::StrFormat(
|
1407
|
-
"Invalid compression algorithm value '%d'.", compression_algorithm);
|
1408
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1409
|
-
cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
|
1410
|
-
}
|
1411
|
-
|
1412
|
-
static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
|
1413
|
-
grpc_call* call, grpc_compression_algorithm compression_algorithm) {
|
1229
|
+
void FilterStackCall::HandleCompressionAlgorithmDisabled(
|
1230
|
+
grpc_compression_algorithm compression_algorithm) {
|
1414
1231
|
const char* algo_name = nullptr;
|
1415
1232
|
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1416
1233
|
std::string error_msg =
|
1417
1234
|
absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
|
1418
1235
|
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1419
|
-
|
1236
|
+
CancelWithStatus(GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
|
1420
1237
|
}
|
1421
1238
|
|
1422
|
-
|
1423
|
-
|
1239
|
+
void FilterStackCall::HandleCompressionAlgorithmNotAccepted(
|
1240
|
+
grpc_compression_algorithm compression_algorithm) {
|
1424
1241
|
const char* algo_name = nullptr;
|
1425
1242
|
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1426
1243
|
gpr_log(GPR_ERROR,
|
1427
|
-
"Compression algorithm ('%s') not present in the
|
1428
|
-
"accepted encodings (
|
1429
|
-
algo_name,
|
1430
|
-
}
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1449
|
-
|
1450
|
-
|
1451
|
-
handle_invalid_compression(call, compression_algorithm);
|
1452
|
-
} else if (GPR_UNLIKELY(
|
1453
|
-
grpc_compression_options_is_algorithm_enabled_internal(
|
1454
|
-
&compression_options, compression_algorithm) == 0)) {
|
1455
|
-
/* check if algorithm is supported by current channel config */
|
1456
|
-
handle_compression_algorithm_disabled(call, compression_algorithm);
|
1457
|
-
}
|
1458
|
-
/* GRPC_COMPRESS_NONE is always set. */
|
1459
|
-
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
|
1460
|
-
if (GPR_UNLIKELY(!GPR_BITGET(call->encodings_accepted_by_peer,
|
1461
|
-
compression_algorithm))) {
|
1462
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1463
|
-
handle_compression_algorithm_not_accepted(call, compression_algorithm);
|
1464
|
-
}
|
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);
|
1465
1268
|
}
|
1466
1269
|
}
|
1467
1270
|
}
|
1468
1271
|
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
grpc_call* call = bctl->call;
|
1272
|
+
void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
|
1273
|
+
grpc_error_handle error) {
|
1274
|
+
FilterStackCall* call = call_;
|
1473
1275
|
|
1474
|
-
GRPC_CALL_COMBINER_STOP(
|
1276
|
+
GRPC_CALL_COMBINER_STOP(call->call_combiner(), "recv_initial_metadata_ready");
|
1475
1277
|
|
1476
1278
|
if (error == GRPC_ERROR_NONE) {
|
1477
|
-
grpc_metadata_batch* md =
|
1478
|
-
|
1479
|
-
recv_initial_filter(call, md);
|
1279
|
+
grpc_metadata_batch* md = &call->recv_initial_metadata_;
|
1280
|
+
call->RecvInitialFilter(md);
|
1480
1281
|
|
1481
1282
|
/* TODO(ctiller): this could be moved into recv_initial_filter now */
|
1482
1283
|
GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
|
1483
|
-
|
1284
|
+
ValidateFilteredMetadata();
|
1484
1285
|
|
1485
|
-
|
1486
|
-
|
1286
|
+
absl::optional<Timestamp> deadline = md->get(GrpcTimeoutMetadata());
|
1287
|
+
if (deadline.has_value() && !call->is_client()) {
|
1288
|
+
call_->set_send_deadline(*deadline);
|
1487
1289
|
}
|
1488
1290
|
} else {
|
1489
|
-
if (
|
1490
|
-
|
1491
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1492
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
|
1291
|
+
if (batch_error_.ok()) {
|
1292
|
+
batch_error_.set(error);
|
1493
1293
|
}
|
1494
|
-
|
1294
|
+
call->CancelWithError(GRPC_ERROR_REF(error));
|
1495
1295
|
}
|
1496
1296
|
|
1497
1297
|
grpc_closure* saved_rsr_closure = nullptr;
|
1498
1298
|
while (true) {
|
1499
|
-
gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->
|
1299
|
+
gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state_);
|
1500
1300
|
/* Should only receive initial metadata once */
|
1501
1301
|
GPR_ASSERT(rsr_bctlp != 1);
|
1502
1302
|
if (rsr_bctlp == 0) {
|
@@ -1505,99 +1305,100 @@ static void receiving_initial_metadata_ready(void* bctlp,
|
|
1505
1305
|
* no_barrier_cas is used, as this function won't access the batch_control
|
1506
1306
|
* object saved by receiving_stream_ready() if the initial metadata is
|
1507
1307
|
* received first. */
|
1508
|
-
if (gpr_atm_no_barrier_cas(&call->
|
1509
|
-
|
1308
|
+
if (gpr_atm_no_barrier_cas(&call->recv_state_, kRecvNone,
|
1309
|
+
kRecvInitialMetadataFirst)) {
|
1510
1310
|
break;
|
1511
1311
|
}
|
1512
1312
|
} else {
|
1513
1313
|
/* Already received messages */
|
1514
|
-
saved_rsr_closure =
|
1515
|
-
|
1516
|
-
|
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);
|
1517
1320
|
/* No need to modify recv_state */
|
1518
1321
|
break;
|
1519
1322
|
}
|
1520
1323
|
}
|
1521
1324
|
if (saved_rsr_closure != nullptr) {
|
1522
|
-
|
1523
|
-
GRPC_ERROR_REF(error));
|
1325
|
+
Closure::Run(DEBUG_LOCATION, saved_rsr_closure, GRPC_ERROR_REF(error));
|
1524
1326
|
}
|
1525
1327
|
|
1526
|
-
|
1328
|
+
FinishStep();
|
1527
1329
|
}
|
1528
1330
|
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
recv_trailing_filter(call, md, GRPC_ERROR_REF(error));
|
1537
|
-
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();
|
1538
1338
|
}
|
1539
1339
|
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
if (reinterpret_cast<grpc_error_handle>(
|
1545
|
-
gpr_atm_acq_load(&bctl->batch_error)) == GRPC_ERROR_NONE) {
|
1546
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1547
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(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);
|
1548
1344
|
}
|
1549
1345
|
if (error != GRPC_ERROR_NONE) {
|
1550
|
-
|
1346
|
+
call_->CancelWithError(GRPC_ERROR_REF(error));
|
1551
1347
|
}
|
1552
|
-
|
1553
|
-
}
|
1554
|
-
|
1555
|
-
static void free_no_op_completion(void* /*p*/, grpc_cq_completion* completion) {
|
1556
|
-
gpr_free(completion);
|
1348
|
+
FinishStep();
|
1557
1349
|
}
|
1558
1350
|
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1351
|
+
grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
|
1352
|
+
void* notify_tag,
|
1353
|
+
bool is_notify_tag_closure) {
|
1562
1354
|
GPR_TIMER_SCOPE("call_start_batch", 0);
|
1563
1355
|
|
1564
1356
|
size_t i;
|
1565
1357
|
const grpc_op* op;
|
1566
|
-
|
1358
|
+
BatchControl* bctl;
|
1567
1359
|
bool has_send_ops = false;
|
1568
1360
|
int num_recv_ops = 0;
|
1569
1361
|
grpc_call_error error = GRPC_CALL_OK;
|
1570
1362
|
grpc_transport_stream_op_batch* stream_op;
|
1571
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
|
+
}
|
1572
1372
|
|
1573
1373
|
GRPC_CALL_LOG_BATCH(GPR_INFO, ops, nops);
|
1574
1374
|
|
1575
1375
|
if (nops == 0) {
|
1576
1376
|
if (!is_notify_tag_closure) {
|
1577
|
-
GPR_ASSERT(grpc_cq_begin_op(
|
1578
|
-
grpc_cq_end_op(
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
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))));
|
1582
1384
|
} else {
|
1583
|
-
|
1584
|
-
|
1585
|
-
GRPC_ERROR_NONE);
|
1385
|
+
Closure::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(notify_tag),
|
1386
|
+
GRPC_ERROR_NONE);
|
1586
1387
|
}
|
1587
1388
|
error = GRPC_CALL_OK;
|
1588
1389
|
goto done;
|
1589
1390
|
}
|
1590
1391
|
|
1591
|
-
bctl =
|
1392
|
+
bctl = ReuseOrAllocateBatchControl(ops);
|
1592
1393
|
if (bctl == nullptr) {
|
1593
1394
|
return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1594
1395
|
}
|
1595
|
-
bctl->
|
1596
|
-
bctl->
|
1396
|
+
bctl->completion_data_.notify_tag.tag = notify_tag;
|
1397
|
+
bctl->completion_data_.notify_tag.is_closure =
|
1597
1398
|
static_cast<uint8_t>(is_notify_tag_closure != 0);
|
1598
1399
|
|
1599
|
-
stream_op = &bctl->
|
1600
|
-
stream_op_payload = &
|
1400
|
+
stream_op = &bctl->op_;
|
1401
|
+
stream_op_payload = &stream_op_payload_;
|
1601
1402
|
|
1602
1403
|
/* rewrite batch ops into a transport op */
|
1603
1404
|
for (i = 0; i < nops; i++) {
|
@@ -1609,11 +1410,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1609
1410
|
switch (op->op) {
|
1610
1411
|
case GRPC_OP_SEND_INITIAL_METADATA: {
|
1611
1412
|
/* Flag validation: currently allow no flags */
|
1612
|
-
if (!
|
1413
|
+
if (!AreInitialMetadataFlagsValid(op->flags)) {
|
1613
1414
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1614
1415
|
goto done_with_error;
|
1615
1416
|
}
|
1616
|
-
if (
|
1417
|
+
if (sent_initial_metadata_) {
|
1617
1418
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1618
1419
|
goto done_with_error;
|
1619
1420
|
}
|
@@ -1622,10 +1423,6 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1622
1423
|
// GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
|
1623
1424
|
// with the compression algorithm mapped from compression level.
|
1624
1425
|
/* process compression level */
|
1625
|
-
grpc_metadata& compression_md = call->compression_md;
|
1626
|
-
compression_md.key = grpc_empty_slice();
|
1627
|
-
compression_md.value = grpc_empty_slice();
|
1628
|
-
size_t additional_metadata_count = 0;
|
1629
1426
|
grpc_compression_level effective_compression_level =
|
1630
1427
|
GRPC_COMPRESS_LEVEL_NONE;
|
1631
1428
|
bool level_set = false;
|
@@ -1635,55 +1432,52 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1635
1432
|
level_set = true;
|
1636
1433
|
} else {
|
1637
1434
|
const grpc_compression_options copts =
|
1638
|
-
grpc_channel_compression_options(
|
1435
|
+
grpc_channel_compression_options(channel_);
|
1639
1436
|
if (copts.default_level.is_set) {
|
1640
1437
|
level_set = true;
|
1641
1438
|
effective_compression_level = copts.default_level.level;
|
1642
1439
|
}
|
1643
1440
|
}
|
1644
1441
|
// Currently, only server side supports compression level setting.
|
1645
|
-
if (level_set && !
|
1442
|
+
if (level_set && !is_client()) {
|
1646
1443
|
const grpc_compression_algorithm calgo =
|
1647
|
-
|
1648
|
-
|
1444
|
+
encodings_accepted_by_peer_.CompressionAlgorithmForLevel(
|
1445
|
+
effective_compression_level);
|
1649
1446
|
// The following metadata will be checked and removed by the message
|
1650
1447
|
// compression filter. It will be used as the call's compression
|
1651
1448
|
// algorithm.
|
1652
|
-
|
1653
|
-
compression_md.value = grpc_compression_algorithm_slice(calgo);
|
1654
|
-
additional_metadata_count++;
|
1449
|
+
send_initial_metadata_.Set(GrpcInternalEncodingRequest(), calgo);
|
1655
1450
|
}
|
1656
|
-
if (op->data.send_initial_metadata.count
|
1657
|
-
INT_MAX) {
|
1451
|
+
if (op->data.send_initial_metadata.count > INT_MAX) {
|
1658
1452
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1659
1453
|
goto done_with_error;
|
1660
1454
|
}
|
1661
1455
|
stream_op->send_initial_metadata = true;
|
1662
|
-
|
1663
|
-
if (!
|
1664
|
-
|
1665
|
-
|
1666
|
-
&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)) {
|
1667
1460
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1668
1461
|
goto done_with_error;
|
1669
1462
|
}
|
1463
|
+
// Ignore any te metadata key value pairs specified.
|
1464
|
+
send_initial_metadata_.Remove(TeMetadata());
|
1670
1465
|
/* TODO(ctiller): just make these the same variable? */
|
1671
|
-
if (
|
1672
|
-
|
1466
|
+
if (is_client() && send_deadline() != Timestamp::InfFuture()) {
|
1467
|
+
send_initial_metadata_.Set(GrpcTimeoutMetadata(), send_deadline());
|
1673
1468
|
}
|
1674
1469
|
stream_op_payload->send_initial_metadata.send_initial_metadata =
|
1675
|
-
&
|
1470
|
+
&send_initial_metadata_;
|
1676
1471
|
stream_op_payload->send_initial_metadata.send_initial_metadata_flags =
|
1677
1472
|
op->flags;
|
1678
|
-
if (
|
1679
|
-
stream_op_payload->send_initial_metadata.peer_string =
|
1680
|
-
&call->peer_string;
|
1473
|
+
if (is_client()) {
|
1474
|
+
stream_op_payload->send_initial_metadata.peer_string = &peer_string_;
|
1681
1475
|
}
|
1682
1476
|
has_send_ops = true;
|
1683
1477
|
break;
|
1684
1478
|
}
|
1685
1479
|
case GRPC_OP_SEND_MESSAGE: {
|
1686
|
-
if (!
|
1480
|
+
if (!AreWriteFlagsValid(op->flags)) {
|
1687
1481
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1688
1482
|
goto done_with_error;
|
1689
1483
|
}
|
@@ -1691,7 +1485,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1691
1485
|
error = GRPC_CALL_ERROR_INVALID_MESSAGE;
|
1692
1486
|
goto done_with_error;
|
1693
1487
|
}
|
1694
|
-
if (
|
1488
|
+
if (sending_message_) {
|
1695
1489
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1696
1490
|
goto done_with_error;
|
1697
1491
|
}
|
@@ -1704,11 +1498,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1704
1498
|
flags |= GRPC_WRITE_INTERNAL_COMPRESS;
|
1705
1499
|
}
|
1706
1500
|
stream_op->send_message = true;
|
1707
|
-
|
1708
|
-
|
1501
|
+
sending_message_ = true;
|
1502
|
+
sending_stream_.Init(
|
1709
1503
|
&op->data.send_message.send_message->data.raw.slice_buffer, flags);
|
1710
1504
|
stream_op_payload->send_message.send_message.reset(
|
1711
|
-
|
1505
|
+
sending_stream_.get());
|
1712
1506
|
has_send_ops = true;
|
1713
1507
|
break;
|
1714
1508
|
}
|
@@ -1718,18 +1512,18 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1718
1512
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1719
1513
|
goto done_with_error;
|
1720
1514
|
}
|
1721
|
-
if (!
|
1515
|
+
if (!is_client()) {
|
1722
1516
|
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
|
1723
1517
|
goto done_with_error;
|
1724
1518
|
}
|
1725
|
-
if (
|
1519
|
+
if (sent_final_op_) {
|
1726
1520
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1727
1521
|
goto done_with_error;
|
1728
1522
|
}
|
1729
1523
|
stream_op->send_trailing_metadata = true;
|
1730
|
-
|
1524
|
+
sent_final_op_ = true;
|
1731
1525
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1732
|
-
&
|
1526
|
+
&send_trailing_metadata_;
|
1733
1527
|
has_send_ops = true;
|
1734
1528
|
break;
|
1735
1529
|
}
|
@@ -1739,11 +1533,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1739
1533
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1740
1534
|
goto done_with_error;
|
1741
1535
|
}
|
1742
|
-
if (
|
1536
|
+
if (is_client()) {
|
1743
1537
|
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
|
1744
1538
|
goto done_with_error;
|
1745
1539
|
}
|
1746
|
-
if (
|
1540
|
+
if (sent_final_op_) {
|
1747
1541
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1748
1542
|
goto done_with_error;
|
1749
1543
|
}
|
@@ -1753,11 +1547,15 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1753
1547
|
goto done_with_error;
|
1754
1548
|
}
|
1755
1549
|
stream_op->send_trailing_metadata = true;
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
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
|
+
|
1761
1559
|
grpc_error_handle status_error =
|
1762
1560
|
op->data.send_status_from_server.status == GRPC_STATUS_OK
|
1763
1561
|
? GRPC_ERROR_NONE
|
@@ -1768,40 +1566,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1768
1566
|
static_cast<intptr_t>(
|
1769
1567
|
op->data.send_status_from_server.status));
|
1770
1568
|
if (op->data.send_status_from_server.status_details != nullptr) {
|
1771
|
-
|
1772
|
-
|
1773
|
-
|
1774
|
-
*op->data.send_status_from_server.status_details));
|
1775
|
-
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)));
|
1776
1573
|
if (status_error != GRPC_ERROR_NONE) {
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1780
|
-
|
1781
|
-
grpc_slice_from_copied_string(msg));
|
1782
|
-
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));
|
1783
1578
|
}
|
1784
1579
|
}
|
1785
1580
|
|
1786
|
-
|
1787
|
-
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1791
|
-
|
1792
|
-
|
1793
|
-
|
1794
|
-
for (int n = 0; n < call->send_extra_metadata_count; n++) {
|
1795
|
-
GRPC_MDELEM_UNREF(call->send_extra_metadata[n].md);
|
1796
|
-
}
|
1797
|
-
call->send_extra_metadata_count = 0;
|
1798
|
-
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1799
|
-
goto done_with_error;
|
1800
|
-
}
|
1581
|
+
status_error_.set(status_error);
|
1582
|
+
GRPC_ERROR_UNREF(status_error);
|
1583
|
+
|
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());
|
1801
1589
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1802
|
-
&
|
1590
|
+
&send_trailing_metadata_;
|
1803
1591
|
stream_op_payload->send_trailing_metadata.sent =
|
1804
|
-
&
|
1592
|
+
&sent_server_trailing_metadata_;
|
1805
1593
|
has_send_ops = true;
|
1806
1594
|
break;
|
1807
1595
|
}
|
@@ -1811,27 +1599,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1811
1599
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1812
1600
|
goto done_with_error;
|
1813
1601
|
}
|
1814
|
-
if (
|
1602
|
+
if (received_initial_metadata_) {
|
1815
1603
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1816
1604
|
goto done_with_error;
|
1817
1605
|
}
|
1818
|
-
|
1819
|
-
|
1606
|
+
received_initial_metadata_ = true;
|
1607
|
+
buffered_metadata_[0] =
|
1820
1608
|
op->data.recv_initial_metadata.recv_initial_metadata;
|
1821
|
-
GRPC_CLOSURE_INIT(
|
1822
|
-
|
1823
|
-
|
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);
|
1824
1616
|
stream_op->recv_initial_metadata = true;
|
1825
1617
|
stream_op_payload->recv_initial_metadata.recv_initial_metadata =
|
1826
|
-
&
|
1618
|
+
&recv_initial_metadata_;
|
1827
1619
|
stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
|
1828
|
-
&
|
1829
|
-
if (
|
1620
|
+
&receiving_initial_metadata_ready_;
|
1621
|
+
if (is_client()) {
|
1830
1622
|
stream_op_payload->recv_initial_metadata.trailing_metadata_available =
|
1831
|
-
&
|
1623
|
+
&is_trailers_only_;
|
1832
1624
|
} else {
|
1833
|
-
stream_op_payload->recv_initial_metadata.peer_string =
|
1834
|
-
&call->peer_string;
|
1625
|
+
stream_op_payload->recv_initial_metadata.peer_string = &peer_string_;
|
1835
1626
|
}
|
1836
1627
|
++num_recv_ops;
|
1837
1628
|
break;
|
@@ -1842,21 +1633,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1842
1633
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1843
1634
|
goto done_with_error;
|
1844
1635
|
}
|
1845
|
-
if (
|
1636
|
+
if (receiving_message_) {
|
1846
1637
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1847
1638
|
goto done_with_error;
|
1848
1639
|
}
|
1849
|
-
|
1640
|
+
receiving_message_ = true;
|
1850
1641
|
stream_op->recv_message = true;
|
1851
|
-
|
1852
|
-
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_;
|
1853
1644
|
stream_op_payload->recv_message.call_failed_before_recv_message =
|
1854
|
-
&
|
1855
|
-
GRPC_CLOSURE_INIT(
|
1856
|
-
|
1857
|
-
|
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);
|
1858
1658
|
stream_op_payload->recv_message.recv_message_ready =
|
1859
|
-
&
|
1659
|
+
&receiving_stream_ready_;
|
1860
1660
|
++num_recv_ops;
|
1861
1661
|
break;
|
1862
1662
|
}
|
@@ -1866,32 +1666,36 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1866
1666
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1867
1667
|
goto done_with_error;
|
1868
1668
|
}
|
1869
|
-
if (!
|
1669
|
+
if (!is_client()) {
|
1870
1670
|
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
|
1871
1671
|
goto done_with_error;
|
1872
1672
|
}
|
1873
|
-
if (
|
1673
|
+
if (requested_final_op_) {
|
1874
1674
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1875
1675
|
goto done_with_error;
|
1876
1676
|
}
|
1877
|
-
|
1878
|
-
|
1677
|
+
requested_final_op_ = true;
|
1678
|
+
buffered_metadata_[1] =
|
1879
1679
|
op->data.recv_status_on_client.trailing_metadata;
|
1880
|
-
|
1881
|
-
|
1680
|
+
final_op_.client.status = op->data.recv_status_on_client.status;
|
1681
|
+
final_op_.client.status_details =
|
1882
1682
|
op->data.recv_status_on_client.status_details;
|
1883
|
-
|
1683
|
+
final_op_.client.error_string =
|
1884
1684
|
op->data.recv_status_on_client.error_string;
|
1885
1685
|
stream_op->recv_trailing_metadata = true;
|
1886
1686
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
|
1887
|
-
&
|
1687
|
+
&recv_trailing_metadata_;
|
1888
1688
|
stream_op_payload->recv_trailing_metadata.collect_stats =
|
1889
|
-
&
|
1890
|
-
GRPC_CLOSURE_INIT(
|
1891
|
-
|
1892
|
-
|
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);
|
1893
1697
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1894
|
-
&
|
1698
|
+
&receiving_trailing_metadata_ready_;
|
1895
1699
|
++num_recv_ops;
|
1896
1700
|
break;
|
1897
1701
|
}
|
@@ -1901,47 +1705,54 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1901
1705
|
error = GRPC_CALL_ERROR_INVALID_FLAGS;
|
1902
1706
|
goto done_with_error;
|
1903
1707
|
}
|
1904
|
-
if (
|
1708
|
+
if (is_client()) {
|
1905
1709
|
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
|
1906
1710
|
goto done_with_error;
|
1907
1711
|
}
|
1908
|
-
if (
|
1712
|
+
if (requested_final_op_) {
|
1909
1713
|
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
|
1910
1714
|
goto done_with_error;
|
1911
1715
|
}
|
1912
|
-
|
1913
|
-
|
1914
|
-
op->data.recv_close_on_server.cancelled;
|
1716
|
+
requested_final_op_ = true;
|
1717
|
+
final_op_.server.cancelled = op->data.recv_close_on_server.cancelled;
|
1915
1718
|
stream_op->recv_trailing_metadata = true;
|
1916
1719
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
|
1917
|
-
&
|
1720
|
+
&recv_trailing_metadata_;
|
1918
1721
|
stream_op_payload->recv_trailing_metadata.collect_stats =
|
1919
|
-
&
|
1920
|
-
GRPC_CLOSURE_INIT(
|
1921
|
-
|
1922
|
-
|
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);
|
1923
1730
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1924
|
-
&
|
1731
|
+
&receiving_trailing_metadata_ready_;
|
1925
1732
|
++num_recv_ops;
|
1926
1733
|
break;
|
1927
1734
|
}
|
1928
1735
|
}
|
1929
1736
|
}
|
1930
1737
|
|
1931
|
-
|
1738
|
+
InternalRef("completion");
|
1932
1739
|
if (!is_notify_tag_closure) {
|
1933
|
-
GPR_ASSERT(grpc_cq_begin_op(
|
1740
|
+
GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag));
|
1934
1741
|
}
|
1935
1742
|
bctl->set_num_steps_to_complete((has_send_ops ? 1 : 0) + num_recv_ops);
|
1936
1743
|
|
1937
1744
|
if (has_send_ops) {
|
1938
|
-
GRPC_CLOSURE_INIT(
|
1939
|
-
|
1940
|
-
|
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_;
|
1941
1752
|
}
|
1942
1753
|
|
1943
|
-
gpr_atm_rel_store(&
|
1944
|
-
|
1754
|
+
gpr_atm_rel_store(&any_ops_sent_atm_, 1);
|
1755
|
+
ExecuteBatch(stream_op, &bctl->start_batch_);
|
1945
1756
|
|
1946
1757
|
done:
|
1947
1758
|
return error;
|
@@ -1949,88 +1760,172 @@ done:
|
|
1949
1760
|
done_with_error:
|
1950
1761
|
/* reverse any mutations that occurred */
|
1951
1762
|
if (stream_op->send_initial_metadata) {
|
1952
|
-
|
1953
|
-
|
1763
|
+
sent_initial_metadata_ = false;
|
1764
|
+
send_initial_metadata_.Clear();
|
1954
1765
|
}
|
1955
1766
|
if (stream_op->send_message) {
|
1956
|
-
|
1957
|
-
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.
|
1771
|
+
stream_op_payload->send_message.send_message.reset();
|
1958
1772
|
}
|
1959
1773
|
if (stream_op->send_trailing_metadata) {
|
1960
|
-
|
1961
|
-
|
1774
|
+
sent_final_op_ = false;
|
1775
|
+
send_trailing_metadata_.Clear();
|
1962
1776
|
}
|
1963
1777
|
if (stream_op->recv_initial_metadata) {
|
1964
|
-
|
1778
|
+
received_initial_metadata_ = false;
|
1965
1779
|
}
|
1966
1780
|
if (stream_op->recv_message) {
|
1967
|
-
|
1781
|
+
receiving_message_ = false;
|
1968
1782
|
}
|
1969
1783
|
if (stream_op->recv_trailing_metadata) {
|
1970
|
-
|
1784
|
+
requested_final_op_ = false;
|
1971
1785
|
}
|
1972
1786
|
goto done;
|
1973
1787
|
}
|
1974
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
|
+
|
1975
1882
|
grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
|
1976
1883
|
size_t nops, void* tag, void* reserved) {
|
1977
|
-
grpc_call_error err;
|
1978
|
-
|
1979
1884
|
GRPC_API_TRACE(
|
1980
1885
|
"grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, "
|
1981
1886
|
"reserved=%p)",
|
1982
1887
|
5, (call, ops, (unsigned long)nops, tag, reserved));
|
1983
1888
|
|
1984
1889
|
if (reserved != nullptr) {
|
1985
|
-
|
1890
|
+
return GRPC_CALL_ERROR;
|
1986
1891
|
} else {
|
1987
1892
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1988
1893
|
grpc_core::ExecCtx exec_ctx;
|
1989
|
-
|
1894
|
+
return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
|
1990
1895
|
}
|
1991
|
-
|
1992
|
-
return err;
|
1993
1896
|
}
|
1994
1897
|
|
1995
1898
|
grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
|
1996
1899
|
const grpc_op* ops,
|
1997
1900
|
size_t nops,
|
1998
1901
|
grpc_closure* closure) {
|
1999
|
-
return
|
1902
|
+
return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
|
2000
1903
|
}
|
2001
1904
|
|
2002
1905
|
void grpc_call_context_set(grpc_call* call, grpc_context_index elem,
|
2003
1906
|
void* value, void (*destroy)(void* value)) {
|
2004
|
-
|
2005
|
-
call->context[elem].destroy(call->context[elem].value);
|
2006
|
-
}
|
2007
|
-
call->context[elem].value = value;
|
2008
|
-
call->context[elem].destroy = destroy;
|
1907
|
+
return grpc_core::Call::FromC(call)->ContextSet(elem, value, destroy);
|
2009
1908
|
}
|
2010
1909
|
|
2011
1910
|
void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
|
2012
|
-
return call->
|
1911
|
+
return grpc_core::Call::FromC(call)->ContextGet(elem);
|
2013
1912
|
}
|
2014
1913
|
|
2015
|
-
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
|
+
}
|
2016
1917
|
|
2017
1918
|
grpc_compression_algorithm grpc_call_compression_for_level(
|
2018
1919
|
grpc_call* call, grpc_compression_level level) {
|
2019
|
-
|
2020
|
-
compression_algorithm_for_level_locked(call, level);
|
2021
|
-
return algo;
|
1920
|
+
return grpc_core::Call::FromC(call)->compression_for_level(level);
|
2022
1921
|
}
|
2023
1922
|
|
2024
1923
|
bool grpc_call_is_trailers_only(const grpc_call* call) {
|
2025
|
-
|
2026
|
-
GPR_DEBUG_ASSERT(
|
2027
|
-
!result || call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */]
|
2028
|
-
.list.count == 0);
|
2029
|
-
return result;
|
1924
|
+
return grpc_core::Call::FromC(call)->is_trailers_only();
|
2030
1925
|
}
|
2031
1926
|
|
2032
|
-
|
2033
|
-
return c->
|
1927
|
+
int grpc_call_failed_before_recv_message(const grpc_call* c) {
|
1928
|
+
return grpc_core::Call::FromC(c)->failed_before_recv_message();
|
2034
1929
|
}
|
2035
1930
|
|
2036
1931
|
const char* grpc_call_error_to_string(grpc_call_error error) {
|