grpc 1.35.0.pre1 → 1.37.1
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 +121 -89
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/impl/codegen/port_platform.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +359 -331
- data/src/core/ext/filters/client_channel/client_channel.h +0 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -4
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -25
- 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 +232 -110
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +1 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
- 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_ev_driver_windows.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +34 -50
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +307 -155
- data/src/core/ext/filters/client_channel/server_address.cc +9 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +69 -146
- data/src/core/ext/filters/client_channel/subchannel.h +63 -95
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +500 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +490 -178
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +39 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +5 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- 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 +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +8 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +2149 -666
- data/src/core/ext/xds/xds_api.h +321 -119
- data/src/core/ext/xds/xds_bootstrap.cc +80 -45
- data/src/core/ext/xds/xds_bootstrap.h +17 -5
- data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
- data/src/core/ext/xds/xds_certificate_provider.h +83 -44
- data/src/core/ext/xds/xds_client.cc +181 -34
- data/src/core/ext/xds/xds_client.h +29 -0
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +425 -24
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +7 -0
- data/src/core/lib/channel/channelz.cc +92 -4
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/handshaker.cc +2 -44
- data/src/core/lib/channel/handshaker.h +1 -18
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli_security_connector.cc +2 -2
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -2
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +11 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.cc +6 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
- data/src/core/lib/iomgr/resource_quota.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.cc +121 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +25 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +5 -8
- data/src/core/lib/iomgr/tcp_uv.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.h +2 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +9 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +32 -14
- data/src/core/lib/security/transport/security_handshaker.cc +33 -5
- data/src/core/lib/security/transport/server_auth_filter.cc +7 -0
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +38 -19
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +43 -36
- data/src/core/lib/surface/server.h +76 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +27 -0
- data/src/core/lib/transport/metadata_batch.h +14 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +18 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +0 -3
- data/src/core/tsi/ssl_transport_security.h +0 -3
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +715 -713
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -29
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +67 -33
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -99
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +362 -50
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +140 -84
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -23,9 +23,12 @@
|
|
23
23
|
|
24
24
|
#include <stdbool.h>
|
25
25
|
|
26
|
+
#include "absl/types/optional.h"
|
27
|
+
|
26
28
|
#include <grpc/grpc.h>
|
27
29
|
#include <grpc/slice.h>
|
28
30
|
#include <grpc/support/time.h>
|
31
|
+
|
29
32
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
30
33
|
#include "src/core/lib/transport/metadata.h"
|
31
34
|
#include "src/core/lib/transport/static_metadata.h"
|
@@ -78,6 +81,17 @@ grpc_error* grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
|
|
78
81
|
void grpc_metadata_batch_set_value(grpc_linked_mdelem* storage,
|
79
82
|
const grpc_slice& value);
|
80
83
|
|
84
|
+
/** Returns metadata value(s) for the specified key.
|
85
|
+
If the key is not present in the batch, returns absl::nullopt.
|
86
|
+
If the key is present exactly once in the batch, returns a string_view of
|
87
|
+
that value.
|
88
|
+
If the key is present more than once in the batch, constructs a
|
89
|
+
comma-concatenated string of all values in concatenated_value and returns a
|
90
|
+
string_view of that string. */
|
91
|
+
absl::optional<absl::string_view> grpc_metadata_batch_get_value(
|
92
|
+
grpc_metadata_batch* batch, absl::string_view target_key,
|
93
|
+
std::string* concatenated_value);
|
94
|
+
|
81
95
|
/** Add \a storage to the beginning of \a batch. storage->md is
|
82
96
|
assumed to be valid.
|
83
97
|
\a storage is owned by the caller and must survive for the
|
@@ -60,6 +60,10 @@ void grpc_client_authority_filter_init(void);
|
|
60
60
|
void grpc_client_authority_filter_shutdown(void);
|
61
61
|
void grpc_workaround_cronet_compression_filter_init(void);
|
62
62
|
void grpc_workaround_cronet_compression_filter_shutdown(void);
|
63
|
+
namespace grpc_core {
|
64
|
+
void FaultInjectionFilterInit(void);
|
65
|
+
void FaultInjectionFilterShutdown(void);
|
66
|
+
} // namespace grpc_core
|
63
67
|
|
64
68
|
#ifndef GRPC_NO_XDS
|
65
69
|
namespace grpc_core {
|
@@ -82,6 +86,10 @@ void grpc_lb_policy_xds_cluster_manager_init(void);
|
|
82
86
|
void grpc_lb_policy_xds_cluster_manager_shutdown(void);
|
83
87
|
void grpc_resolver_xds_init(void);
|
84
88
|
void grpc_resolver_xds_shutdown(void);
|
89
|
+
namespace grpc_core {
|
90
|
+
void GoogleCloud2ProdResolverInit();
|
91
|
+
void GoogleCloud2ProdResolverShutdown();
|
92
|
+
}
|
85
93
|
#endif
|
86
94
|
|
87
95
|
void grpc_register_built_in_plugins(void) {
|
@@ -119,6 +127,8 @@ void grpc_register_built_in_plugins(void) {
|
|
119
127
|
grpc_max_age_filter_shutdown);
|
120
128
|
grpc_register_plugin(grpc_message_size_filter_init,
|
121
129
|
grpc_message_size_filter_shutdown);
|
130
|
+
grpc_register_plugin(grpc_core::FaultInjectionFilterInit,
|
131
|
+
grpc_core::FaultInjectionFilterShutdown);
|
122
132
|
grpc_register_plugin(grpc_service_config_channel_arg_filter_init,
|
123
133
|
grpc_service_config_channel_arg_filter_shutdown);
|
124
134
|
grpc_register_plugin(grpc_client_authority_filter_init,
|
@@ -142,5 +152,7 @@ void grpc_register_built_in_plugins(void) {
|
|
142
152
|
grpc_lb_policy_xds_cluster_manager_shutdown);
|
143
153
|
grpc_register_plugin(grpc_resolver_xds_init,
|
144
154
|
grpc_resolver_xds_shutdown);
|
155
|
+
grpc_register_plugin(grpc_core::GoogleCloud2ProdResolverInit,
|
156
|
+
grpc_core::GoogleCloud2ProdResolverShutdown);
|
145
157
|
#endif
|
146
158
|
}
|
@@ -69,9 +69,9 @@ typedef struct alts_grpc_handshaker_client {
|
|
69
69
|
grpc_closure on_handshaker_service_resp_recv;
|
70
70
|
/* Buffers containing information to be sent (or received) to (or from) the
|
71
71
|
* handshaker service. */
|
72
|
-
grpc_byte_buffer* send_buffer;
|
73
|
-
grpc_byte_buffer* recv_buffer;
|
74
|
-
grpc_status_code status;
|
72
|
+
grpc_byte_buffer* send_buffer = nullptr;
|
73
|
+
grpc_byte_buffer* recv_buffer = nullptr;
|
74
|
+
grpc_status_code status = GRPC_STATUS_OK;
|
75
75
|
/* Initial metadata to be received from handshaker service. */
|
76
76
|
grpc_metadata_array recv_initial_metadata;
|
77
77
|
/* A callback function provided by an application to be invoked when response
|
@@ -95,15 +95,15 @@ typedef struct alts_grpc_handshaker_client {
|
|
95
95
|
/** callback for receiving handshake call status */
|
96
96
|
grpc_closure on_status_received;
|
97
97
|
/** gRPC status code of handshake call */
|
98
|
-
grpc_status_code handshake_status_code;
|
98
|
+
grpc_status_code handshake_status_code = GRPC_STATUS_OK;
|
99
99
|
/** gRPC status details of handshake call */
|
100
100
|
grpc_slice handshake_status_details;
|
101
101
|
/* mu synchronizes all fields below including their internal fields. */
|
102
|
-
|
102
|
+
grpc_core::Mutex mu;
|
103
103
|
/* indicates if the handshaker call's RECV_STATUS_ON_CLIENT op is done. */
|
104
|
-
bool receive_status_finished;
|
104
|
+
bool receive_status_finished = false;
|
105
105
|
/* if non-null, contains arguments to complete a TSI next callback. */
|
106
|
-
recv_message_result* pending_recv_message_result;
|
106
|
+
recv_message_result* pending_recv_message_result = nullptr;
|
107
107
|
/* Maximum frame size used by frame protector. */
|
108
108
|
size_t max_frame_size;
|
109
109
|
} alts_grpc_handshaker_client;
|
@@ -117,10 +117,7 @@ static void handshaker_client_send_buffer_destroy(
|
|
117
117
|
|
118
118
|
static bool is_handshake_finished_properly(grpc_gcp_HandshakerResp* resp) {
|
119
119
|
GPR_ASSERT(resp != nullptr);
|
120
|
-
|
121
|
-
return true;
|
122
|
-
}
|
123
|
-
return false;
|
120
|
+
return grpc_gcp_HandshakerResp_result(resp) != nullptr;
|
124
121
|
}
|
125
122
|
|
126
123
|
static void alts_grpc_handshaker_client_unref(
|
@@ -140,8 +137,7 @@ static void alts_grpc_handshaker_client_unref(
|
|
140
137
|
grpc_alts_credentials_options_destroy(client->options);
|
141
138
|
gpr_free(client->buffer);
|
142
139
|
grpc_slice_unref_internal(client->handshake_status_details);
|
143
|
-
|
144
|
-
gpr_free(client);
|
140
|
+
delete client;
|
145
141
|
}
|
146
142
|
}
|
147
143
|
|
@@ -695,24 +691,24 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
|
|
695
691
|
gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()");
|
696
692
|
return nullptr;
|
697
693
|
}
|
698
|
-
alts_grpc_handshaker_client* client =
|
699
|
-
|
700
|
-
|
694
|
+
alts_grpc_handshaker_client* client = new alts_grpc_handshaker_client();
|
695
|
+
memset(&client->base, 0, sizeof(client->base));
|
696
|
+
client->base.vtable =
|
697
|
+
vtable_for_testing == nullptr ? &vtable : vtable_for_testing;
|
701
698
|
gpr_ref_init(&client->refs, 1);
|
702
|
-
client->grpc_caller = grpc_call_start_batch_and_execute;
|
703
699
|
client->handshaker = handshaker;
|
700
|
+
client->grpc_caller = grpc_call_start_batch_and_execute;
|
701
|
+
grpc_metadata_array_init(&client->recv_initial_metadata);
|
704
702
|
client->cb = cb;
|
705
703
|
client->user_data = user_data;
|
706
|
-
client->send_buffer = nullptr;
|
707
|
-
client->recv_buffer = nullptr;
|
708
704
|
client->options = grpc_alts_credentials_options_copy(options);
|
709
705
|
client->target_name = grpc_slice_copy(target_name);
|
710
|
-
client->recv_bytes = grpc_empty_slice();
|
711
|
-
grpc_metadata_array_init(&client->recv_initial_metadata);
|
712
706
|
client->is_client = is_client;
|
713
|
-
client->
|
707
|
+
client->recv_bytes = grpc_empty_slice();
|
714
708
|
client->buffer_size = TSI_ALTS_INITIAL_BUFFER_SIZE;
|
715
709
|
client->buffer = static_cast<unsigned char*>(gpr_zalloc(client->buffer_size));
|
710
|
+
client->handshake_status_details = grpc_empty_slice();
|
711
|
+
client->max_frame_size = max_frame_size;
|
716
712
|
grpc_slice slice = grpc_slice_from_copied_string(handshaker_service_url);
|
717
713
|
client->call =
|
718
714
|
strcmp(handshaker_service_url, ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING) ==
|
@@ -722,8 +718,6 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
|
|
722
718
|
channel, nullptr, GRPC_PROPAGATE_DEFAULTS, interested_parties,
|
723
719
|
grpc_slice_from_static_string(ALTS_SERVICE_METHOD), &slice,
|
724
720
|
GRPC_MILLIS_INF_FUTURE, nullptr);
|
725
|
-
client->base.vtable =
|
726
|
-
vtable_for_testing == nullptr ? &vtable : vtable_for_testing;
|
727
721
|
GRPC_CLOSURE_INIT(&client->on_handshaker_service_resp_recv, grpc_cb, client,
|
728
722
|
grpc_schedule_on_exec_ctx);
|
729
723
|
GRPC_CLOSURE_INIT(&client->on_status_received, on_status_received, client,
|
@@ -48,23 +48,23 @@ struct alts_tsi_handshaker {
|
|
48
48
|
tsi_handshaker base;
|
49
49
|
grpc_slice target_name;
|
50
50
|
bool is_client;
|
51
|
-
bool has_sent_start_message;
|
52
|
-
bool has_created_handshaker_client;
|
51
|
+
bool has_sent_start_message = false;
|
52
|
+
bool has_created_handshaker_client = false;
|
53
53
|
char* handshaker_service_url;
|
54
54
|
grpc_pollset_set* interested_parties;
|
55
55
|
grpc_alts_credentials_options* options;
|
56
|
-
alts_handshaker_client_vtable* client_vtable_for_testing;
|
57
|
-
grpc_channel* channel;
|
56
|
+
alts_handshaker_client_vtable* client_vtable_for_testing = nullptr;
|
57
|
+
grpc_channel* channel = nullptr;
|
58
58
|
bool use_dedicated_cq;
|
59
59
|
// mu synchronizes all fields below. Note these are the
|
60
60
|
// only fields that can be concurrently accessed (due to
|
61
61
|
// potential concurrency of tsi_handshaker_shutdown and
|
62
62
|
// tsi_handshaker_next).
|
63
|
-
|
64
|
-
alts_handshaker_client* client;
|
63
|
+
grpc_core::Mutex mu;
|
64
|
+
alts_handshaker_client* client = nullptr;
|
65
65
|
// shutdown effectively follows base.handshake_shutdown,
|
66
66
|
// but is synchronized by the mutex of this object.
|
67
|
-
bool shutdown;
|
67
|
+
bool shutdown = false;
|
68
68
|
// Maximum frame size used by frame protector.
|
69
69
|
size_t max_frame_size;
|
70
70
|
};
|
@@ -592,8 +592,7 @@ static void handshaker_destroy(tsi_handshaker* self) {
|
|
592
592
|
grpc_channel_destroy_internal(handshaker->channel);
|
593
593
|
}
|
594
594
|
gpr_free(handshaker->handshaker_service_url);
|
595
|
-
|
596
|
-
gpr_free(handshaker);
|
595
|
+
delete handshaker;
|
597
596
|
}
|
598
597
|
|
599
598
|
static const tsi_handshaker_vtable handshaker_vtable = {
|
@@ -628,26 +627,22 @@ tsi_result alts_tsi_handshaker_create(
|
|
628
627
|
gpr_log(GPR_ERROR, "Invalid arguments to alts_tsi_handshaker_create()");
|
629
628
|
return TSI_INVALID_ARGUMENT;
|
630
629
|
}
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
handshaker->
|
635
|
-
|
636
|
-
handshaker->is_client = is_client;
|
637
|
-
handshaker->has_sent_start_message = false;
|
630
|
+
bool use_dedicated_cq = interested_parties == nullptr;
|
631
|
+
alts_tsi_handshaker* handshaker = new alts_tsi_handshaker();
|
632
|
+
memset(&handshaker->base, 0, sizeof(handshaker->base));
|
633
|
+
handshaker->base.vtable =
|
634
|
+
use_dedicated_cq ? &handshaker_vtable_dedicated : &handshaker_vtable;
|
638
635
|
handshaker->target_name = target_name == nullptr
|
639
636
|
? grpc_empty_slice()
|
640
637
|
: grpc_slice_from_static_string(target_name);
|
641
|
-
handshaker->
|
642
|
-
handshaker->has_created_handshaker_client = false;
|
638
|
+
handshaker->is_client = is_client;
|
643
639
|
handshaker->handshaker_service_url = gpr_strdup(handshaker_service_url);
|
640
|
+
handshaker->interested_parties = interested_parties;
|
644
641
|
handshaker->options = grpc_alts_credentials_options_copy(options);
|
642
|
+
handshaker->use_dedicated_cq = use_dedicated_cq;
|
645
643
|
handshaker->max_frame_size = user_specified_max_frame_size != 0
|
646
644
|
? user_specified_max_frame_size
|
647
645
|
: kTsiAltsMaxFrameSize;
|
648
|
-
handshaker->base.vtable = handshaker->use_dedicated_cq
|
649
|
-
? &handshaker_vtable_dedicated
|
650
|
-
: &handshaker_vtable;
|
651
646
|
*self = &handshaker->base;
|
652
647
|
return TSI_OK;
|
653
648
|
}
|
@@ -41,7 +41,7 @@ const size_t kTsiAltsNumOfPeerProperties = 5;
|
|
41
41
|
// Frame size negotiation extends send frame size range to
|
42
42
|
// [kTsiAltsMinFrameSize, kTsiAltsMaxFrameSize].
|
43
43
|
const size_t kTsiAltsMinFrameSize = 16 * 1024;
|
44
|
-
const size_t kTsiAltsMaxFrameSize =
|
44
|
+
const size_t kTsiAltsMaxFrameSize = 1024 * 1024;
|
45
45
|
|
46
46
|
typedef struct alts_tsi_handshaker alts_tsi_handshaker;
|
47
47
|
|
@@ -214,9 +214,7 @@ bool grpc_gcp_rpc_protocol_versions_check(
|
|
214
214
|
? &local_versions->min_rpc_version
|
215
215
|
: &peer_versions->min_rpc_version;
|
216
216
|
bool result = grpc_core::internal::grpc_gcp_rpc_protocol_version_compare(
|
217
|
-
max_common_version, min_common_version) >= 0
|
218
|
-
? true
|
219
|
-
: false;
|
217
|
+
max_common_version, min_common_version) >= 0;
|
220
218
|
if (result && highest_common_version != nullptr) {
|
221
219
|
memcpy(highest_common_version, max_common_version,
|
222
220
|
sizeof(grpc_gcp_rpc_protocol_versions_version));
|
@@ -474,12 +474,21 @@ static void fake_zero_copy_grpc_protector_destroy(
|
|
474
474
|
gpr_free(impl);
|
475
475
|
}
|
476
476
|
|
477
|
+
static tsi_result fake_zero_copy_grpc_protector_max_frame_size(
|
478
|
+
tsi_zero_copy_grpc_protector* self, size_t* max_frame_size) {
|
479
|
+
if (self == nullptr || max_frame_size == nullptr) return TSI_INVALID_ARGUMENT;
|
480
|
+
tsi_fake_zero_copy_grpc_protector* impl =
|
481
|
+
reinterpret_cast<tsi_fake_zero_copy_grpc_protector*>(self);
|
482
|
+
*max_frame_size = impl->max_frame_size;
|
483
|
+
return TSI_OK;
|
484
|
+
}
|
485
|
+
|
477
486
|
static const tsi_zero_copy_grpc_protector_vtable
|
478
487
|
zero_copy_grpc_protector_vtable = {
|
479
488
|
fake_zero_copy_grpc_protector_protect,
|
480
489
|
fake_zero_copy_grpc_protector_unprotect,
|
481
490
|
fake_zero_copy_grpc_protector_destroy,
|
482
|
-
|
491
|
+
fake_zero_copy_grpc_protector_max_frame_size,
|
483
492
|
};
|
484
493
|
|
485
494
|
/* --- tsi_handshaker_result methods implementation. ---*/
|
@@ -490,7 +499,7 @@ struct fake_handshaker_result {
|
|
490
499
|
size_t unused_bytes_size;
|
491
500
|
};
|
492
501
|
static tsi_result fake_handshaker_result_extract_peer(
|
493
|
-
const tsi_handshaker_result* self
|
502
|
+
const tsi_handshaker_result* /*self*/, tsi_peer* peer) {
|
494
503
|
/* Construct a tsi_peer with 1 property: certificate type, security_level. */
|
495
504
|
tsi_result result = tsi_construct_peer(2, peer);
|
496
505
|
if (result != TSI_OK) return result;
|
@@ -23,12 +23,9 @@
|
|
23
23
|
|
24
24
|
#include <grpc/slice.h>
|
25
25
|
|
26
|
-
#pragma clang diagnostic push
|
27
|
-
#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
|
28
26
|
extern "C" {
|
29
27
|
#include <openssl/ssl.h>
|
30
28
|
}
|
31
|
-
#pragma clang diagnostic pop
|
32
29
|
|
33
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
34
31
|
|
@@ -84,7 +84,6 @@ class SslSessionLRUCache::Node {
|
|
84
84
|
|
85
85
|
SslSessionLRUCache::SslSessionLRUCache(size_t capacity) : capacity_(capacity) {
|
86
86
|
GPR_ASSERT(capacity > 0);
|
87
|
-
gpr_mu_init(&lock_);
|
88
87
|
entry_by_key_ = grpc_avl_create(&cache_avl_vtable);
|
89
88
|
}
|
90
89
|
|
@@ -96,7 +95,6 @@ SslSessionLRUCache::~SslSessionLRUCache() {
|
|
96
95
|
node = next;
|
97
96
|
}
|
98
97
|
grpc_avl_unref(entry_by_key_, nullptr);
|
99
|
-
gpr_mu_destroy(&lock_);
|
100
98
|
}
|
101
99
|
|
102
100
|
size_t SslSessionLRUCache::Size() {
|
@@ -24,16 +24,14 @@
|
|
24
24
|
#include <grpc/slice.h>
|
25
25
|
#include <grpc/support/sync.h>
|
26
26
|
|
27
|
-
#pragma clang diagnostic push
|
28
|
-
#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
|
29
27
|
extern "C" {
|
30
28
|
#include <openssl/ssl.h>
|
31
29
|
}
|
32
|
-
#pragma clang diagnostic pop
|
33
30
|
|
34
31
|
#include "src/core/lib/avl/avl.h"
|
35
32
|
#include "src/core/lib/gprpp/memory.h"
|
36
33
|
#include "src/core/lib/gprpp/ref_counted.h"
|
34
|
+
#include "src/core/lib/gprpp/sync.h"
|
37
35
|
#include "src/core/tsi/ssl/session_cache/ssl_session.h"
|
38
36
|
|
39
37
|
/// Cache for SSL sessions for sessions resumption.
|
@@ -79,7 +77,7 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
|
|
79
77
|
void PushFront(Node* node);
|
80
78
|
void AssertInvariants();
|
81
79
|
|
82
|
-
|
80
|
+
grpc_core::Mutex lock_;
|
83
81
|
size_t capacity_;
|
84
82
|
|
85
83
|
Node* use_order_list_head_ = nullptr;
|
@@ -45,8 +45,6 @@
|
|
45
45
|
#include "absl/strings/match.h"
|
46
46
|
#include "absl/strings/string_view.h"
|
47
47
|
|
48
|
-
#pragma clang diagnostic push
|
49
|
-
#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
|
50
48
|
extern "C" {
|
51
49
|
#include <openssl/bio.h>
|
52
50
|
#include <openssl/crypto.h> /* For OPENSSL_free */
|
@@ -57,7 +55,6 @@ extern "C" {
|
|
57
55
|
#include <openssl/x509.h>
|
58
56
|
#include <openssl/x509v3.h>
|
59
57
|
}
|
60
|
-
#pragma clang diagnostic pop
|
61
58
|
|
62
59
|
#include "src/core/lib/gpr/useful.h"
|
63
60
|
#include "src/core/tsi/ssl/session_cache/ssl_session_cache.h"
|
@@ -25,12 +25,9 @@
|
|
25
25
|
#include "absl/strings/string_view.h"
|
26
26
|
#include "src/core/tsi/transport_security_interface.h"
|
27
27
|
|
28
|
-
#pragma clang diagnostic push
|
29
|
-
#pragma clang diagnostic ignored "-Wmodule-import-in-extern-c"
|
30
28
|
extern "C" {
|
31
29
|
#include <openssl/x509.h>
|
32
30
|
}
|
33
|
-
#pragma clang diagnostic pop
|
34
31
|
|
35
32
|
/* Value for the TSI_CERTIFICATE_TYPE_PEER_PROPERTY property for X509 certs. */
|
36
33
|
#define TSI_X509_CERTIFICATE_TYPE "X509"
|
@@ -45,8 +45,16 @@ if RUBY_PLATFORM =~ /darwin/
|
|
45
45
|
ENV['EMBED_OPENSSL'] = 'true'
|
46
46
|
ENV['EMBED_ZLIB'] = 'true'
|
47
47
|
ENV['EMBED_CARES'] = 'true'
|
48
|
+
|
48
49
|
ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
|
49
|
-
|
50
|
+
if RUBY_PLATFORM =~ /darwin/
|
51
|
+
if RUBY_PLATFORM =~ /arm64/
|
52
|
+
ENV['ARCH_FLAGS'] = '-arch arm64'
|
53
|
+
else
|
54
|
+
ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
50
58
|
ENV['CPPFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
|
51
59
|
|
52
60
|
output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include "rb_completion_queue.h"
|
35
35
|
#include "rb_grpc.h"
|
36
36
|
#include "rb_server.h"
|
37
|
+
#include "rb_xds_channel_credentials.h"
|
37
38
|
|
38
39
|
/* id_channel is the name of the hidden ivar that preserves a reference to the
|
39
40
|
* channel on a call, so that calls are not GCed before their channel. */
|
@@ -242,7 +243,15 @@ static VALUE grpc_rb_channel_init(int argc, VALUE* argv, VALUE self) {
|
|
242
243
|
ch = grpc_insecure_channel_create(target_chars, &args, NULL);
|
243
244
|
} else {
|
244
245
|
wrapper->credentials = credentials;
|
245
|
-
|
246
|
+
if (grpc_rb_is_channel_credentials(credentials)) {
|
247
|
+
creds = grpc_rb_get_wrapped_channel_credentials(credentials);
|
248
|
+
} else if (grpc_rb_is_xds_channel_credentials(credentials)) {
|
249
|
+
creds = grpc_rb_get_wrapped_xds_channel_credentials(credentials);
|
250
|
+
} else {
|
251
|
+
rb_raise(rb_eTypeError,
|
252
|
+
"bad creds, want ChannelCredentials or XdsChannelCredentials");
|
253
|
+
return Qnil;
|
254
|
+
}
|
246
255
|
ch = grpc_secure_channel_create(creds, target_chars, &args, NULL);
|
247
256
|
}
|
248
257
|
|
@@ -180,7 +180,11 @@ static VALUE grpc_rb_channel_credentials_init(int argc, VALUE* argv,
|
|
180
180
|
NULL, NULL);
|
181
181
|
}
|
182
182
|
if (creds == NULL) {
|
183
|
-
rb_raise(rb_eRuntimeError,
|
183
|
+
rb_raise(rb_eRuntimeError,
|
184
|
+
"the call to grpc_ssl_credentials_create() failed, could not "
|
185
|
+
"create a credentials, see "
|
186
|
+
"https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md for "
|
187
|
+
"debugging tips");
|
184
188
|
return Qnil;
|
185
189
|
}
|
186
190
|
wrapper->wrapped = creds;
|
@@ -270,7 +274,13 @@ void Init_grpc_channel_credentials() {
|
|
270
274
|
/* Gets the wrapped grpc_channel_credentials from the ruby wrapper */
|
271
275
|
grpc_channel_credentials* grpc_rb_get_wrapped_channel_credentials(VALUE v) {
|
272
276
|
grpc_rb_channel_credentials* wrapper = NULL;
|
277
|
+
Check_TypedStruct(v, &grpc_rb_channel_credentials_data_type);
|
273
278
|
TypedData_Get_Struct(v, grpc_rb_channel_credentials,
|
274
279
|
&grpc_rb_channel_credentials_data_type, wrapper);
|
275
280
|
return wrapper->wrapped;
|
276
281
|
}
|
282
|
+
|
283
|
+
/* Check if v is kind of ChannelCredentials */
|
284
|
+
bool grpc_rb_is_channel_credentials(VALUE v) {
|
285
|
+
return rb_typeddata_is_kind_of(v, &grpc_rb_channel_credentials_data_type);
|
286
|
+
}
|