grpc 1.28.0 → 1.30.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +7694 -11190
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +22 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +19 -21
- data/include/grpc/impl/codegen/port_platform.h +6 -2
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +203 -236
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
- data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
- data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
- data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +5 -5
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +52 -39
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +329 -297
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- metadata +111 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -0,0 +1,43 @@
|
|
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
|
+
#ifndef GRPC_CORE_LIB_IOMGR_EV_APPLE_H
|
20
|
+
#define GRPC_CORE_LIB_IOMGR_EV_APPLE_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#ifdef GRPC_APPLE_EV
|
25
|
+
|
26
|
+
#include <CoreFoundation/CoreFoundation.h>
|
27
|
+
|
28
|
+
#include "src/core/lib/iomgr/pollset.h"
|
29
|
+
#include "src/core/lib/iomgr/pollset_set.h"
|
30
|
+
|
31
|
+
void grpc_apple_register_read_stream(CFReadStreamRef read_stream,
|
32
|
+
dispatch_queue_t dispatch_queue);
|
33
|
+
|
34
|
+
void grpc_apple_register_write_stream(CFWriteStreamRef write_stream,
|
35
|
+
dispatch_queue_t dispatch_queue);
|
36
|
+
|
37
|
+
extern grpc_pollset_vtable grpc_apple_pollset_vtable;
|
38
|
+
|
39
|
+
extern grpc_pollset_set_vtable grpc_apple_pollset_set_vtable;
|
40
|
+
|
41
|
+
#endif
|
42
|
+
|
43
|
+
#endif
|
@@ -38,6 +38,11 @@
|
|
38
38
|
#include <sys/socket.h>
|
39
39
|
#include <unistd.h>
|
40
40
|
|
41
|
+
#include <vector>
|
42
|
+
|
43
|
+
#include "absl/strings/str_format.h"
|
44
|
+
#include "absl/strings/str_join.h"
|
45
|
+
|
41
46
|
#include <grpc/support/alloc.h>
|
42
47
|
#include <grpc/support/cpu.h>
|
43
48
|
#include <grpc/support/string_util.h>
|
@@ -1064,30 +1069,23 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1064
1069
|
GRPC_STATS_INC_POLLSET_KICK();
|
1065
1070
|
grpc_error* ret_err = GRPC_ERROR_NONE;
|
1066
1071
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
(void*)gpr_tls_get(&g_current_thread_worker),
|
1073
|
-
pollset->root_worker);
|
1074
|
-
gpr_strvec_add(&log, tmp);
|
1072
|
+
std::vector<std::string> log;
|
1073
|
+
log.push_back(absl::StrFormat(
|
1074
|
+
"PS:%p KICK:%p curps=%p curworker=%p root=%p", pollset, specific_worker,
|
1075
|
+
(void*)gpr_tls_get(&g_current_thread_pollset),
|
1076
|
+
(void*)gpr_tls_get(&g_current_thread_worker), pollset->root_worker));
|
1075
1077
|
if (pollset->root_worker != nullptr) {
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1078
|
+
log.push_back(absl::StrFormat(
|
1079
|
+
" {kick_state=%s next=%p {kick_state=%s}}",
|
1080
|
+
kick_state_string(pollset->root_worker->state),
|
1081
|
+
pollset->root_worker->next,
|
1082
|
+
kick_state_string(pollset->root_worker->next->state)));
|
1081
1083
|
}
|
1082
1084
|
if (specific_worker != nullptr) {
|
1083
|
-
|
1084
|
-
|
1085
|
-
gpr_strvec_add(&log, tmp);
|
1085
|
+
log.push_back(absl::StrFormat(" worker_kick_state=%s",
|
1086
|
+
kick_state_string(specific_worker->state)));
|
1086
1087
|
}
|
1087
|
-
|
1088
|
-
gpr_strvec_destroy(&log);
|
1089
|
-
gpr_log(GPR_DEBUG, "%s", tmp);
|
1090
|
-
gpr_free(tmp);
|
1088
|
+
gpr_log(GPR_DEBUG, "%s", absl::StrJoin(log, "").c_str());
|
1091
1089
|
}
|
1092
1090
|
|
1093
1091
|
if (specific_worker == nullptr) {
|
@@ -1116,9 +1114,8 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
1116
1114
|
}
|
1117
1115
|
SET_KICK_STATE(next_worker, KICKED);
|
1118
1116
|
goto done;
|
1119
|
-
} else if (root_worker ==
|
1120
|
-
|
1121
|
-
// there is no next worker
|
1117
|
+
} else if (root_worker == next_worker && // only try and wake up a poller
|
1118
|
+
// if there is no next worker
|
1122
1119
|
root_worker == (grpc_pollset_worker*)gpr_atm_no_barrier_load(
|
1123
1120
|
&g_active_poller)) {
|
1124
1121
|
GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
|
@@ -263,11 +263,10 @@ static void fd_global_shutdown(void);
|
|
263
263
|
* Pollset Declarations
|
264
264
|
*/
|
265
265
|
|
266
|
-
|
266
|
+
struct pwlink {
|
267
267
|
grpc_pollset_worker* next;
|
268
268
|
grpc_pollset_worker* prev;
|
269
|
-
}
|
270
|
-
|
269
|
+
};
|
271
270
|
typedef enum { PWLINK_POLLABLE = 0, PWLINK_POLLSET, PWLINK_COUNT } pwlinks;
|
272
271
|
|
273
272
|
struct grpc_pollset_worker {
|
@@ -307,9 +307,9 @@ static void fork_fd_list_add_wakeup_fd(grpc_cached_wakeup_fd* fd) {
|
|
307
307
|
}
|
308
308
|
}
|
309
309
|
|
310
|
-
|
311
|
-
|
312
|
-
|
310
|
+
/*******************************************************************************
|
311
|
+
* fd_posix.c
|
312
|
+
*/
|
313
313
|
|
314
314
|
#ifndef NDEBUG
|
315
315
|
#define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
|
@@ -81,11 +81,10 @@ static const char* g_poll_strategy_name = nullptr;
|
|
81
81
|
typedef const grpc_event_engine_vtable* (*event_engine_factory_fn)(
|
82
82
|
bool explicit_request);
|
83
83
|
|
84
|
-
|
84
|
+
struct event_engine_factory {
|
85
85
|
const char* name;
|
86
86
|
event_engine_factory_fn factory;
|
87
|
-
}
|
88
|
-
|
87
|
+
};
|
89
88
|
namespace {
|
90
89
|
|
91
90
|
grpc_poll_function_type real_poll_function;
|
@@ -21,6 +21,8 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <limits>
|
25
|
+
|
24
26
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
27
|
#include <grpc/support/atm.h>
|
26
28
|
#include <grpc/support/cpu.h>
|
@@ -132,7 +134,12 @@ class ExecCtx {
|
|
132
134
|
ExecCtx(const ExecCtx&) = delete;
|
133
135
|
ExecCtx& operator=(const ExecCtx&) = delete;
|
134
136
|
|
135
|
-
unsigned starting_cpu()
|
137
|
+
unsigned starting_cpu() {
|
138
|
+
if (starting_cpu_ == std::numeric_limits<unsigned>::max()) {
|
139
|
+
starting_cpu_ = gpr_cpu_current_cpu();
|
140
|
+
}
|
141
|
+
return starting_cpu_;
|
142
|
+
}
|
136
143
|
|
137
144
|
struct CombinerData {
|
138
145
|
/* currently active combiner: updated only via combiner.c */
|
@@ -239,7 +246,7 @@ class ExecCtx {
|
|
239
246
|
CombinerData combiner_data_ = {nullptr, nullptr};
|
240
247
|
uintptr_t flags_;
|
241
248
|
|
242
|
-
unsigned starting_cpu_ =
|
249
|
+
unsigned starting_cpu_ = std::numeric_limits<unsigned>::max();
|
243
250
|
|
244
251
|
bool now_is_valid_ = false;
|
245
252
|
grpc_millis now_ = 0;
|
@@ -357,6 +364,11 @@ class ApplicationCallbackExecCtx {
|
|
357
364
|
/** Global shutdown for ApplicationCallbackExecCtx. Called by init. */
|
358
365
|
static void GlobalShutdown(void) { gpr_tls_destroy(&callback_exec_ctx_); }
|
359
366
|
|
367
|
+
static bool Available() {
|
368
|
+
return reinterpret_cast<ApplicationCallbackExecCtx*>(
|
369
|
+
gpr_tls_get(&callback_exec_ctx_)) != nullptr;
|
370
|
+
}
|
371
|
+
|
360
372
|
private:
|
361
373
|
uintptr_t flags_{0u};
|
362
374
|
grpc_experimental_completion_queue_functor* head_{nullptr};
|
@@ -16,6 +16,20 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
+
/// CFStream is build-enabled on iOS by default and disabled by default on other
|
20
|
+
/// platforms (see port_platform.h). To enable CFStream build on another
|
21
|
+
/// platform, the users need to define macro "GRPC_CFSTREAM=1" when building
|
22
|
+
/// gRPC.
|
23
|
+
///
|
24
|
+
/// When CFStream is to be built (either by default on iOS or by macro on other
|
25
|
+
/// platforms), the users can disable CFStream with environment variable
|
26
|
+
/// "grpc_cfstream=0". This will let gRPC to fallback to use POSIX sockets. In
|
27
|
+
/// addition, the users may choose to use an alternative CFRunLoop based pollset
|
28
|
+
/// "ev_apple" by setting environment variable "GRPC_CFSTREAM_RUN_LOOP=1". This
|
29
|
+
/// pollset resolves a bug from Apple when CFStream streams dispatch events to
|
30
|
+
/// dispatch queues. The caveat of this pollset is that users may not be able to
|
31
|
+
/// run a gRPC server in the same process.
|
32
|
+
|
19
33
|
#include <grpc/support/port_platform.h>
|
20
34
|
|
21
35
|
#include "src/core/lib/iomgr/port.h"
|
@@ -23,6 +37,7 @@
|
|
23
37
|
#ifdef GRPC_CFSTREAM_IOMGR
|
24
38
|
|
25
39
|
#include "src/core/lib/debug/trace.h"
|
40
|
+
#include "src/core/lib/iomgr/ev_apple.h"
|
26
41
|
#include "src/core/lib/iomgr/ev_posix.h"
|
27
42
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
28
43
|
#include "src/core/lib/iomgr/iomgr_posix.h"
|
@@ -33,6 +48,7 @@
|
|
33
48
|
#include "src/core/lib/iomgr/timer.h"
|
34
49
|
|
35
50
|
static const char* grpc_cfstream_env_var = "grpc_cfstream";
|
51
|
+
static const char* grpc_cfstream_run_loop_env_var = "GRPC_CFSTREAM_RUN_LOOP";
|
36
52
|
|
37
53
|
extern grpc_tcp_server_vtable grpc_posix_tcp_server_vtable;
|
38
54
|
extern grpc_tcp_client_vtable grpc_posix_tcp_client_vtable;
|
@@ -42,6 +58,33 @@ extern grpc_pollset_vtable grpc_posix_pollset_vtable;
|
|
42
58
|
extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
|
43
59
|
extern grpc_address_resolver_vtable grpc_posix_resolver_vtable;
|
44
60
|
|
61
|
+
static void apple_iomgr_platform_init(void) { grpc_pollset_global_init(); }
|
62
|
+
|
63
|
+
static void apple_iomgr_platform_flush(void) {}
|
64
|
+
|
65
|
+
static void apple_iomgr_platform_shutdown(void) {
|
66
|
+
grpc_pollset_global_shutdown();
|
67
|
+
}
|
68
|
+
|
69
|
+
static void apple_iomgr_platform_shutdown_background_closure(void) {}
|
70
|
+
|
71
|
+
static bool apple_iomgr_platform_is_any_background_poller_thread(void) {
|
72
|
+
return false;
|
73
|
+
}
|
74
|
+
|
75
|
+
static bool apple_iomgr_platform_add_closure_to_background_poller(
|
76
|
+
grpc_closure* closure, grpc_error* error) {
|
77
|
+
return false;
|
78
|
+
}
|
79
|
+
|
80
|
+
static grpc_iomgr_platform_vtable apple_vtable = {
|
81
|
+
apple_iomgr_platform_init,
|
82
|
+
apple_iomgr_platform_flush,
|
83
|
+
apple_iomgr_platform_shutdown,
|
84
|
+
apple_iomgr_platform_shutdown_background_closure,
|
85
|
+
apple_iomgr_platform_is_any_background_poller_thread,
|
86
|
+
apple_iomgr_platform_add_closure_to_background_poller};
|
87
|
+
|
45
88
|
static void iomgr_platform_init(void) {
|
46
89
|
grpc_wakeup_fd_global_init();
|
47
90
|
grpc_event_engine_init();
|
@@ -76,32 +119,53 @@ static grpc_iomgr_platform_vtable vtable = {
|
|
76
119
|
iomgr_platform_add_closure_to_background_poller};
|
77
120
|
|
78
121
|
void grpc_set_default_iomgr_platform() {
|
79
|
-
char*
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
//
|
84
|
-
|
85
|
-
|
86
|
-
|
122
|
+
char* enable_cfstream_str = getenv(grpc_cfstream_env_var);
|
123
|
+
bool enable_cfstream =
|
124
|
+
enable_cfstream_str == nullptr || enable_cfstream_str[0] != '0';
|
125
|
+
char* enable_cfstream_run_loop_str = getenv(grpc_cfstream_run_loop_env_var);
|
126
|
+
// CFStream run-loop is disabled by default. The user has to enable it
|
127
|
+
// explicitly with environment variable.
|
128
|
+
bool enable_cfstream_run_loop = enable_cfstream_run_loop_str != nullptr &&
|
129
|
+
enable_cfstream_run_loop_str[0] == '1';
|
130
|
+
if (!enable_cfstream) {
|
131
|
+
// Use POSIX sockets for both client and server
|
132
|
+
grpc_set_tcp_client_impl(&grpc_posix_tcp_client_vtable);
|
133
|
+
grpc_set_tcp_server_impl(&grpc_posix_tcp_server_vtable);
|
134
|
+
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
135
|
+
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
136
|
+
grpc_set_iomgr_platform_vtable(&vtable);
|
137
|
+
} else if (enable_cfstream && !enable_cfstream_run_loop) {
|
138
|
+
// Use CFStream with dispatch queue for client; use POSIX sockets for server
|
139
|
+
grpc_set_tcp_client_impl(&grpc_cfstream_client_vtable);
|
140
|
+
grpc_set_tcp_server_impl(&grpc_posix_tcp_server_vtable);
|
141
|
+
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
142
|
+
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
143
|
+
grpc_set_iomgr_platform_vtable(&vtable);
|
144
|
+
} else {
|
145
|
+
// Use CFStream with CFRunLoop for client; server not supported
|
146
|
+
grpc_set_tcp_client_impl(&grpc_cfstream_client_vtable);
|
147
|
+
grpc_set_pollset_vtable(&grpc_apple_pollset_vtable);
|
148
|
+
grpc_set_pollset_set_vtable(&grpc_apple_pollset_set_vtable);
|
149
|
+
grpc_set_iomgr_platform_vtable(&apple_vtable);
|
87
150
|
}
|
88
|
-
#else
|
89
|
-
if (enable_cfstream != nullptr && enable_cfstream[0] == '1') {
|
90
|
-
client_vtable = &grpc_cfstream_client_vtable;
|
91
|
-
}
|
92
|
-
#endif
|
93
|
-
|
94
|
-
grpc_set_tcp_client_impl(client_vtable);
|
95
|
-
grpc_set_tcp_server_impl(&grpc_posix_tcp_server_vtable);
|
96
151
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
97
|
-
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
98
|
-
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
99
152
|
grpc_set_resolver_impl(&grpc_posix_resolver_vtable);
|
100
|
-
grpc_set_iomgr_platform_vtable(&vtable);
|
101
153
|
}
|
102
154
|
|
103
155
|
bool grpc_iomgr_run_in_background() {
|
104
|
-
|
156
|
+
char* enable_cfstream_str = getenv(grpc_cfstream_env_var);
|
157
|
+
bool enable_cfstream =
|
158
|
+
enable_cfstream_str == nullptr || enable_cfstream_str[0] != '0';
|
159
|
+
char* enable_cfstream_run_loop_str = getenv(grpc_cfstream_run_loop_env_var);
|
160
|
+
// CFStream run-loop is disabled by default. The user has to enable it
|
161
|
+
// explicitly with environment variable.
|
162
|
+
bool enable_cfstream_run_loop = enable_cfstream_run_loop_str != nullptr &&
|
163
|
+
enable_cfstream_run_loop_str[0] == '1';
|
164
|
+
if (enable_cfstream && enable_cfstream_run_loop) {
|
165
|
+
return false;
|
166
|
+
} else {
|
167
|
+
return grpc_event_engine_run_in_background();
|
168
|
+
}
|
105
169
|
}
|
106
170
|
|
107
171
|
#endif /* GRPC_CFSTREAM_IOMGR */
|
@@ -22,23 +22,23 @@
|
|
22
22
|
|
23
23
|
#include "src/core/lib/iomgr/pollset_set.h"
|
24
24
|
|
25
|
-
grpc_pollset_set* pollset_set_create(void) {
|
25
|
+
static grpc_pollset_set* pollset_set_create(void) {
|
26
26
|
return (grpc_pollset_set*)((intptr_t)0xdeafbeef);
|
27
27
|
}
|
28
28
|
|
29
|
-
void pollset_set_destroy(grpc_pollset_set* /*pollset_set*/) {}
|
29
|
+
static void pollset_set_destroy(grpc_pollset_set* /*pollset_set*/) {}
|
30
30
|
|
31
|
-
void pollset_set_add_pollset(grpc_pollset_set* /*pollset_set*/,
|
32
|
-
|
31
|
+
static void pollset_set_add_pollset(grpc_pollset_set* /*pollset_set*/,
|
32
|
+
grpc_pollset* /*pollset*/) {}
|
33
33
|
|
34
|
-
void pollset_set_del_pollset(grpc_pollset_set* /*pollset_set*/,
|
35
|
-
|
34
|
+
static void pollset_set_del_pollset(grpc_pollset_set* /*pollset_set*/,
|
35
|
+
grpc_pollset* /*pollset*/) {}
|
36
36
|
|
37
|
-
void pollset_set_add_pollset_set(grpc_pollset_set* /*bag*/,
|
38
|
-
|
37
|
+
static void pollset_set_add_pollset_set(grpc_pollset_set* /*bag*/,
|
38
|
+
grpc_pollset_set* /*item*/) {}
|
39
39
|
|
40
|
-
void pollset_set_del_pollset_set(grpc_pollset_set* /*bag*/,
|
41
|
-
|
40
|
+
static void pollset_set_del_pollset_set(grpc_pollset_set* /*bag*/,
|
41
|
+
grpc_pollset_set* /*item*/) {}
|
42
42
|
|
43
43
|
static grpc_pollset_set_vtable vtable = {
|
44
44
|
pollset_set_create, pollset_set_destroy,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright
|
3
|
+
* Copyright 2016 gRPC authors.
|
4
4
|
*
|
5
5
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
6
|
* you may not use this file except in compliance with the License.
|
@@ -16,18 +16,17 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_IOMGR_POLLSET_UV_H
|
20
|
+
#define GRPC_CORE_LIB_IOMGR_POLLSET_UV_H
|
21
21
|
|
22
|
-
|
22
|
+
extern int grpc_pollset_work_run_loop;
|
23
23
|
|
24
|
-
|
24
|
+
typedef struct grpc_custom_poller_vtable {
|
25
|
+
void (*init)(void);
|
26
|
+
void (*run_loop)(int blocking);
|
27
|
+
} grpc_custom_poller_vtable;
|
25
28
|
|
26
|
-
|
29
|
+
void grpc_custom_pollset_global_init(grpc_custom_poller_vtable* vtable);
|
30
|
+
void grpc_custom_pollset_global_shutdown(void);
|
27
31
|
|
28
|
-
|
29
|
-
using Optional = absl::optional<T>;
|
30
|
-
|
31
|
-
} // namespace grpc_core
|
32
|
-
|
33
|
-
#endif /* GRPC_CORE_LIB_GPRPP_OPTIONAL_H */
|
32
|
+
#endif /* GRPC_CORE_LIB_IOMGR_POLLSET_UV_H */
|
data/src/core/lib/iomgr/port.h
CHANGED
@@ -129,6 +129,7 @@
|
|
129
129
|
#define GRPC_CFSTREAM_IOMGR 1
|
130
130
|
#define GRPC_CFSTREAM_CLIENT 1
|
131
131
|
#define GRPC_CFSTREAM_ENDPOINT 1
|
132
|
+
#define GRPC_APPLE_EV 1
|
132
133
|
#define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
|
133
134
|
#define GRPC_POSIX_SOCKET_EV 1
|
134
135
|
#define GRPC_POSIX_SOCKET_EV_EPOLL1 1
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2018 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
|
+
#ifndef GRPC_CORE_LIB_IOMGR_PYTHON_UTIL_H
|
20
|
+
#define GRPC_CORE_LIB_IOMGR_PYTHON_UTIL_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <grpc/impl/codegen/slice.h>
|
25
|
+
#include <grpc/status.h>
|
26
|
+
#include "src/core/lib/iomgr/error.h"
|
27
|
+
|
28
|
+
// These are only used by the gRPC Python extensions.
|
29
|
+
// They are easier to define here (rather than in Cython)
|
30
|
+
// because Cython doesn't handle #defines well.
|
31
|
+
|
32
|
+
grpc_error* grpc_socket_error(char* error) {
|
33
|
+
return grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error),
|
34
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
35
|
+
GRPC_STATUS_UNAVAILABLE);
|
36
|
+
}
|
37
|
+
|
38
|
+
char* grpc_slice_buffer_start(grpc_slice_buffer* buffer, int i) {
|
39
|
+
return (char*)GRPC_SLICE_START_PTR(buffer->slices[i]);
|
40
|
+
}
|
41
|
+
|
42
|
+
int grpc_slice_buffer_length(grpc_slice_buffer* buffer, int i) {
|
43
|
+
return GRPC_SLICE_LENGTH(buffer->slices[i]);
|
44
|
+
}
|
45
|
+
|
46
|
+
#endif
|