grpc 1.28.0 → 1.30.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +7694 -11190
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +22 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +19 -21
- data/include/grpc/impl/codegen/port_platform.h +6 -2
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +203 -236
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
- data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
- data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
- data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +5 -5
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +52 -39
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +329 -297
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- metadata +111 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -21,13 +21,14 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "absl/container/inlined_vector.h"
|
25
|
+
|
24
26
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
25
27
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
26
28
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
27
29
|
#include "src/core/lib/channel/channel_args.h"
|
28
30
|
#include "src/core/lib/channel/channel_stack.h"
|
29
31
|
#include "src/core/lib/debug/trace.h"
|
30
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
31
32
|
#include "src/core/lib/gprpp/orphanable.h"
|
32
33
|
#include "src/core/lib/iomgr/call_combiner.h"
|
33
34
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -80,7 +81,7 @@ class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
|
80
81
|
void ResetBackoffLocked() override;
|
81
82
|
|
82
83
|
private:
|
83
|
-
using TraceStringVector = InlinedVector<char*, 3>;
|
84
|
+
using TraceStringVector = absl::InlinedVector<const char*, 3>;
|
84
85
|
|
85
86
|
class ResolverResultHandler;
|
86
87
|
class ResolvingControlHelper;
|
@@ -98,7 +99,7 @@ class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
|
98
99
|
void MaybeAddTraceMessagesForAddressChangesLocked(
|
99
100
|
bool resolution_contains_addresses, TraceStringVector* trace_strings);
|
100
101
|
void ConcatenateAndAddChannelTraceLocked(
|
101
|
-
TraceStringVector
|
102
|
+
const TraceStringVector& trace_strings) const;
|
102
103
|
void OnResolverResultChangedLocked(Resolver::Result result);
|
103
104
|
|
104
105
|
// Passed in from caller at construction time.
|
@@ -37,15 +37,12 @@ ServerAddress::ServerAddress(const void* address, size_t address_len,
|
|
37
37
|
address_.len = static_cast<socklen_t>(address_len);
|
38
38
|
}
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
bool ServerAddress::IsBalancer() const {
|
47
|
-
return grpc_channel_arg_get_bool(
|
48
|
-
grpc_channel_args_find(args_, GRPC_ARG_ADDRESS_IS_BALANCER), false);
|
40
|
+
int ServerAddress::Cmp(const ServerAddress& other) const {
|
41
|
+
if (address_.len > other.address_.len) return 1;
|
42
|
+
if (address_.len < other.address_.len) return -1;
|
43
|
+
int retval = memcmp(address_.addr, other.address_.addr, address_.len);
|
44
|
+
if (retval != 0) return retval;
|
45
|
+
return grpc_channel_args_compare(args_, other.args_);
|
49
46
|
}
|
50
47
|
|
51
48
|
} // namespace grpc_core
|
@@ -21,17 +21,11 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "absl/container/inlined_vector.h"
|
25
|
+
|
24
26
|
#include "src/core/lib/channel/channel_args.h"
|
25
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
26
27
|
#include "src/core/lib/iomgr/resolve_address.h"
|
27
28
|
|
28
|
-
// Channel arg key for a bool indicating whether an address is a grpclb
|
29
|
-
// load balancer (as opposed to a backend).
|
30
|
-
#define GRPC_ARG_ADDRESS_IS_BALANCER "grpc.address_is_balancer"
|
31
|
-
|
32
|
-
// Channel arg key for a string indicating an address's balancer name.
|
33
|
-
#define GRPC_ARG_ADDRESS_BALANCER_NAME "grpc.address_balancer_name"
|
34
|
-
|
35
29
|
namespace grpc_core {
|
36
30
|
|
37
31
|
//
|
@@ -73,13 +67,13 @@ class ServerAddress {
|
|
73
67
|
return *this;
|
74
68
|
}
|
75
69
|
|
76
|
-
bool operator==(const ServerAddress& other) const;
|
70
|
+
bool operator==(const ServerAddress& other) const { return Cmp(other) == 0; }
|
71
|
+
|
72
|
+
int Cmp(const ServerAddress& other) const;
|
77
73
|
|
78
74
|
const grpc_resolved_address& address() const { return address_; }
|
79
75
|
const grpc_channel_args* args() const { return args_; }
|
80
76
|
|
81
|
-
bool IsBalancer() const;
|
82
|
-
|
83
77
|
private:
|
84
78
|
grpc_resolved_address address_;
|
85
79
|
grpc_channel_args* args_;
|
@@ -89,7 +83,7 @@ class ServerAddress {
|
|
89
83
|
// ServerAddressList
|
90
84
|
//
|
91
85
|
|
92
|
-
typedef InlinedVector<ServerAddress, 1> ServerAddressList;
|
86
|
+
typedef absl::InlinedVector<ServerAddress, 1> ServerAddressList;
|
93
87
|
|
94
88
|
} // namespace grpc_core
|
95
89
|
|
@@ -18,30 +18,20 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
20
20
|
|
21
|
-
#include <string
|
21
|
+
#include <string>
|
22
|
+
|
23
|
+
#include "absl/strings/str_cat.h"
|
22
24
|
|
23
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
24
|
-
#include <grpc/support/alloc.h>
|
25
25
|
#include <grpc/support/log.h>
|
26
|
-
#include <grpc/support/string_util.h>
|
27
26
|
|
28
|
-
#include "src/core/
|
27
|
+
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
29
28
|
#include "src/core/lib/json/json.h"
|
30
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
31
29
|
#include "src/core/lib/slice/slice_internal.h"
|
32
|
-
#include "src/core/lib/slice/slice_string_helpers.h"
|
33
30
|
|
34
31
|
namespace grpc_core {
|
35
32
|
|
36
|
-
|
37
|
-
|
38
|
-
ServiceConfig::kNumPreallocatedParsers>
|
39
|
-
ServiceConfigParserList;
|
40
|
-
ServiceConfigParserList* g_registered_parsers;
|
41
|
-
} // namespace
|
42
|
-
|
43
|
-
RefCountedPtr<ServiceConfig> ServiceConfig::Create(StringView json_string,
|
44
|
-
grpc_error** error) {
|
33
|
+
RefCountedPtr<ServiceConfig> ServiceConfig::Create(
|
34
|
+
absl::string_view json_string, grpc_error** error) {
|
45
35
|
GPR_DEBUG_ASSERT(error != nullptr);
|
46
36
|
Json json = Json::Parse(json_string, error);
|
47
37
|
if (*error != GRPC_ERROR_NONE) return nullptr;
|
@@ -59,57 +49,40 @@ ServiceConfig::ServiceConfig(std::string json_string, Json json,
|
|
59
49
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON value is not an object");
|
60
50
|
return;
|
61
51
|
}
|
62
|
-
grpc_error
|
63
|
-
|
64
|
-
|
52
|
+
std::vector<grpc_error*> error_list;
|
53
|
+
grpc_error* global_error = GRPC_ERROR_NONE;
|
54
|
+
parsed_global_configs_ =
|
55
|
+
ServiceConfigParser::ParseGlobalParameters(json_, &global_error);
|
56
|
+
if (global_error != GRPC_ERROR_NONE) error_list.push_back(global_error);
|
65
57
|
grpc_error* local_error = ParsePerMethodParams();
|
66
|
-
if (
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
error_list[error_count++] = local_error;
|
71
|
-
}
|
72
|
-
if (error_count > 0) {
|
73
|
-
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
74
|
-
"Service config parsing error", error_list, error_count);
|
75
|
-
GRPC_ERROR_UNREF(global_error);
|
76
|
-
GRPC_ERROR_UNREF(local_error);
|
58
|
+
if (local_error != GRPC_ERROR_NONE) error_list.push_back(local_error);
|
59
|
+
if (!error_list.empty()) {
|
60
|
+
*error = GRPC_ERROR_CREATE_FROM_VECTOR("Service config parsing error",
|
61
|
+
&error_list);
|
77
62
|
}
|
78
63
|
}
|
79
64
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
grpc_error* parser_error = GRPC_ERROR_NONE;
|
84
|
-
auto parsed_obj =
|
85
|
-
(*g_registered_parsers)[i]->ParseGlobalParams(json_, &parser_error);
|
86
|
-
if (parser_error != GRPC_ERROR_NONE) {
|
87
|
-
error_list.push_back(parser_error);
|
88
|
-
}
|
89
|
-
parsed_global_configs_.push_back(std::move(parsed_obj));
|
65
|
+
ServiceConfig::~ServiceConfig() {
|
66
|
+
for (auto& p : parsed_method_configs_map_) {
|
67
|
+
grpc_slice_unref_internal(p.first);
|
90
68
|
}
|
91
|
-
return GRPC_ERROR_CREATE_FROM_VECTOR("Global Params", &error_list);
|
92
69
|
}
|
93
70
|
|
94
|
-
grpc_error* ServiceConfig::
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
}
|
107
|
-
objs_vector->push_back(std::move(parsed_obj));
|
108
|
-
}
|
109
|
-
parsed_method_config_vectors_storage_.push_back(std::move(objs_vector));
|
71
|
+
grpc_error* ServiceConfig::ParseJsonMethodConfig(const Json& json) {
|
72
|
+
std::vector<grpc_error*> error_list;
|
73
|
+
// Parse method config with each registered parser.
|
74
|
+
auto parsed_configs =
|
75
|
+
absl::make_unique<ServiceConfigParser::ParsedConfigVector>();
|
76
|
+
grpc_error* parser_error = GRPC_ERROR_NONE;
|
77
|
+
*parsed_configs =
|
78
|
+
ServiceConfigParser::ParsePerMethodParameters(json, &parser_error);
|
79
|
+
if (parser_error != GRPC_ERROR_NONE) {
|
80
|
+
error_list.push_back(parser_error);
|
81
|
+
}
|
82
|
+
parsed_method_config_vectors_storage_.push_back(std::move(parsed_configs));
|
110
83
|
const auto* vector_ptr = parsed_method_config_vectors_storage_.back().get();
|
111
|
-
//
|
112
|
-
|
84
|
+
// Add an entry for each path.
|
85
|
+
bool found_name = false;
|
113
86
|
auto it = json.object_value().find("name");
|
114
87
|
if (it != json.object_value().end()) {
|
115
88
|
if (it->second.type() != Json::Type::ARRAY) {
|
@@ -120,29 +93,42 @@ grpc_error* ServiceConfig::ParseJsonMethodConfigToServiceConfigVectorTable(
|
|
120
93
|
const Json::Array& name_array = it->second.array_value();
|
121
94
|
for (const Json& name : name_array) {
|
122
95
|
grpc_error* parse_error = GRPC_ERROR_NONE;
|
123
|
-
|
124
|
-
if (
|
96
|
+
std::string path = ParseJsonMethodName(name, &parse_error);
|
97
|
+
if (parse_error != GRPC_ERROR_NONE) {
|
125
98
|
error_list.push_back(parse_error);
|
126
99
|
} else {
|
127
|
-
|
128
|
-
|
100
|
+
found_name = true;
|
101
|
+
if (path.empty()) {
|
102
|
+
if (default_method_config_vector_ != nullptr) {
|
103
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
104
|
+
"field:name error:multiple default method configs"));
|
105
|
+
}
|
106
|
+
default_method_config_vector_ = vector_ptr;
|
107
|
+
} else {
|
108
|
+
grpc_slice key = grpc_slice_from_copied_string(path.c_str());
|
109
|
+
// If the key is not already present in the map, this will
|
110
|
+
// store a ref to the key in the map.
|
111
|
+
auto& value = parsed_method_configs_map_[key];
|
112
|
+
if (value != nullptr) {
|
113
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
114
|
+
"field:name error:multiple method configs with same name"));
|
115
|
+
// The map entry already existed, so we need to unref the
|
116
|
+
// key we just created.
|
117
|
+
grpc_slice_unref_internal(key);
|
118
|
+
} else {
|
119
|
+
value = vector_ptr;
|
120
|
+
}
|
121
|
+
}
|
129
122
|
}
|
130
123
|
}
|
131
124
|
}
|
132
|
-
if (
|
133
|
-
|
134
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("No names specified"));
|
135
|
-
}
|
136
|
-
// Add entry for each path.
|
137
|
-
for (size_t i = 0; i < paths.size(); ++i) {
|
138
|
-
entries->push_back(
|
139
|
-
{grpc_slice_from_copied_string(paths[i].get()), vector_ptr});
|
125
|
+
if (!found_name) {
|
126
|
+
parsed_method_config_vectors_storage_.pop_back();
|
140
127
|
}
|
141
128
|
return GRPC_ERROR_CREATE_FROM_VECTOR("methodConfig", &error_list);
|
142
129
|
}
|
143
130
|
|
144
131
|
grpc_error* ServiceConfig::ParsePerMethodParams() {
|
145
|
-
InlinedVector<SliceHashTable<const ParsedConfigVector*>::Entry, 10> entries;
|
146
132
|
std::vector<grpc_error*> error_list;
|
147
133
|
auto it = json_.object_value().find("methodConfig");
|
148
134
|
if (it != json_.object_value().end()) {
|
@@ -156,106 +142,80 @@ grpc_error* ServiceConfig::ParsePerMethodParams() {
|
|
156
142
|
"field:methodConfig error:not of type Object"));
|
157
143
|
continue;
|
158
144
|
}
|
159
|
-
grpc_error* error =
|
160
|
-
method_config, &entries);
|
145
|
+
grpc_error* error = ParseJsonMethodConfig(method_config);
|
161
146
|
if (error != GRPC_ERROR_NONE) {
|
162
147
|
error_list.push_back(error);
|
163
148
|
}
|
164
149
|
}
|
165
150
|
}
|
166
|
-
if (!entries.empty()) {
|
167
|
-
parsed_method_configs_table_ =
|
168
|
-
SliceHashTable<const ParsedConfigVector*>::Create(
|
169
|
-
entries.size(), entries.data(), nullptr);
|
170
|
-
}
|
171
151
|
return GRPC_ERROR_CREATE_FROM_VECTOR("Method Params", &error_list);
|
172
152
|
}
|
173
153
|
|
174
|
-
|
175
|
-
|
154
|
+
std::string ServiceConfig::ParseJsonMethodName(const Json& json,
|
155
|
+
grpc_error** error) {
|
176
156
|
if (json.type() != Json::Type::OBJECT) {
|
177
157
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
178
158
|
"field:name error:type is not object");
|
179
|
-
return
|
159
|
+
return "";
|
180
160
|
}
|
181
161
|
// Find service name.
|
162
|
+
const std::string* service_name = nullptr;
|
182
163
|
auto it = json.object_value().find("service");
|
183
|
-
if (it
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
if (it->second.string_value().empty()) {
|
194
|
-
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
195
|
-
"field:name error: field:service error:empty value");
|
196
|
-
return nullptr;
|
164
|
+
if (it != json.object_value().end() &&
|
165
|
+
it->second.type() != Json::Type::JSON_NULL) {
|
166
|
+
if (it->second.type() != Json::Type::STRING) {
|
167
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
168
|
+
"field:name error: field:service error:not of type string");
|
169
|
+
return "";
|
170
|
+
}
|
171
|
+
if (!it->second.string_value().empty()) {
|
172
|
+
service_name = &it->second.string_value();
|
173
|
+
}
|
197
174
|
}
|
198
|
-
const
|
199
|
-
const char* method_name = nullptr;
|
175
|
+
const std::string* method_name = nullptr;
|
200
176
|
// Find method name.
|
201
177
|
it = json.object_value().find("method");
|
202
|
-
if (it != json.object_value().end()
|
178
|
+
if (it != json.object_value().end() &&
|
179
|
+
it->second.type() != Json::Type::JSON_NULL) {
|
203
180
|
if (it->second.type() != Json::Type::STRING) {
|
204
181
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
205
182
|
"field:name error: field:method error:not of type string");
|
206
|
-
return
|
183
|
+
return "";
|
207
184
|
}
|
208
|
-
if (it->second.string_value().empty()) {
|
185
|
+
if (!it->second.string_value().empty()) {
|
186
|
+
method_name = &it->second.string_value();
|
187
|
+
}
|
188
|
+
}
|
189
|
+
// If neither service nor method are specified, it's the default.
|
190
|
+
// Method name may not be specified without service name.
|
191
|
+
if (service_name == nullptr) {
|
192
|
+
if (method_name != nullptr) {
|
209
193
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
210
|
-
"field:name error:
|
211
|
-
return nullptr;
|
194
|
+
"field:name error:method name populated without service name");
|
212
195
|
}
|
213
|
-
|
196
|
+
return "";
|
214
197
|
}
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
return grpc_core::UniquePtr<char>(path);
|
198
|
+
// Construct path.
|
199
|
+
return absl::StrCat("/", *service_name, "/",
|
200
|
+
method_name == nullptr ? "" : *method_name);
|
219
201
|
}
|
220
202
|
|
221
|
-
const
|
222
|
-
ServiceConfig::GetMethodParsedConfigVector(const grpc_slice& path) {
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
const auto* value = parsed_method_configs_table_->Get(path);
|
203
|
+
const ServiceConfigParser::ParsedConfigVector*
|
204
|
+
ServiceConfig::GetMethodParsedConfigVector(const grpc_slice& path) const {
|
205
|
+
// Try looking up the full path in the map.
|
206
|
+
auto it = parsed_method_configs_map_.find(path);
|
207
|
+
if (it != parsed_method_configs_map_.end()) return it->second;
|
227
208
|
// If we didn't find a match for the path, try looking for a wildcard
|
228
209
|
// entry (i.e., change "/service/method" to "/service/").
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
value = parsed_method_configs_table_->Get(wildcard_path);
|
239
|
-
grpc_slice_unref_internal(wildcard_path);
|
240
|
-
gpr_free(path_str);
|
241
|
-
if (value == nullptr) return nullptr;
|
242
|
-
}
|
243
|
-
return *value;
|
244
|
-
}
|
245
|
-
|
246
|
-
size_t ServiceConfig::RegisterParser(std::unique_ptr<Parser> parser) {
|
247
|
-
g_registered_parsers->push_back(std::move(parser));
|
248
|
-
return g_registered_parsers->size() - 1;
|
249
|
-
}
|
250
|
-
|
251
|
-
void ServiceConfig::Init() {
|
252
|
-
GPR_ASSERT(g_registered_parsers == nullptr);
|
253
|
-
g_registered_parsers = new ServiceConfigParserList();
|
254
|
-
}
|
255
|
-
|
256
|
-
void ServiceConfig::Shutdown() {
|
257
|
-
delete g_registered_parsers;
|
258
|
-
g_registered_parsers = nullptr;
|
210
|
+
UniquePtr<char> path_str(grpc_slice_to_c_string(path));
|
211
|
+
char* sep = strrchr(path_str.get(), '/') + 1;
|
212
|
+
if (sep == nullptr) return nullptr; // Shouldn't ever happen.
|
213
|
+
*sep = '\0';
|
214
|
+
grpc_slice wildcard_path = grpc_slice_from_static_string(path_str.get());
|
215
|
+
it = parsed_method_configs_map_.find(wildcard_path);
|
216
|
+
if (it != parsed_method_configs_map_.end()) return it->second;
|
217
|
+
// Try default method config, if set.
|
218
|
+
return default_method_config_vector_;
|
259
219
|
}
|
260
220
|
|
261
221
|
} // namespace grpc_core
|
@@ -19,15 +19,19 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <unordered_map>
|
23
|
+
|
24
|
+
#include "absl/container/inlined_vector.h"
|
25
|
+
|
22
26
|
#include <grpc/impl/codegen/grpc_types.h>
|
23
27
|
#include <grpc/support/string_util.h>
|
24
28
|
|
25
|
-
#include "src/core/
|
29
|
+
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
26
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
27
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
28
32
|
#include "src/core/lib/iomgr/error.h"
|
29
33
|
#include "src/core/lib/json/json.h"
|
30
|
-
#include "src/core/lib/slice/
|
34
|
+
#include "src/core/lib/slice/slice_internal.h"
|
31
35
|
|
32
36
|
// The main purpose of the code here is to parse the service config in
|
33
37
|
// JSON form, which will look like this:
|
@@ -55,87 +59,24 @@
|
|
55
59
|
|
56
60
|
namespace grpc_core {
|
57
61
|
|
62
|
+
// TODO(roth): Consider stripping this down further to the completely minimal
|
63
|
+
// interface requied to be exposed as part of the resolver API.
|
58
64
|
class ServiceConfig : public RefCounted<ServiceConfig> {
|
59
65
|
public:
|
60
|
-
/// This is the base class that all service config parsers MUST use to store
|
61
|
-
/// parsed service config data.
|
62
|
-
class ParsedConfig {
|
63
|
-
public:
|
64
|
-
virtual ~ParsedConfig() = default;
|
65
|
-
};
|
66
|
-
|
67
|
-
/// This is the base class that all service config parsers should derive from.
|
68
|
-
class Parser {
|
69
|
-
public:
|
70
|
-
virtual ~Parser() = default;
|
71
|
-
|
72
|
-
virtual std::unique_ptr<ParsedConfig> ParseGlobalParams(
|
73
|
-
const Json& /* json */, grpc_error** error) {
|
74
|
-
// Avoid unused parameter warning on debug-only parameter
|
75
|
-
(void)error;
|
76
|
-
GPR_DEBUG_ASSERT(error != nullptr);
|
77
|
-
return nullptr;
|
78
|
-
}
|
79
|
-
|
80
|
-
virtual std::unique_ptr<ParsedConfig> ParsePerMethodParams(
|
81
|
-
const Json& /* json */, grpc_error** error) {
|
82
|
-
// Avoid unused parameter warning on debug-only parameter
|
83
|
-
(void)error;
|
84
|
-
GPR_DEBUG_ASSERT(error != nullptr);
|
85
|
-
return nullptr;
|
86
|
-
}
|
87
|
-
};
|
88
|
-
|
89
|
-
static constexpr int kNumPreallocatedParsers = 4;
|
90
|
-
typedef InlinedVector<std::unique_ptr<ParsedConfig>, kNumPreallocatedParsers>
|
91
|
-
ParsedConfigVector;
|
92
|
-
|
93
|
-
/// When a service config is applied to a call in the client_channel_filter,
|
94
|
-
/// we create an instance of this object and store it in the call_data for
|
95
|
-
/// client_channel. A pointer to this object is also stored in the
|
96
|
-
/// call_context, so that future filters can easily access method and global
|
97
|
-
/// parameters for the call.
|
98
|
-
class CallData {
|
99
|
-
public:
|
100
|
-
CallData() = default;
|
101
|
-
CallData(RefCountedPtr<ServiceConfig> svc_cfg, const grpc_slice& path)
|
102
|
-
: service_config_(std::move(svc_cfg)) {
|
103
|
-
if (service_config_ != nullptr) {
|
104
|
-
method_params_vector_ =
|
105
|
-
service_config_->GetMethodParsedConfigVector(path);
|
106
|
-
}
|
107
|
-
}
|
108
|
-
|
109
|
-
ServiceConfig* service_config() { return service_config_.get(); }
|
110
|
-
|
111
|
-
ParsedConfig* GetMethodParsedConfig(size_t index) const {
|
112
|
-
return method_params_vector_ != nullptr
|
113
|
-
? (*method_params_vector_)[index].get()
|
114
|
-
: nullptr;
|
115
|
-
}
|
116
|
-
|
117
|
-
ParsedConfig* GetGlobalParsedConfig(size_t index) const {
|
118
|
-
return service_config_->GetGlobalParsedConfig(index);
|
119
|
-
}
|
120
|
-
|
121
|
-
private:
|
122
|
-
RefCountedPtr<ServiceConfig> service_config_;
|
123
|
-
const ParsedConfigVector* method_params_vector_ = nullptr;
|
124
|
-
};
|
125
|
-
|
126
66
|
/// Creates a new service config from parsing \a json_string.
|
127
67
|
/// Returns null on parse error.
|
128
|
-
static RefCountedPtr<ServiceConfig> Create(
|
68
|
+
static RefCountedPtr<ServiceConfig> Create(absl::string_view json_string,
|
129
69
|
grpc_error** error);
|
130
70
|
|
131
71
|
ServiceConfig(std::string json_string, Json json, grpc_error** error);
|
72
|
+
~ServiceConfig();
|
132
73
|
|
133
74
|
const std::string& json_string() const { return json_string_; }
|
134
75
|
|
135
76
|
/// Retrieves the global parsed config at index \a index. The
|
136
77
|
/// lifetime of the returned object is tied to the lifetime of the
|
137
78
|
/// ServiceConfig object.
|
138
|
-
ParsedConfig* GetGlobalParsedConfig(size_t index) {
|
79
|
+
ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(size_t index) {
|
139
80
|
GPR_DEBUG_ASSERT(index < parsed_global_configs_.size());
|
140
81
|
return parsed_global_configs_[index].get();
|
141
82
|
}
|
@@ -143,48 +84,37 @@ class ServiceConfig : public RefCounted
|
|
143
84
|
/// Retrieves the vector of parsed configs for the method identified
|
144
85
|
/// by \a path. The lifetime of the returned vector and contained objects
|
145
86
|
/// is tied to the lifetime of the ServiceConfig object.
|
146
|
-
const ParsedConfigVector* GetMethodParsedConfigVector(
|
147
|
-
|
148
|
-
/// Globally register a service config parser. On successful registration, it
|
149
|
-
/// returns the index at which the parser was registered. On failure, -1 is
|
150
|
-
/// returned. Each new service config update will go through all the
|
151
|
-
/// registered parser. Each parser is responsible for reading the service
|
152
|
-
/// config json and returning a parsed config. This parsed config can later be
|
153
|
-
/// retrieved using the same index that was returned at registration time.
|
154
|
-
static size_t RegisterParser(std::unique_ptr<Parser> parser);
|
155
|
-
|
156
|
-
static void Init();
|
157
|
-
|
158
|
-
static void Shutdown();
|
87
|
+
const ServiceConfigParser::ParsedConfigVector* GetMethodParsedConfigVector(
|
88
|
+
const grpc_slice& path) const;
|
159
89
|
|
160
90
|
private:
|
161
|
-
// Helper functions
|
162
|
-
grpc_error* ParseGlobalParams();
|
91
|
+
// Helper functions for parsing the method configs.
|
163
92
|
grpc_error* ParsePerMethodParams();
|
93
|
+
grpc_error* ParseJsonMethodConfig(const Json& json);
|
164
94
|
|
165
|
-
// Returns a path string for the JSON name object specified by
|
166
|
-
//
|
167
|
-
static
|
168
|
-
grpc_error** error);
|
169
|
-
|
170
|
-
grpc_error* ParseJsonMethodConfigToServiceConfigVectorTable(
|
171
|
-
const Json& json,
|
172
|
-
InlinedVector<SliceHashTable<const ParsedConfigVector*>::Entry, 10>*
|
173
|
-
entries);
|
95
|
+
// Returns a path string for the JSON name object specified by json.
|
96
|
+
// Sets *error on error.
|
97
|
+
static std::string ParseJsonMethodName(const Json& json, grpc_error** error);
|
174
98
|
|
175
99
|
std::string json_string_;
|
176
100
|
Json json_;
|
177
101
|
|
178
|
-
InlinedVector<std::unique_ptr<ParsedConfig>,
|
102
|
+
absl::InlinedVector<std::unique_ptr<ServiceConfigParser::ParsedConfig>,
|
103
|
+
ServiceConfigParser::kNumPreallocatedParsers>
|
179
104
|
parsed_global_configs_;
|
180
105
|
// A map from the method name to the parsed config vector. Note that we are
|
181
106
|
// using a raw pointer and not a unique pointer so that we can use the same
|
182
107
|
// vector for multiple names.
|
183
|
-
|
184
|
-
|
108
|
+
std::unordered_map<grpc_slice, const ServiceConfigParser::ParsedConfigVector*,
|
109
|
+
SliceHash>
|
110
|
+
parsed_method_configs_map_;
|
111
|
+
// Default method config.
|
112
|
+
const ServiceConfigParser::ParsedConfigVector* default_method_config_vector_ =
|
113
|
+
nullptr;
|
185
114
|
// Storage for all the vectors that are being used in
|
186
115
|
// parsed_method_configs_table_.
|
187
|
-
InlinedVector<std::unique_ptr<ParsedConfigVector>,
|
116
|
+
absl::InlinedVector<std::unique_ptr<ServiceConfigParser::ParsedConfigVector>,
|
117
|
+
32>
|
188
118
|
parsed_method_config_vectors_storage_;
|
189
119
|
};
|
190
120
|
|