grpc 1.34.0 → 1.35.0.pre1
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 +808 -2787
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +14 -0
- data/include/grpc/grpc_security.h +61 -3
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +1 -1
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
- data/src/core/ext/filters/client_channel/client_channel.h +0 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
- data/src/core/ext/filters/client_channel/subchannel.h +12 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/xds/certificate_provider_store.cc +10 -7
- data/src/core/ext/xds/certificate_provider_store.h +12 -7
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
- data/src/core/ext/xds/xds_api.cc +220 -31
- data/src/core/ext/xds/xds_api.h +41 -10
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
- data/src/core/ext/xds/xds_certificate_provider.h +40 -2
- data/src/core/ext/xds/xds_client.cc +31 -29
- data/src/core/ext/xds/xds_client.h +6 -1
- data/src/core/ext/xds/xds_client_stats.cc +2 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
- data/src/core/lib/channel/channel_args.cc +8 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +13 -14
- data/src/core/lib/channel/channelz.h +0 -1
- data/src/core/lib/channel/channelz_registry.h +0 -1
- data/src/core/lib/channel/handshaker.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/debug/stats.h +2 -2
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/log.cc +53 -16
- data/src/core/lib/gpr/log_linux.cc +3 -1
- data/src/core/lib/gpr/log_posix.cc +3 -1
- data/src/core/lib/gpr/log_windows.cc +3 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +22 -21
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/ref_counted.h +2 -2
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
- data/src/core/lib/gprpp/thd_posix.cc +6 -1
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +1 -1
- data/src/core/lib/http/parser.cc +1 -2
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/error.cc +15 -11
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/exec_ctx.h +6 -4
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/threadpool.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +52 -46
- data/src/core/lib/iomgr/parse_address.h +13 -9
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/timer_custom.cc +3 -3
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
- data/src/core/lib/json/json.h +10 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
- data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +3 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +32 -24
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +16 -10
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +23 -18
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +6 -5
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +59 -15
- data/src/core/lib/surface/server.h +37 -5
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/authority_override.cc +6 -4
- data/src/core/lib/transport/authority_override.h +5 -2
- data/src/core/lib/transport/connectivity_state.h +6 -4
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/transport.h +7 -7
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +5 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +62 -49
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +6 -6
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +525 -516
- data/third_party/upb/upb/def.h +16 -31
- data/third_party/upb/upb/def.hpp +37 -123
- data/third_party/upb/upb/encode.c +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +36 -19
- data/third_party/upb/upb/table.c +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- data/third_party/upb/upb/text_encode.c +45 -22
- data/third_party/upb/upb/text_encode.h +4 -1
- data/third_party/upb/upb/upb.c +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +60 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/third_party/upb/upb/port.c +0 -26
@@ -101,11 +101,12 @@ static void register_builtin_channel_init() {
|
|
101
101
|
grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
|
102
102
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
103
103
|
grpc_add_connected_filter, nullptr);
|
104
|
-
grpc_channel_init_register_stage(
|
105
|
-
|
106
|
-
|
107
|
-
grpc_channel_init_register_stage(
|
108
|
-
|
104
|
+
grpc_channel_init_register_stage(
|
105
|
+
GRPC_CLIENT_LAME_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
106
|
+
append_filter, const_cast<grpc_channel_filter*>(&grpc_lame_filter));
|
107
|
+
grpc_channel_init_register_stage(
|
108
|
+
GRPC_SERVER_CHANNEL, INT_MAX, prepend_filter,
|
109
|
+
const_cast<grpc_channel_filter*>(&grpc_core::Server::kServerTopFilter));
|
109
110
|
}
|
110
111
|
|
111
112
|
typedef struct grpc_plugin {
|
@@ -39,59 +39,25 @@ namespace grpc_core {
|
|
39
39
|
|
40
40
|
namespace {
|
41
41
|
|
42
|
-
struct CallData {
|
43
|
-
CallCombiner* call_combiner;
|
44
|
-
grpc_linked_mdelem status;
|
45
|
-
grpc_linked_mdelem details;
|
46
|
-
Atomic<bool> filled_metadata;
|
47
|
-
};
|
48
|
-
|
49
42
|
struct ChannelData {
|
50
43
|
ChannelData() : state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) {}
|
44
|
+
~ChannelData() { GRPC_ERROR_UNREF(error); }
|
51
45
|
|
52
|
-
|
53
|
-
const char* error_message;
|
46
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
54
47
|
Mutex mu;
|
55
48
|
ConnectivityStateTracker state_tracker;
|
56
49
|
};
|
57
50
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
if (!calld->filled_metadata.CompareExchangeStrong(
|
62
|
-
&expected, true, MemoryOrder::RELAXED, MemoryOrder::RELAXED)) {
|
63
|
-
return;
|
64
|
-
}
|
65
|
-
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
66
|
-
char tmp[GPR_LTOA_MIN_BUFSIZE];
|
67
|
-
gpr_ltoa(chand->error_code, tmp);
|
68
|
-
calld->status.md = grpc_mdelem_from_slices(
|
69
|
-
GRPC_MDSTR_GRPC_STATUS, grpc_core::UnmanagedMemorySlice(tmp));
|
70
|
-
calld->details.md = grpc_mdelem_from_slices(
|
71
|
-
GRPC_MDSTR_GRPC_MESSAGE,
|
72
|
-
grpc_core::UnmanagedMemorySlice(chand->error_message));
|
73
|
-
calld->status.prev = calld->details.next = nullptr;
|
74
|
-
calld->status.next = &calld->details;
|
75
|
-
calld->details.prev = &calld->status;
|
76
|
-
mdb->list.head = &calld->status;
|
77
|
-
mdb->list.tail = &calld->details;
|
78
|
-
mdb->list.count = 2;
|
79
|
-
mdb->deadline = GRPC_MILLIS_INF_FUTURE;
|
80
|
-
}
|
51
|
+
struct CallData {
|
52
|
+
CallCombiner* call_combiner;
|
53
|
+
};
|
81
54
|
|
82
55
|
static void lame_start_transport_stream_op_batch(
|
83
56
|
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
84
57
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
85
|
-
|
86
|
-
fill_metadata(elem,
|
87
|
-
op->payload->recv_initial_metadata.recv_initial_metadata);
|
88
|
-
} else if (op->recv_trailing_metadata) {
|
89
|
-
fill_metadata(elem,
|
90
|
-
op->payload->recv_trailing_metadata.recv_trailing_metadata);
|
91
|
-
}
|
58
|
+
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
92
59
|
grpc_transport_stream_op_batch_finish_with_failure(
|
93
|
-
op,
|
94
|
-
calld->call_combiner);
|
60
|
+
op, GRPC_ERROR_REF(chand->error), calld->call_combiner);
|
95
61
|
}
|
96
62
|
|
97
63
|
static void lame_get_channel_info(grpc_channel_element* /*elem*/,
|
@@ -152,6 +118,12 @@ static void lame_destroy_channel_elem(grpc_channel_element* elem) {
|
|
152
118
|
|
153
119
|
} // namespace
|
154
120
|
|
121
|
+
void SetLameFilterError(grpc_channel_element* elem, grpc_error* error) {
|
122
|
+
GPR_ASSERT(elem->filter == &grpc_lame_filter);
|
123
|
+
auto chand = static_cast<grpc_core::ChannelData*>(elem->channel_data);
|
124
|
+
chand->error = error;
|
125
|
+
}
|
126
|
+
|
155
127
|
} // namespace grpc_core
|
156
128
|
|
157
129
|
const grpc_channel_filter grpc_lame_filter = {
|
@@ -182,10 +154,12 @@ grpc_channel* grpc_lame_client_channel_create(const char* target,
|
|
182
154
|
"grpc_lame_client_channel_create(target=%s, error_code=%d, "
|
183
155
|
"error_message=%s)",
|
184
156
|
3, (target, (int)error_code, error_message));
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
157
|
+
grpc_core::SetLameFilterError(
|
158
|
+
elem, grpc_error_set_str(
|
159
|
+
grpc_error_set_int(
|
160
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"),
|
161
|
+
GRPC_ERROR_INT_GRPC_STATUS, error_code),
|
162
|
+
GRPC_ERROR_STR_GRPC_MESSAGE,
|
163
|
+
grpc_slice_from_static_string(error_message)));
|
190
164
|
return channel;
|
191
165
|
}
|
@@ -538,6 +538,14 @@ Server::Server(const grpc_channel_args* args)
|
|
538
538
|
|
539
539
|
Server::~Server() {
|
540
540
|
grpc_channel_args_destroy(channel_args_);
|
541
|
+
// Remove the cq pollsets from the config_fetcher.
|
542
|
+
if (started_ && config_fetcher_ != nullptr &&
|
543
|
+
config_fetcher_->interested_parties() != nullptr) {
|
544
|
+
for (grpc_pollset* pollset : pollsets_) {
|
545
|
+
grpc_pollset_set_del_pollset(config_fetcher_->interested_parties(),
|
546
|
+
pollset);
|
547
|
+
}
|
548
|
+
}
|
541
549
|
for (size_t i = 0; i < cqs_.size(); i++) {
|
542
550
|
GRPC_CQ_INTERNAL_UNREF(cqs_[i], "server");
|
543
551
|
}
|
@@ -571,6 +579,16 @@ void Server::Start() {
|
|
571
579
|
MutexLock lock(&mu_global_);
|
572
580
|
starting_ = true;
|
573
581
|
}
|
582
|
+
// Register the interested parties from the config fetcher to the cq pollsets
|
583
|
+
// before starting listeners so that config fetcher is being polled when the
|
584
|
+
// listeners start watch the fetcher.
|
585
|
+
if (config_fetcher_ != nullptr &&
|
586
|
+
config_fetcher_->interested_parties() != nullptr) {
|
587
|
+
for (grpc_pollset* pollset : pollsets_) {
|
588
|
+
grpc_pollset_set_add_pollset(config_fetcher_->interested_parties(),
|
589
|
+
pollset);
|
590
|
+
}
|
591
|
+
}
|
574
592
|
for (auto& listener : listeners_) {
|
575
593
|
listener.listener->Start(this, &pollsets_);
|
576
594
|
}
|
@@ -579,14 +597,18 @@ void Server::Start() {
|
|
579
597
|
starting_cv_.Signal();
|
580
598
|
}
|
581
599
|
|
582
|
-
|
600
|
+
grpc_error* Server::SetupTransport(
|
583
601
|
grpc_transport* transport, grpc_pollset* accepting_pollset,
|
584
602
|
const grpc_channel_args* args,
|
585
603
|
const RefCountedPtr<grpc_core::channelz::SocketNode>& socket_node,
|
586
604
|
grpc_resource_user* resource_user) {
|
587
605
|
// Create channel.
|
606
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
588
607
|
grpc_channel* channel = grpc_channel_create(
|
589
|
-
nullptr, args, GRPC_SERVER_CHANNEL, transport, resource_user);
|
608
|
+
nullptr, args, GRPC_SERVER_CHANNEL, transport, resource_user, &error);
|
609
|
+
if (channel == nullptr) {
|
610
|
+
return error;
|
611
|
+
}
|
590
612
|
ChannelData* chand = static_cast<ChannelData*>(
|
591
613
|
grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0)
|
592
614
|
->channel_data);
|
@@ -607,6 +629,7 @@ void Server::SetupTransport(
|
|
607
629
|
}
|
608
630
|
// Initialize chand.
|
609
631
|
chand->InitTransport(Ref(), channel, cq_idx, transport, channelz_socket_uuid);
|
632
|
+
return GRPC_ERROR_NONE;
|
610
633
|
}
|
611
634
|
|
612
635
|
bool Server::HasOpenConnections() {
|
@@ -1115,8 +1138,8 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
|
|
1115
1138
|
calld->Start(elem);
|
1116
1139
|
}
|
1117
1140
|
|
1118
|
-
void Server::ChannelData::FinishDestroy(void*
|
1119
|
-
auto* chand = static_cast<Server::ChannelData*>(
|
1141
|
+
void Server::ChannelData::FinishDestroy(void* arg, grpc_error* /*error*/) {
|
1142
|
+
auto* chand = static_cast<Server::ChannelData*>(arg);
|
1120
1143
|
Server* server = chand->server_.get();
|
1121
1144
|
GRPC_CHANNEL_INTERNAL_UNREF(chand->channel_, "server");
|
1122
1145
|
server->Unref();
|
@@ -1355,8 +1378,8 @@ void Server::CallData::StartTransportStreamOpBatchImpl(
|
|
1355
1378
|
grpc_call_next_op(elem, batch);
|
1356
1379
|
}
|
1357
1380
|
|
1358
|
-
void Server::CallData::RecvInitialMetadataReady(void*
|
1359
|
-
grpc_call_element* elem = static_cast<grpc_call_element*>(
|
1381
|
+
void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) {
|
1382
|
+
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1360
1383
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1361
1384
|
grpc_millis op_deadline;
|
1362
1385
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1398,9 +1421,8 @@ void Server::CallData::RecvInitialMetadataReady(void* ptr, grpc_error* error) {
|
|
1398
1421
|
Closure::Run(DEBUG_LOCATION, closure, error);
|
1399
1422
|
}
|
1400
1423
|
|
1401
|
-
void Server::CallData::RecvTrailingMetadataReady(void*
|
1402
|
-
|
1403
|
-
grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
|
1424
|
+
void Server::CallData::RecvTrailingMetadataReady(void* arg, grpc_error* error) {
|
1425
|
+
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1404
1426
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1405
1427
|
if (calld->original_recv_initial_metadata_ready_ != nullptr) {
|
1406
1428
|
calld->recv_trailing_metadata_error_ = GRPC_ERROR_REF(error);
|
@@ -1535,23 +1557,45 @@ grpc_call_error grpc_server_request_call(
|
|
1535
1557
|
}
|
1536
1558
|
|
1537
1559
|
grpc_call_error grpc_server_request_registered_call(
|
1538
|
-
grpc_server* server, void*
|
1539
|
-
|
1560
|
+
grpc_server* server, void* registered_method, grpc_call** call,
|
1561
|
+
gpr_timespec* deadline, grpc_metadata_array* request_metadata,
|
1562
|
+
grpc_byte_buffer** optional_payload,
|
1540
1563
|
grpc_completion_queue* cq_bound_to_call,
|
1541
1564
|
grpc_completion_queue* cq_for_notification, void* tag_new) {
|
1542
1565
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1543
1566
|
grpc_core::ExecCtx exec_ctx;
|
1544
1567
|
GRPC_STATS_INC_SERVER_REQUESTED_CALLS();
|
1545
|
-
auto* rm =
|
1568
|
+
auto* rm =
|
1569
|
+
static_cast<grpc_core::Server::RegisteredMethod*>(registered_method);
|
1546
1570
|
GRPC_API_TRACE(
|
1547
1571
|
"grpc_server_request_registered_call("
|
1548
|
-
"server=%p,
|
1572
|
+
"server=%p, registered_method=%p, call=%p, deadline=%p, "
|
1573
|
+
"request_metadata=%p, "
|
1549
1574
|
"optional_payload=%p, cq_bound_to_call=%p, cq_for_notification=%p, "
|
1550
1575
|
"tag=%p)",
|
1551
1576
|
9,
|
1552
|
-
(server,
|
1553
|
-
cq_bound_to_call, cq_for_notification, tag_new));
|
1577
|
+
(server, registered_method, call, deadline, request_metadata,
|
1578
|
+
optional_payload, cq_bound_to_call, cq_for_notification, tag_new));
|
1554
1579
|
return server->core_server->RequestRegisteredCall(
|
1555
1580
|
rm, call, deadline, request_metadata, optional_payload, cq_bound_to_call,
|
1556
1581
|
cq_for_notification, tag_new);
|
1557
1582
|
}
|
1583
|
+
|
1584
|
+
void grpc_server_set_config_fetcher(
|
1585
|
+
grpc_server* server, grpc_server_config_fetcher* server_config_fetcher) {
|
1586
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1587
|
+
grpc_core::ExecCtx exec_ctx;
|
1588
|
+
GRPC_API_TRACE("grpc_server_set_config_fetcher(server=%p, config_fetcher=%p)",
|
1589
|
+
2, (server, server_config_fetcher));
|
1590
|
+
server->core_server->set_config_fetcher(
|
1591
|
+
std::unique_ptr<grpc_server_config_fetcher>(server_config_fetcher));
|
1592
|
+
}
|
1593
|
+
|
1594
|
+
void grpc_server_config_fetcher_destroy(
|
1595
|
+
grpc_server_config_fetcher* server_config_fetcher) {
|
1596
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
1597
|
+
grpc_core::ExecCtx exec_ctx;
|
1598
|
+
GRPC_API_TRACE("grpc_server_config_fetcher_destroy(config_fetcher=%p)", 1,
|
1599
|
+
(server_config_fetcher));
|
1600
|
+
delete server_config_fetcher;
|
1601
|
+
}
|
@@ -103,6 +103,15 @@ class Server : public InternallyRefCounted<Server> {
|
|
103
103
|
// result is valid for the lifetime of the server.
|
104
104
|
const std::vector<grpc_pollset*>& pollsets() const { return pollsets_; }
|
105
105
|
|
106
|
+
grpc_server_config_fetcher* config_fetcher() const {
|
107
|
+
return config_fetcher_.get();
|
108
|
+
}
|
109
|
+
|
110
|
+
void set_config_fetcher(
|
111
|
+
std::unique_ptr<grpc_server_config_fetcher> config_fetcher) {
|
112
|
+
config_fetcher_ = std::move(config_fetcher);
|
113
|
+
}
|
114
|
+
|
106
115
|
bool HasOpenConnections();
|
107
116
|
|
108
117
|
// Adds a listener to the server. When the server starts, it will call
|
@@ -115,11 +124,11 @@ class Server : public InternallyRefCounted<Server> {
|
|
115
124
|
|
116
125
|
// Sets up a transport. Creates a channel stack and binds the transport to
|
117
126
|
// the server. Called from the listener when a new connection is accepted.
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
127
|
+
grpc_error* SetupTransport(
|
128
|
+
grpc_transport* transport, grpc_pollset* accepting_pollset,
|
129
|
+
const grpc_channel_args* args,
|
130
|
+
const RefCountedPtr<channelz::SocketNode>& socket_node,
|
131
|
+
grpc_resource_user* resource_user = nullptr);
|
123
132
|
|
124
133
|
void RegisterCompletionQueue(grpc_completion_queue* cq);
|
125
134
|
|
@@ -350,6 +359,7 @@ class Server : public InternallyRefCounted<Server> {
|
|
350
359
|
grpc_channel_args* const channel_args_;
|
351
360
|
grpc_resource_user* default_resource_user_ = nullptr;
|
352
361
|
RefCountedPtr<channelz::ServerNode> channelz_node_;
|
362
|
+
std::unique_ptr<grpc_server_config_fetcher> config_fetcher_;
|
353
363
|
|
354
364
|
std::vector<grpc_completion_queue*> cqs_;
|
355
365
|
std::vector<grpc_pollset*> pollsets_;
|
@@ -394,4 +404,26 @@ struct grpc_server {
|
|
394
404
|
grpc_core::OrphanablePtr<grpc_core::Server> core_server;
|
395
405
|
};
|
396
406
|
|
407
|
+
// TODO(roth): Eventually, will need a way to modify configuration even after
|
408
|
+
// a connection is established (e.g., to change things like L7 rate
|
409
|
+
// limiting, RBAC, and fault injection configs). One possible option
|
410
|
+
// would be to do something like ServiceConfig and ConfigSelector, but
|
411
|
+
// that might add unnecessary per-call overhead. Need to consider other
|
412
|
+
// approaches here.
|
413
|
+
struct grpc_server_config_fetcher {
|
414
|
+
public:
|
415
|
+
class WatcherInterface {
|
416
|
+
public:
|
417
|
+
virtual ~WatcherInterface() = default;
|
418
|
+
virtual void UpdateConfig(grpc_channel_args* args) = 0;
|
419
|
+
};
|
420
|
+
|
421
|
+
virtual ~grpc_server_config_fetcher() = default;
|
422
|
+
|
423
|
+
virtual void StartWatch(std::string listening_address,
|
424
|
+
std::unique_ptr<WatcherInterface> watcher) = 0;
|
425
|
+
virtual void CancelWatch(WatcherInterface* watcher) = 0;
|
426
|
+
virtual grpc_pollset_set* interested_parties() = 0;
|
427
|
+
};
|
428
|
+
|
397
429
|
#endif /* GRPC_CORE_LIB_SURFACE_SERVER_H */
|
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
|
+
#include "absl/strings/string_view.h"
|
20
|
+
|
19
21
|
#include "src/core/lib/channel/channel_args.h"
|
20
22
|
|
21
23
|
// Channel arg key for the authority override.
|
@@ -23,16 +25,16 @@
|
|
23
25
|
|
24
26
|
namespace grpc_core {
|
25
27
|
|
26
|
-
/// Returns a channel argument containing \a authority.
|
27
28
|
grpc_arg CreateAuthorityOverrideChannelArg(const char* authority) {
|
28
29
|
return grpc_channel_arg_string_create(
|
29
30
|
const_cast<char*>(GRPC_ARG_AUTHORITY_OVERRIDE),
|
30
31
|
const_cast<char*>(authority));
|
31
32
|
}
|
32
33
|
|
33
|
-
|
34
|
-
const char*
|
35
|
-
|
34
|
+
absl::string_view FindAuthorityOverrideInArgs(const grpc_channel_args* args) {
|
35
|
+
const char* found =
|
36
|
+
grpc_channel_args_find_string(args, GRPC_ARG_AUTHORITY_OVERRIDE);
|
37
|
+
return found == nullptr ? "" : found;
|
36
38
|
}
|
37
39
|
|
38
40
|
} // namespace grpc_core
|
@@ -19,6 +19,8 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include "absl/strings/string_view.h"
|
23
|
+
|
22
24
|
#include <grpc/grpc.h>
|
23
25
|
|
24
26
|
namespace grpc_core {
|
@@ -26,8 +28,9 @@ namespace grpc_core {
|
|
26
28
|
/// Returns a channel argument containing \a authority.
|
27
29
|
grpc_arg CreateAuthorityOverrideChannelArg(const char* authority);
|
28
30
|
|
29
|
-
/// Returns the authority override from \a args or
|
30
|
-
|
31
|
+
/// Returns the authority override from \a args or the empty string. The return
|
32
|
+
/// value is a string_view into the `args` data structure.
|
33
|
+
absl::string_view FindAuthorityOverrideInArgs(const grpc_channel_args* args);
|
31
34
|
|
32
35
|
} // namespace grpc_core
|
33
36
|
|
@@ -21,13 +21,15 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <map>
|
25
|
+
#include <memory>
|
26
|
+
|
24
27
|
#include "absl/status/status.h"
|
25
28
|
|
26
29
|
#include <grpc/grpc.h>
|
27
30
|
|
28
31
|
#include "src/core/lib/debug/trace.h"
|
29
32
|
#include "src/core/lib/gprpp/atomic.h"
|
30
|
-
#include "src/core/lib/gprpp/map.h"
|
31
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
32
34
|
#include "src/core/lib/iomgr/closure.h"
|
33
35
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -95,9 +97,9 @@ class AsyncConnectivityStateWatcherInterface
|
|
95
97
|
// to be called).
|
96
98
|
class ConnectivityStateTracker {
|
97
99
|
public:
|
98
|
-
ConnectivityStateTracker(
|
99
|
-
|
100
|
-
|
100
|
+
explicit ConnectivityStateTracker(
|
101
|
+
const char* name, grpc_connectivity_state state = GRPC_CHANNEL_IDLE,
|
102
|
+
const absl::Status& status = absl::Status())
|
101
103
|
: name_(name), state_(state), status_(status) {}
|
102
104
|
|
103
105
|
~ConnectivityStateTracker();
|
@@ -36,7 +36,7 @@
|
|
36
36
|
/// NULL.
|
37
37
|
void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
|
38
38
|
grpc_status_code* code, grpc_slice* slice,
|
39
|
-
grpc_http2_error_code*
|
39
|
+
grpc_http2_error_code* http_error,
|
40
40
|
const char** error_string);
|
41
41
|
|
42
42
|
/// Utility Function to convert a grpc_error * \a error to an absl::Status.
|
@@ -73,7 +73,7 @@ void grpc_metadata_batch_remove(grpc_metadata_batch* batch,
|
|
73
73
|
/** Substitute a new mdelem for an old value */
|
74
74
|
grpc_error* grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
|
75
75
|
grpc_linked_mdelem* storage,
|
76
|
-
grpc_mdelem
|
76
|
+
grpc_mdelem new_mdelem);
|
77
77
|
|
78
78
|
void grpc_metadata_batch_set_value(grpc_linked_mdelem* storage,
|
79
79
|
const grpc_slice& value);
|
@@ -172,10 +172,10 @@ grpc_error* grpc_metadata_batch_filter(
|
|
172
172
|
void* user_data, const char* composite_error_string) GRPC_MUST_USE_RESULT;
|
173
173
|
|
174
174
|
#ifndef NDEBUG
|
175
|
-
void grpc_metadata_batch_assert_ok(grpc_metadata_batch*
|
175
|
+
void grpc_metadata_batch_assert_ok(grpc_metadata_batch* batch);
|
176
176
|
#else
|
177
|
-
#define grpc_metadata_batch_assert_ok(
|
178
|
-
do {
|
177
|
+
#define grpc_metadata_batch_assert_ok(batch) \
|
178
|
+
do { \
|
179
179
|
} while (0)
|
180
180
|
#endif
|
181
181
|
|