grpc 1.28.0.pre2 → 1.31.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +8313 -11862
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +4 -0
- data/include/grpc/impl/codegen/grpc_types.h +23 -23
- data/include/grpc/impl/codegen/port_platform.h +6 -34
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -12
- data/src/core/ext/filters/client_channel/client_channel.cc +618 -482
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +9 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +23 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +44 -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 +297 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +311 -497
- 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 +9 -17
- 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 +117 -41
- 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 +1142 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +10 -7
- 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 +78 -61
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +41 -40
- 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 +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +12 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +199 -163
- 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 +46 -45
- 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 +64 -12
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +19 -17
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +21 -22
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +73 -217
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +45 -27
- 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_channel_arg_filter.cc +142 -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 +55 -25
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +1200 -246
- data/src/core/ext/filters/client_channel/xds/xds_api.h +130 -44
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +90 -29
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +9 -4
- 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 +839 -431
- data/src/core/ext/filters/client_channel/xds/xds_client.h +84 -33
- 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 +40 -28
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -33
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +28 -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 +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +61 -88
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +386 -350
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +42 -26
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +25 -30
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- 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.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- 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 +27 -21
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +54 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- 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 -876
- 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 +429 -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 +198 -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 +388 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +23 -10
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +352 -310
- 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/circuit_breaker.upb.h +42 -34
- 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/filter.upb.h +7 -7
- 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/cluster/outlier_detection.upb.h +79 -61
- 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/address.upb.h +55 -49
- 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 +79 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -27
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +258 -214
- 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/config_source.upb.h +51 -45
- 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 +71 -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/grpc_service.upb.h +107 -100
- 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 +157 -122
- 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/http_uri.upb.h +9 -9
- 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 +173 -73
- 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 +88 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- 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.upb.h +0 -1
- 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 +53 -38
- 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/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- 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 +95 -63
- 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.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- 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/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- 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.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +68 -46
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +770 -722
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- 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 +305 -210
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- 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/discovery/v2/ads.upb.h +1 -2
- 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 +22 -16
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- 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 +48 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +12 -11
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +421 -389
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +569 -562
- 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/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +10 -21
- 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/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +10 -33
- data/src/core/lib/gpr/string.h +4 -18
- 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/global_config_env.cc +8 -6
- 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/gprpp/sync.h +9 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +15 -13
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- 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 +4 -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/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- 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 +25 -29
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -24
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- 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 +2 -21
- 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 +42 -57
- 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 +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +38 -37
- data/src/core/lib/iomgr/sockaddr_utils.cc +29 -33
- data/src/core/lib/iomgr/sockaddr_utils.h +10 -15
- 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 +102 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +30 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +3 -4
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +11 -23
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- 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 +15 -15
- 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 +32 -36
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +25 -26
- 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 +13 -62
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -17
- 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.cc +7 -4
- 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 +73 -54
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -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 +48 -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 +17 -17
- 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.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +2 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -36
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +89 -21
- data/src/core/lib/security/security_connector/ssl_utils.h +18 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -72
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +15 -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 +42 -44
- 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 +304 -47
- data/src/core/lib/surface/completion_queue.h +8 -0
- 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.cc +2 -0
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +971 -837
- data/src/core/lib/surface/server.h +66 -12
- 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 +9 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +34 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- 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 +154 -50
- data/src/core/tsi/ssl_transport_security.h +22 -10
- 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 +8 -3
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- 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 +5 -5
- 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_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
- data/src/ruby/spec/support/services.rb +10 -4
- 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 +335 -297
- 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 +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- 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 +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -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/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -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 +25 -12
- 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 +434 -161
- 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 +18 -25
- 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 +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -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/util.c +3 -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/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- 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 +249 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +57 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +33 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -2
- 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/evp.h +69 -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 +191 -79
- 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 +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +791 -715
- 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 +23 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +30 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +21 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +74 -54
- 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 +34 -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 +44 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +51 -26
- 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 +129 -48
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +55 -22
- 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
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +122 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1908
- 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
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -23,9 +23,10 @@
|
|
23
23
|
|
24
24
|
#include <stddef.h>
|
25
25
|
|
26
|
+
#include "absl/container/inlined_vector.h"
|
27
|
+
|
26
28
|
#include <grpc/support/atm.h>
|
27
29
|
|
28
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
29
30
|
#include "src/core/lib/gprpp/mpscq.h"
|
30
31
|
#include "src/core/lib/gprpp/ref_counted.h"
|
31
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -208,7 +209,7 @@ class CallCombinerClosureList {
|
|
208
209
|
|
209
210
|
// There are generally a maximum of 6 closures to run in the call
|
210
211
|
// combiner, one for each pending op.
|
211
|
-
InlinedVector<CallCombinerClosure, 6> closures_;
|
212
|
+
absl::InlinedVector<CallCombinerClosure, 6> closures_;
|
212
213
|
};
|
213
214
|
|
214
215
|
} // namespace grpc_core
|
@@ -32,6 +32,7 @@
|
|
32
32
|
#include "src/core/lib/debug/trace.h"
|
33
33
|
#include "src/core/lib/iomgr/closure.h"
|
34
34
|
#include "src/core/lib/iomgr/error_cfstream.h"
|
35
|
+
#include "src/core/lib/iomgr/ev_apple.h"
|
35
36
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
36
37
|
|
37
38
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
@@ -147,14 +148,15 @@ CFStreamHandle::CFStreamHandle(CFReadStreamRef read_stream,
|
|
147
148
|
kCFStreamEventOpenCompleted | kCFStreamEventCanAcceptBytes |
|
148
149
|
kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered,
|
149
150
|
CFStreamHandle::WriteCallback, &ctx);
|
150
|
-
|
151
|
-
|
151
|
+
grpc_apple_register_read_stream(read_stream, dispatch_queue_);
|
152
|
+
grpc_apple_register_write_stream(write_stream, dispatch_queue_);
|
152
153
|
}
|
153
154
|
|
154
155
|
CFStreamHandle::~CFStreamHandle() {
|
155
156
|
open_event_.DestroyEvent();
|
156
157
|
read_event_.DestroyEvent();
|
157
158
|
write_event_.DestroyEvent();
|
159
|
+
dispatch_release(dispatch_queue_);
|
158
160
|
}
|
159
161
|
|
160
162
|
void CFStreamHandle::NotifyOnOpen(grpc_closure* closure) {
|
@@ -121,12 +121,11 @@ inline grpc_closure* grpc_closure_init(grpc_closure* closure,
|
|
121
121
|
|
122
122
|
namespace closure_impl {
|
123
123
|
|
124
|
-
|
124
|
+
struct wrapped_closure {
|
125
125
|
grpc_iomgr_cb_func cb;
|
126
126
|
void* cb_arg;
|
127
127
|
grpc_closure wrapper;
|
128
|
-
}
|
129
|
-
|
128
|
+
};
|
130
129
|
inline void closure_wrapper(void* arg, grpc_error* error) {
|
131
130
|
wrapped_closure* wc = static_cast<wrapped_closure*>(arg);
|
132
131
|
grpc_iomgr_cb_func cb = wc->cb;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2020 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/iomgr/port.h"
|
22
|
+
|
23
|
+
#ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
|
24
|
+
|
25
|
+
#include <netinet/in.h>
|
26
|
+
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
27
|
+
|
28
|
+
#ifndef GRPC_SET_SOCKET_DUALSTACK_CUSTOM
|
29
|
+
|
30
|
+
/* This should be 0 in production, but it may be enabled for testing or
|
31
|
+
debugging purposes, to simulate an environment where IPv6 sockets can't
|
32
|
+
also speak IPv4. */
|
33
|
+
int grpc_forbid_dualstack_sockets_for_testing = 0;
|
34
|
+
|
35
|
+
int grpc_set_socket_dualstack(int fd) {
|
36
|
+
if (!grpc_forbid_dualstack_sockets_for_testing) {
|
37
|
+
const int off = 0;
|
38
|
+
return 0 == setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &off, sizeof(off));
|
39
|
+
} else {
|
40
|
+
/* Force an IPv6-only socket, for testing purposes. */
|
41
|
+
const int on = 1;
|
42
|
+
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on));
|
43
|
+
return 0;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
#endif // GRPC_SET_SOCKET_DUALSTACK_CUSTOM
|
47
|
+
#endif // GRPC_POSIX_SOCKET_UTILS_COMMON
|
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
41
41
|
|
42
|
-
|
42
|
+
struct CFStreamEndpoint {
|
43
43
|
grpc_endpoint base;
|
44
44
|
gpr_refcount refcount;
|
45
45
|
|
@@ -58,8 +58,7 @@ typedef struct {
|
|
58
58
|
char* peer_string;
|
59
59
|
grpc_resource_user* resource_user;
|
60
60
|
grpc_resource_user_slice_allocator slice_allocator;
|
61
|
-
}
|
62
|
-
|
61
|
+
};
|
63
62
|
static void CFStreamFree(CFStreamEndpoint* ep) {
|
64
63
|
grpc_resource_user_unref(ep->resource_user);
|
65
64
|
CFRelease(ep->read_stream);
|
@@ -23,11 +23,10 @@
|
|
23
23
|
|
24
24
|
#include "src/core/lib/iomgr/endpoint.h"
|
25
25
|
|
26
|
-
|
26
|
+
struct grpc_endpoint_pair {
|
27
27
|
grpc_endpoint* client;
|
28
28
|
grpc_endpoint* server;
|
29
|
-
}
|
30
|
-
|
29
|
+
};
|
31
30
|
grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name,
|
32
31
|
grpc_channel_args* args);
|
33
32
|
|
@@ -32,9 +32,12 @@
|
|
32
32
|
#include <sys/socket.h>
|
33
33
|
#include <sys/types.h>
|
34
34
|
|
35
|
+
#include <string>
|
36
|
+
|
37
|
+
#include "absl/strings/str_cat.h"
|
38
|
+
|
35
39
|
#include <grpc/support/alloc.h>
|
36
40
|
#include <grpc/support/log.h>
|
37
|
-
#include <grpc/support/string_util.h>
|
38
41
|
#include "src/core/lib/gpr/string.h"
|
39
42
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
40
43
|
|
@@ -53,19 +56,16 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name,
|
|
53
56
|
grpc_channel_args* args) {
|
54
57
|
int sv[2];
|
55
58
|
grpc_endpoint_pair p;
|
56
|
-
char* final_name;
|
57
59
|
create_sockets(sv);
|
58
60
|
|
59
61
|
grpc_core::ExecCtx exec_ctx;
|
60
62
|
|
61
|
-
|
62
|
-
p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name, false),
|
63
|
-
"socketpair-server");
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
"socketpair-client");
|
68
|
-
gpr_free(final_name);
|
63
|
+
std::string final_name = absl::StrCat(name, ":client");
|
64
|
+
p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name.c_str(), false),
|
65
|
+
args, "socketpair-server");
|
66
|
+
final_name = absl::StrCat(name, ":server");
|
67
|
+
p.server = grpc_tcp_create(grpc_fd_create(sv[0], final_name.c_str(), false),
|
68
|
+
args, "socketpair-client");
|
69
69
|
|
70
70
|
return p;
|
71
71
|
}
|
data/src/core/lib/iomgr/error.cc
CHANGED
@@ -446,12 +446,11 @@ grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which,
|
|
446
446
|
return new_err;
|
447
447
|
}
|
448
448
|
|
449
|
-
|
449
|
+
struct special_error_status_map {
|
450
450
|
grpc_status_code code;
|
451
451
|
const char* msg;
|
452
452
|
size_t len;
|
453
|
-
}
|
454
|
-
|
453
|
+
};
|
455
454
|
const special_error_status_map error_status_map[] = {
|
456
455
|
{GRPC_STATUS_OK, "", 0}, // GRPC_ERROR_NONE
|
457
456
|
{GRPC_STATUS_INVALID_ARGUMENT, "", 0}, // GRPC_ERROR_RESERVED_1
|
@@ -532,17 +531,15 @@ static const char* no_error_string = "\"No Error\"";
|
|
532
531
|
static const char* oom_error_string = "\"Out of memory\"";
|
533
532
|
static const char* cancelled_error_string = "\"Cancelled\"";
|
534
533
|
|
535
|
-
|
534
|
+
struct kv_pair {
|
536
535
|
char* key;
|
537
536
|
char* value;
|
538
|
-
}
|
539
|
-
|
540
|
-
typedef struct {
|
537
|
+
};
|
538
|
+
struct kv_pairs {
|
541
539
|
kv_pair* kvs;
|
542
540
|
size_t num_kvs;
|
543
541
|
size_t cap_kvs;
|
544
|
-
}
|
545
|
-
|
542
|
+
};
|
546
543
|
static void append_chr(char c, char** s, size_t* sz, size_t* cap) {
|
547
544
|
if (*sz == *cap) {
|
548
545
|
*cap = GPR_MAX(8, 3 * *cap / 2);
|
data/src/core/lib/iomgr/error.h
CHANGED
@@ -19,10 +19,13 @@
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
21
|
#ifdef GRPC_CFSTREAM
|
22
|
+
#include <string>
|
23
|
+
|
24
|
+
#include "absl/strings/str_format.h"
|
25
|
+
|
22
26
|
#include <CoreFoundation/CoreFoundation.h>
|
23
27
|
|
24
28
|
#include <grpc/support/alloc.h>
|
25
|
-
#include <grpc/support/string_util.h>
|
26
29
|
|
27
30
|
#include "src/core/lib/iomgr/error.h"
|
28
31
|
|
@@ -33,7 +36,6 @@ grpc_error* grpc_error_create_from_cferror(const char* file, int line,
|
|
33
36
|
CFErrorRef error = static_cast<CFErrorRef>(arg);
|
34
37
|
char buf_domain[MAX_ERROR_DESCRIPTION];
|
35
38
|
char buf_desc[MAX_ERROR_DESCRIPTION];
|
36
|
-
char* error_msg;
|
37
39
|
CFErrorDomain domain = CFErrorGetDomain((error));
|
38
40
|
CFIndex code = CFErrorGetCode((error));
|
39
41
|
CFStringRef desc = CFErrorCopyDescription((error));
|
@@ -41,12 +43,11 @@ grpc_error* grpc_error_create_from_cferror(const char* file, int line,
|
|
41
43
|
kCFStringEncodingUTF8);
|
42
44
|
CFStringGetCString(desc, buf_desc, MAX_ERROR_DESCRIPTION,
|
43
45
|
kCFStringEncodingUTF8);
|
44
|
-
|
45
|
-
|
46
|
+
std::string error_msg =
|
47
|
+
absl::StrFormat("%s (error domain:%s, code:%ld, description:%s)",
|
48
|
+
custom_desc, buf_domain, code, buf_desc);
|
46
49
|
CFRelease(desc);
|
47
|
-
|
48
|
-
file, line, grpc_slice_from_copied_string(error_msg), NULL, 0);
|
49
|
-
gpr_free(error_msg);
|
50
|
-
return return_error;
|
50
|
+
return grpc_error_create(
|
51
|
+
file, line, grpc_slice_from_copied_string(error_msg.c_str()), NULL, 0);
|
51
52
|
}
|
52
53
|
#endif /* GRPC_CFSTREAM */
|
@@ -0,0 +1,356 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2020 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
/// Event engine based on Apple's CFRunLoop API family. If the CFRunLoop engine
|
20
|
+
/// is enabled (see iomgr_posix_cfstream.cc), a global thread is started to
|
21
|
+
/// handle and trigger all the CFStream events. The CFStream streams register
|
22
|
+
/// themselves with the run loop with functions grpc_apple_register_read_stream
|
23
|
+
/// and grpc_apple_register_read_stream. Pollsets are dummy and block on a
|
24
|
+
/// condition variable in pollset_work().
|
25
|
+
|
26
|
+
#include <grpc/support/port_platform.h>
|
27
|
+
|
28
|
+
#include "src/core/lib/iomgr/port.h"
|
29
|
+
|
30
|
+
#ifdef GRPC_APPLE_EV
|
31
|
+
|
32
|
+
#include <CoreFoundation/CoreFoundation.h>
|
33
|
+
|
34
|
+
#include <list>
|
35
|
+
|
36
|
+
#include "src/core/lib/gprpp/thd.h"
|
37
|
+
#include "src/core/lib/iomgr/ev_apple.h"
|
38
|
+
|
39
|
+
grpc_core::DebugOnlyTraceFlag grpc_apple_polling_trace(false, "apple_polling");
|
40
|
+
|
41
|
+
#ifndef NDEBUG
|
42
|
+
#define GRPC_POLLING_TRACE(format, ...) \
|
43
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_apple_polling_trace)) { \
|
44
|
+
gpr_log(GPR_DEBUG, "(polling) " format, __VA_ARGS__); \
|
45
|
+
}
|
46
|
+
#else
|
47
|
+
#define GRPC_POLLING_TRACE(...)
|
48
|
+
#endif // NDEBUG
|
49
|
+
|
50
|
+
#define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1)
|
51
|
+
|
52
|
+
struct GlobalRunLoopContext {
|
53
|
+
grpc_core::CondVar init_cv;
|
54
|
+
grpc_core::CondVar input_source_cv;
|
55
|
+
|
56
|
+
grpc_core::Mutex mu;
|
57
|
+
|
58
|
+
// Whether an input source registration is pending. Protected by mu.
|
59
|
+
bool input_source_registered = false;
|
60
|
+
|
61
|
+
// The reference to the global run loop object. Protected by mu.
|
62
|
+
CFRunLoopRef run_loop;
|
63
|
+
|
64
|
+
// Whether the pollset has been globally shut down. Protected by mu.
|
65
|
+
bool is_shutdown = false;
|
66
|
+
};
|
67
|
+
|
68
|
+
struct GrpcAppleWorker {
|
69
|
+
// The condition varible to kick the worker. Works with the pollset's lock
|
70
|
+
// (GrpcApplePollset.mu).
|
71
|
+
grpc_core::CondVar cv;
|
72
|
+
|
73
|
+
// Whether the worker is kicked. Protected by the pollset's lock
|
74
|
+
// (GrpcApplePollset.mu).
|
75
|
+
bool kicked = false;
|
76
|
+
};
|
77
|
+
|
78
|
+
struct GrpcApplePollset {
|
79
|
+
grpc_core::Mutex mu;
|
80
|
+
|
81
|
+
// Tracks the current workers in the pollset. Protected by mu.
|
82
|
+
std::list<GrpcAppleWorker*> workers;
|
83
|
+
|
84
|
+
// Whether the pollset is shut down. Protected by mu.
|
85
|
+
bool is_shutdown = false;
|
86
|
+
|
87
|
+
// Closure to call when shutdown is done. Protected by mu.
|
88
|
+
grpc_closure* shutdown_closure;
|
89
|
+
|
90
|
+
// Whether there's an outstanding kick that was not processed. Protected by
|
91
|
+
// mu.
|
92
|
+
bool kicked_without_poller = false;
|
93
|
+
};
|
94
|
+
|
95
|
+
static GlobalRunLoopContext* gGlobalRunLoopContext = nullptr;
|
96
|
+
static grpc_core::Thread* gGlobalRunLoopThread = nullptr;
|
97
|
+
|
98
|
+
/// Register the stream with the dispatch queue. Callbacks of the stream will be
|
99
|
+
/// issued to the dispatch queue when a network event happens and will be
|
100
|
+
/// managed by Grand Central Dispatch.
|
101
|
+
static void grpc_apple_register_read_stream_queue(
|
102
|
+
CFReadStreamRef read_stream, dispatch_queue_t dispatch_queue) {
|
103
|
+
CFReadStreamSetDispatchQueue(read_stream, dispatch_queue);
|
104
|
+
}
|
105
|
+
|
106
|
+
/// Register the stream with the dispatch queue. Callbacks of the stream will be
|
107
|
+
/// issued to the dispatch queue when a network event happens and will be
|
108
|
+
/// managed by Grand Central Dispatch.
|
109
|
+
static void grpc_apple_register_write_stream_queue(
|
110
|
+
CFWriteStreamRef write_stream, dispatch_queue_t dispatch_queue) {
|
111
|
+
CFWriteStreamSetDispatchQueue(write_stream, dispatch_queue);
|
112
|
+
}
|
113
|
+
|
114
|
+
/// Register the stream with the global run loop. Callbacks of the stream will
|
115
|
+
/// be issued to the run loop when a network event happens and will be driven by
|
116
|
+
/// the global run loop thread gGlobalRunLoopThread.
|
117
|
+
static void grpc_apple_register_read_stream_run_loop(
|
118
|
+
CFReadStreamRef read_stream, dispatch_queue_t dispatch_queue) {
|
119
|
+
GRPC_POLLING_TRACE("Register read stream: %p", read_stream);
|
120
|
+
grpc_core::MutexLock lock(&gGlobalRunLoopContext->mu);
|
121
|
+
CFReadStreamScheduleWithRunLoop(read_stream, gGlobalRunLoopContext->run_loop,
|
122
|
+
kCFRunLoopDefaultMode);
|
123
|
+
gGlobalRunLoopContext->input_source_registered = true;
|
124
|
+
gGlobalRunLoopContext->input_source_cv.Signal();
|
125
|
+
}
|
126
|
+
|
127
|
+
/// Register the stream with the global run loop. Callbacks of the stream will
|
128
|
+
/// be issued to the run loop when a network event happens, and will be driven
|
129
|
+
/// by the global run loop thread gGlobalRunLoopThread.
|
130
|
+
static void grpc_apple_register_write_stream_run_loop(
|
131
|
+
CFWriteStreamRef write_stream, dispatch_queue_t dispatch_queue) {
|
132
|
+
GRPC_POLLING_TRACE("Register write stream: %p", write_stream);
|
133
|
+
grpc_core::MutexLock lock(&gGlobalRunLoopContext->mu);
|
134
|
+
CFWriteStreamScheduleWithRunLoop(
|
135
|
+
write_stream, gGlobalRunLoopContext->run_loop, kCFRunLoopDefaultMode);
|
136
|
+
gGlobalRunLoopContext->input_source_registered = true;
|
137
|
+
gGlobalRunLoopContext->input_source_cv.Signal();
|
138
|
+
}
|
139
|
+
|
140
|
+
/// The default implementation of stream registration is to register the stream
|
141
|
+
/// to a dispatch queue. However, if the CFRunLoop based pollset is enabled (by
|
142
|
+
/// macro and environment variable, see docs in iomgr_posix_cfstream.cc), the
|
143
|
+
/// CFStream streams are registered with the global run loop instead (see
|
144
|
+
/// pollset_global_init below).
|
145
|
+
static void (*grpc_apple_register_read_stream_impl)(
|
146
|
+
CFReadStreamRef, dispatch_queue_t) = grpc_apple_register_read_stream_queue;
|
147
|
+
static void (*grpc_apple_register_write_stream_impl)(CFWriteStreamRef,
|
148
|
+
dispatch_queue_t) =
|
149
|
+
grpc_apple_register_write_stream_queue;
|
150
|
+
|
151
|
+
void grpc_apple_register_read_stream(CFReadStreamRef read_stream,
|
152
|
+
dispatch_queue_t dispatch_queue) {
|
153
|
+
grpc_apple_register_read_stream_impl(read_stream, dispatch_queue);
|
154
|
+
}
|
155
|
+
|
156
|
+
void grpc_apple_register_write_stream(CFWriteStreamRef write_stream,
|
157
|
+
dispatch_queue_t dispatch_queue) {
|
158
|
+
grpc_apple_register_write_stream_impl(write_stream, dispatch_queue);
|
159
|
+
}
|
160
|
+
|
161
|
+
/// Drive the run loop in a global singleton thread until the global run loop is
|
162
|
+
/// shutdown.
|
163
|
+
static void GlobalRunLoopFunc(void* arg) {
|
164
|
+
grpc_core::ReleasableMutexLock lock(&gGlobalRunLoopContext->mu);
|
165
|
+
gGlobalRunLoopContext->run_loop = CFRunLoopGetCurrent();
|
166
|
+
gGlobalRunLoopContext->init_cv.Signal();
|
167
|
+
|
168
|
+
while (!gGlobalRunLoopContext->is_shutdown) {
|
169
|
+
// CFRunLoopRun() will return immediately if no stream is registered on it.
|
170
|
+
// So we wait on a conditional variable until a stream is registered;
|
171
|
+
// otherwise we'll be running a spinning loop.
|
172
|
+
while (!gGlobalRunLoopContext->input_source_registered) {
|
173
|
+
gGlobalRunLoopContext->input_source_cv.Wait(&gGlobalRunLoopContext->mu);
|
174
|
+
}
|
175
|
+
gGlobalRunLoopContext->input_source_registered = false;
|
176
|
+
lock.Unlock();
|
177
|
+
CFRunLoopRun();
|
178
|
+
lock.Lock();
|
179
|
+
}
|
180
|
+
lock.Unlock();
|
181
|
+
}
|
182
|
+
|
183
|
+
// pollset implementation
|
184
|
+
|
185
|
+
static void pollset_global_init(void) {
|
186
|
+
gGlobalRunLoopContext = new GlobalRunLoopContext;
|
187
|
+
|
188
|
+
grpc_apple_register_read_stream_impl =
|
189
|
+
grpc_apple_register_read_stream_run_loop;
|
190
|
+
grpc_apple_register_write_stream_impl =
|
191
|
+
grpc_apple_register_write_stream_run_loop;
|
192
|
+
|
193
|
+
grpc_core::MutexLock lock(&gGlobalRunLoopContext->mu);
|
194
|
+
gGlobalRunLoopThread =
|
195
|
+
new grpc_core::Thread("apple_ev", GlobalRunLoopFunc, nullptr);
|
196
|
+
gGlobalRunLoopThread->Start();
|
197
|
+
while (gGlobalRunLoopContext->run_loop == NULL)
|
198
|
+
gGlobalRunLoopContext->init_cv.Wait(&gGlobalRunLoopContext->mu);
|
199
|
+
}
|
200
|
+
|
201
|
+
static void pollset_global_shutdown(void) {
|
202
|
+
{
|
203
|
+
grpc_core::MutexLock lock(&gGlobalRunLoopContext->mu);
|
204
|
+
gGlobalRunLoopContext->is_shutdown = true;
|
205
|
+
CFRunLoopStop(gGlobalRunLoopContext->run_loop);
|
206
|
+
}
|
207
|
+
gGlobalRunLoopThread->Join();
|
208
|
+
delete gGlobalRunLoopThread;
|
209
|
+
delete gGlobalRunLoopContext;
|
210
|
+
}
|
211
|
+
|
212
|
+
/// The caller must acquire the lock GrpcApplePollset.mu before calling this
|
213
|
+
/// function. The lock may be temporarily released when waiting on the condition
|
214
|
+
/// variable but will be re-acquired before the function returns.
|
215
|
+
///
|
216
|
+
/// The Apple pollset simply waits on a condition variable until it is kicked.
|
217
|
+
/// The network events are handled in the global run loop thread. Processing of
|
218
|
+
/// these events will eventually trigger the kick.
|
219
|
+
static grpc_error* pollset_work(grpc_pollset* pollset,
|
220
|
+
grpc_pollset_worker** worker,
|
221
|
+
grpc_millis deadline) {
|
222
|
+
GRPC_POLLING_TRACE("pollset work: %p, worker: %p, deadline: %" PRIu64,
|
223
|
+
pollset, worker, deadline);
|
224
|
+
GrpcApplePollset* apple_pollset =
|
225
|
+
reinterpret_cast<GrpcApplePollset*>(pollset);
|
226
|
+
GrpcAppleWorker actual_worker;
|
227
|
+
if (worker) {
|
228
|
+
*worker = reinterpret_cast<grpc_pollset_worker*>(&actual_worker);
|
229
|
+
}
|
230
|
+
|
231
|
+
if (apple_pollset->kicked_without_poller) {
|
232
|
+
// Process the outstanding kick and reset the flag. Do not block.
|
233
|
+
apple_pollset->kicked_without_poller = false;
|
234
|
+
} else {
|
235
|
+
// Block until kicked, timed out, or the pollset shuts down.
|
236
|
+
apple_pollset->workers.push_front(&actual_worker);
|
237
|
+
auto it = apple_pollset->workers.begin();
|
238
|
+
|
239
|
+
while (!actual_worker.kicked && !apple_pollset->is_shutdown) {
|
240
|
+
if (actual_worker.cv.Wait(
|
241
|
+
&apple_pollset->mu,
|
242
|
+
grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME))) {
|
243
|
+
// timed out
|
244
|
+
break;
|
245
|
+
}
|
246
|
+
}
|
247
|
+
|
248
|
+
apple_pollset->workers.erase(it);
|
249
|
+
|
250
|
+
// If the pollset is shut down asynchronously and this is the last pending
|
251
|
+
// worker, the shutdown process is complete at this moment and the shutdown
|
252
|
+
// callback will be called.
|
253
|
+
if (apple_pollset->is_shutdown && apple_pollset->workers.empty()) {
|
254
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, apple_pollset->shutdown_closure,
|
255
|
+
GRPC_ERROR_NONE);
|
256
|
+
}
|
257
|
+
}
|
258
|
+
|
259
|
+
return GRPC_ERROR_NONE;
|
260
|
+
}
|
261
|
+
|
262
|
+
/// Kick a specific worker. The caller must acquire the lock GrpcApplePollset.mu
|
263
|
+
/// before calling this function.
|
264
|
+
static void kick_worker(GrpcAppleWorker* worker) {
|
265
|
+
worker->kicked = true;
|
266
|
+
worker->cv.Signal();
|
267
|
+
}
|
268
|
+
|
269
|
+
/// The caller must acquire the lock GrpcApplePollset.mu before calling this
|
270
|
+
/// function. The kick action simply signals the condition variable of the
|
271
|
+
/// worker.
|
272
|
+
static grpc_error* pollset_kick(grpc_pollset* pollset,
|
273
|
+
grpc_pollset_worker* specific_worker) {
|
274
|
+
GrpcApplePollset* apple_pollset =
|
275
|
+
reinterpret_cast<GrpcApplePollset*>(pollset);
|
276
|
+
|
277
|
+
GRPC_POLLING_TRACE("pollset kick: %p, worker:%p", pollset, specific_worker);
|
278
|
+
|
279
|
+
if (specific_worker == nullptr) {
|
280
|
+
if (apple_pollset->workers.empty()) {
|
281
|
+
apple_pollset->kicked_without_poller = true;
|
282
|
+
} else {
|
283
|
+
GrpcAppleWorker* actual_worker = apple_pollset->workers.front();
|
284
|
+
kick_worker(actual_worker);
|
285
|
+
}
|
286
|
+
} else if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) {
|
287
|
+
for (auto& actual_worker : apple_pollset->workers) {
|
288
|
+
kick_worker(actual_worker);
|
289
|
+
}
|
290
|
+
} else {
|
291
|
+
GrpcAppleWorker* actual_worker =
|
292
|
+
reinterpret_cast<GrpcAppleWorker*>(specific_worker);
|
293
|
+
kick_worker(actual_worker);
|
294
|
+
}
|
295
|
+
|
296
|
+
return GRPC_ERROR_NONE;
|
297
|
+
}
|
298
|
+
|
299
|
+
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
300
|
+
GRPC_POLLING_TRACE("pollset init: %p", pollset);
|
301
|
+
GrpcApplePollset* apple_pollset = new (pollset) GrpcApplePollset();
|
302
|
+
*mu = apple_pollset->mu.get();
|
303
|
+
}
|
304
|
+
|
305
|
+
/// The caller must acquire the lock GrpcApplePollset.mu before calling this
|
306
|
+
/// function.
|
307
|
+
static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
308
|
+
GRPC_POLLING_TRACE("pollset shutdown: %p", pollset);
|
309
|
+
|
310
|
+
GrpcApplePollset* apple_pollset =
|
311
|
+
reinterpret_cast<GrpcApplePollset*>(pollset);
|
312
|
+
apple_pollset->is_shutdown = true;
|
313
|
+
pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
|
314
|
+
|
315
|
+
// If there is any worker blocked, shutdown will be done asynchronously.
|
316
|
+
if (apple_pollset->workers.empty()) {
|
317
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
318
|
+
} else {
|
319
|
+
apple_pollset->shutdown_closure = closure;
|
320
|
+
}
|
321
|
+
}
|
322
|
+
|
323
|
+
static void pollset_destroy(grpc_pollset* pollset) {
|
324
|
+
GRPC_POLLING_TRACE("pollset destroy: %p", pollset);
|
325
|
+
GrpcApplePollset* apple_pollset =
|
326
|
+
reinterpret_cast<GrpcApplePollset*>(pollset);
|
327
|
+
apple_pollset->~GrpcApplePollset();
|
328
|
+
}
|
329
|
+
|
330
|
+
size_t pollset_size(void) { return sizeof(GrpcApplePollset); }
|
331
|
+
|
332
|
+
grpc_pollset_vtable grpc_apple_pollset_vtable = {
|
333
|
+
pollset_global_init, pollset_global_shutdown,
|
334
|
+
pollset_init, pollset_shutdown,
|
335
|
+
pollset_destroy, pollset_work,
|
336
|
+
pollset_kick, pollset_size};
|
337
|
+
|
338
|
+
// pollset_set implementation
|
339
|
+
|
340
|
+
grpc_pollset_set* pollset_set_create(void) { return nullptr; }
|
341
|
+
void pollset_set_destroy(grpc_pollset_set* pollset_set) {}
|
342
|
+
void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
|
343
|
+
grpc_pollset* pollset) {}
|
344
|
+
void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
|
345
|
+
grpc_pollset* pollset) {}
|
346
|
+
void pollset_set_add_pollset_set(grpc_pollset_set* bag,
|
347
|
+
grpc_pollset_set* item) {}
|
348
|
+
void pollset_set_del_pollset_set(grpc_pollset_set* bag,
|
349
|
+
grpc_pollset_set* item) {}
|
350
|
+
|
351
|
+
grpc_pollset_set_vtable grpc_apple_pollset_set_vtable = {
|
352
|
+
pollset_set_create, pollset_set_destroy,
|
353
|
+
pollset_set_add_pollset, pollset_set_del_pollset,
|
354
|
+
pollset_set_add_pollset_set, pollset_set_del_pollset_set};
|
355
|
+
|
356
|
+
#endif
|