grpc 1.48.0 → 1.49.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +125 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +102 -131
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +63 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +38 -17
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +42 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +44 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +2 -12
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +88 -36
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -0,0 +1,68 @@
|
|
1
|
+
// Copyright 2022 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_IOCP_H
|
15
|
+
#define GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_IOCP_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#ifdef GPR_WINDOWS
|
20
|
+
|
21
|
+
#include "absl/status/status.h"
|
22
|
+
|
23
|
+
#include <grpc/event_engine/event_engine.h>
|
24
|
+
|
25
|
+
#include "src/core/lib/event_engine/executor/executor.h"
|
26
|
+
#include "src/core/lib/event_engine/poller.h"
|
27
|
+
#include "src/core/lib/event_engine/windows/win_socket.h"
|
28
|
+
|
29
|
+
namespace grpc_event_engine {
|
30
|
+
namespace experimental {
|
31
|
+
|
32
|
+
class IOCP final : public Poller {
|
33
|
+
public:
|
34
|
+
explicit IOCP(Executor* executor) noexcept;
|
35
|
+
~IOCP();
|
36
|
+
// Not copyable
|
37
|
+
IOCP(const IOCP&) = delete;
|
38
|
+
IOCP& operator=(const IOCP&) = delete;
|
39
|
+
// Not moveable
|
40
|
+
IOCP(IOCP&& other) = delete;
|
41
|
+
IOCP& operator=(IOCP&& other) = delete;
|
42
|
+
|
43
|
+
// interface methods
|
44
|
+
void Shutdown();
|
45
|
+
WorkResult Work(EventEngine::Duration timeout) override;
|
46
|
+
void Kick() override;
|
47
|
+
|
48
|
+
WinSocket* Watch(SOCKET socket);
|
49
|
+
// Return the set of default flags
|
50
|
+
static DWORD GetDefaultSocketFlags();
|
51
|
+
|
52
|
+
private:
|
53
|
+
// Initialize default flags via checking platform support
|
54
|
+
static DWORD WSASocketFlagsInit();
|
55
|
+
|
56
|
+
Executor* executor_;
|
57
|
+
HANDLE iocp_handle_;
|
58
|
+
OVERLAPPED kick_overlap_;
|
59
|
+
ULONG kick_token_;
|
60
|
+
std::atomic<int> outstanding_kicks_{0};
|
61
|
+
};
|
62
|
+
|
63
|
+
} // namespace experimental
|
64
|
+
} // namespace grpc_event_engine
|
65
|
+
|
66
|
+
#endif
|
67
|
+
|
68
|
+
#endif // GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_IOCP_H
|
@@ -0,0 +1,196 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#ifdef GPR_WINDOWS
|
17
|
+
#include <grpc/support/alloc.h>
|
18
|
+
#include <grpc/support/log_windows.h>
|
19
|
+
|
20
|
+
#include "src/core/lib/event_engine/executor/executor.h"
|
21
|
+
#include "src/core/lib/event_engine/trace.h"
|
22
|
+
#include "src/core/lib/event_engine/windows/win_socket.h"
|
23
|
+
#include "src/core/lib/gprpp/sync.h"
|
24
|
+
#include "src/core/lib/iomgr/error.h"
|
25
|
+
|
26
|
+
#if defined(__MSYS__) && defined(GPR_ARCH_64)
|
27
|
+
/* Nasty workaround for nasty bug when using the 64 bits msys compiler
|
28
|
+
in conjunction with Microsoft Windows headers. */
|
29
|
+
#define GRPC_FIONBIO _IOW('f', 126, uint32_t)
|
30
|
+
#else
|
31
|
+
#define GRPC_FIONBIO FIONBIO
|
32
|
+
#endif
|
33
|
+
|
34
|
+
namespace grpc_event_engine {
|
35
|
+
namespace experimental {
|
36
|
+
|
37
|
+
WinSocket::WinSocket(SOCKET socket, Executor* executor) noexcept
|
38
|
+
: socket_(socket),
|
39
|
+
executor_(executor),
|
40
|
+
read_info_(OpState(this)),
|
41
|
+
write_info_(OpState(this)) {}
|
42
|
+
|
43
|
+
WinSocket::~WinSocket() { GPR_ASSERT(is_shutdown_.load()); }
|
44
|
+
|
45
|
+
SOCKET WinSocket::socket() { return socket_; }
|
46
|
+
|
47
|
+
void WinSocket::MaybeShutdown(absl::Status why) {
|
48
|
+
// if already shutdown, return early. Otherwise, set the shutdown flag.
|
49
|
+
if (is_shutdown_.exchange(true)) {
|
50
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
|
51
|
+
gpr_log(GPR_DEBUG, "WinSocket::%p already shutting down", this);
|
52
|
+
}
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
|
56
|
+
gpr_log(GPR_DEBUG, "WinSocket::%p shutting down now. Reason: %s", this,
|
57
|
+
why.ToString().c_str());
|
58
|
+
}
|
59
|
+
// Grab the function pointer for DisconnectEx for that specific socket.
|
60
|
+
// It may change depending on the interface.
|
61
|
+
GUID guid = WSAID_DISCONNECTEX;
|
62
|
+
LPFN_DISCONNECTEX DisconnectEx;
|
63
|
+
DWORD ioctl_num_bytes;
|
64
|
+
int status = WSAIoctl(socket_, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid,
|
65
|
+
sizeof(guid), &DisconnectEx, sizeof(DisconnectEx),
|
66
|
+
&ioctl_num_bytes, NULL, NULL);
|
67
|
+
|
68
|
+
if (status == 0) {
|
69
|
+
DisconnectEx(socket_, NULL, 0, 0);
|
70
|
+
} else {
|
71
|
+
char* utf8_message = gpr_format_message(WSAGetLastError());
|
72
|
+
gpr_log(GPR_INFO, "Unable to retrieve DisconnectEx pointer : %s",
|
73
|
+
utf8_message);
|
74
|
+
gpr_free(utf8_message);
|
75
|
+
}
|
76
|
+
closesocket(socket_);
|
77
|
+
}
|
78
|
+
|
79
|
+
void WinSocket::NotifyOnReady(OpState& info, EventEngine::Closure* closure) {
|
80
|
+
if (IsShutdown()) {
|
81
|
+
info.SetError(WSAESHUTDOWN);
|
82
|
+
executor_->Run(closure);
|
83
|
+
return;
|
84
|
+
};
|
85
|
+
if (absl::exchange(info.has_pending_iocp_, false)) {
|
86
|
+
executor_->Run(closure);
|
87
|
+
} else {
|
88
|
+
info.closure_ = closure;
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
void WinSocket::NotifyOnRead(EventEngine::Closure* on_read) {
|
93
|
+
NotifyOnReady(read_info_, on_read);
|
94
|
+
}
|
95
|
+
|
96
|
+
void WinSocket::NotifyOnWrite(EventEngine::Closure* on_write) {
|
97
|
+
NotifyOnReady(write_info_, on_write);
|
98
|
+
}
|
99
|
+
|
100
|
+
WinSocket::OpState::OpState(WinSocket* win_socket) noexcept
|
101
|
+
: win_socket_(win_socket), closure_(nullptr) {}
|
102
|
+
|
103
|
+
void WinSocket::OpState::SetReady() {
|
104
|
+
GPR_ASSERT(!has_pending_iocp_);
|
105
|
+
if (closure_) {
|
106
|
+
win_socket_->executor_->Run(closure_);
|
107
|
+
} else {
|
108
|
+
has_pending_iocp_ = true;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
void WinSocket::OpState::SetError(int wsa_error) {
|
113
|
+
bytes_transferred_ = 0;
|
114
|
+
wsa_error_ = wsa_error;
|
115
|
+
}
|
116
|
+
|
117
|
+
void WinSocket::OpState::GetOverlappedResult() {
|
118
|
+
DWORD flags = 0;
|
119
|
+
DWORD bytes;
|
120
|
+
BOOL success = WSAGetOverlappedResult(win_socket_->socket(), &overlapped_,
|
121
|
+
&bytes, FALSE, &flags);
|
122
|
+
bytes_transferred_ = bytes;
|
123
|
+
wsa_error_ = success ? 0 : WSAGetLastError();
|
124
|
+
}
|
125
|
+
|
126
|
+
void WinSocket::SetReadable() { read_info_.SetReady(); }
|
127
|
+
|
128
|
+
void WinSocket::SetWritable() { write_info_.SetReady(); }
|
129
|
+
|
130
|
+
bool WinSocket::IsShutdown() { return is_shutdown_.load(); }
|
131
|
+
|
132
|
+
WinSocket::OpState* WinSocket::GetOpInfoForOverlapped(OVERLAPPED* overlapped) {
|
133
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
|
134
|
+
gpr_log(GPR_DEBUG,
|
135
|
+
"WinSocket::%p looking for matching OVERLAPPED::%p. "
|
136
|
+
"read(%p) write(%p)",
|
137
|
+
this, overlapped, &read_info_.overlapped_,
|
138
|
+
&write_info_.overlapped_);
|
139
|
+
}
|
140
|
+
if (overlapped == &read_info_.overlapped_) return &read_info_;
|
141
|
+
if (overlapped == &write_info_.overlapped_) return &write_info_;
|
142
|
+
return nullptr;
|
143
|
+
}
|
144
|
+
|
145
|
+
namespace {
|
146
|
+
|
147
|
+
grpc_error_handle grpc_tcp_set_non_block(SOCKET sock) {
|
148
|
+
int status;
|
149
|
+
uint32_t param = 1;
|
150
|
+
DWORD ret;
|
151
|
+
status = WSAIoctl(sock, GRPC_FIONBIO, ¶m, sizeof(param), NULL, 0, &ret,
|
152
|
+
NULL, NULL);
|
153
|
+
return status == 0
|
154
|
+
? GRPC_ERROR_NONE
|
155
|
+
: GRPC_WSA_ERROR(WSAGetLastError(), "WSAIoctl(GRPC_FIONBIO)");
|
156
|
+
}
|
157
|
+
|
158
|
+
static grpc_error_handle set_dualstack(SOCKET sock) {
|
159
|
+
int status;
|
160
|
+
DWORD param = 0;
|
161
|
+
status = setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)¶m,
|
162
|
+
sizeof(param));
|
163
|
+
return status == 0
|
164
|
+
? GRPC_ERROR_NONE
|
165
|
+
: GRPC_WSA_ERROR(WSAGetLastError(), "setsockopt(IPV6_V6ONLY)");
|
166
|
+
}
|
167
|
+
|
168
|
+
static grpc_error_handle enable_socket_low_latency(SOCKET sock) {
|
169
|
+
int status;
|
170
|
+
BOOL param = TRUE;
|
171
|
+
status = ::setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
|
172
|
+
reinterpret_cast<char*>(¶m), sizeof(param));
|
173
|
+
if (status == SOCKET_ERROR) {
|
174
|
+
status = WSAGetLastError();
|
175
|
+
}
|
176
|
+
return status == 0 ? GRPC_ERROR_NONE
|
177
|
+
: GRPC_WSA_ERROR(status, "setsockopt(TCP_NODELAY)");
|
178
|
+
}
|
179
|
+
|
180
|
+
} // namespace
|
181
|
+
|
182
|
+
absl::Status PrepareSocket(SOCKET sock) {
|
183
|
+
absl::Status err;
|
184
|
+
err = grpc_tcp_set_non_block(sock);
|
185
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
186
|
+
err = enable_socket_low_latency(sock);
|
187
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
188
|
+
err = set_dualstack(sock);
|
189
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
190
|
+
return GRPC_ERROR_NONE;
|
191
|
+
}
|
192
|
+
|
193
|
+
} // namespace experimental
|
194
|
+
} // namespace grpc_event_engine
|
195
|
+
|
196
|
+
#endif // GPR_WINDOWS
|
@@ -0,0 +1,120 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WIN_SOCKET_H
|
15
|
+
#define GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WIN_SOCKET_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#ifdef GPR_WINDOWS
|
20
|
+
|
21
|
+
#include "absl/base/thread_annotations.h"
|
22
|
+
#include "absl/functional/any_invocable.h"
|
23
|
+
|
24
|
+
#include <grpc/event_engine/event_engine.h>
|
25
|
+
|
26
|
+
#include "src/core/lib/event_engine/executor/executor.h"
|
27
|
+
#include "src/core/lib/event_engine/socket_notifier.h"
|
28
|
+
#include "src/core/lib/gprpp/sync.h"
|
29
|
+
|
30
|
+
namespace grpc_event_engine {
|
31
|
+
namespace experimental {
|
32
|
+
|
33
|
+
class WinSocket final : public SocketNotifier {
|
34
|
+
public:
|
35
|
+
// State related to a Read or Write socket operation
|
36
|
+
class OpState {
|
37
|
+
public:
|
38
|
+
explicit OpState(WinSocket* win_socket) noexcept;
|
39
|
+
// Signal a result has returned
|
40
|
+
// If a callback is already primed for notification, it will be executed via
|
41
|
+
// the WinSocket's Executor. Otherwise, a "pending iocp" flag will
|
42
|
+
// be set.
|
43
|
+
void SetReady();
|
44
|
+
// Set error results for a completed op
|
45
|
+
void SetError(int wsa_error);
|
46
|
+
// Retrieve results of overlapped operation (via Winsock API)
|
47
|
+
void GetOverlappedResult();
|
48
|
+
// OVERLAPPED, needed for Winsock API calls
|
49
|
+
LPOVERLAPPED overlapped() { return &overlapped_; }
|
50
|
+
// Data from the previous operation, set via GetOverlappedResult
|
51
|
+
DWORD bytes_transferred() const { return bytes_transferred_; }
|
52
|
+
// Previous error if set.
|
53
|
+
int wsa_error() const { return wsa_error_; }
|
54
|
+
EventEngine::Closure* closure() { return closure_; }
|
55
|
+
|
56
|
+
private:
|
57
|
+
friend class WinSocket;
|
58
|
+
|
59
|
+
OVERLAPPED overlapped_;
|
60
|
+
WinSocket* win_socket_ = nullptr;
|
61
|
+
EventEngine::Closure* closure_ = nullptr;
|
62
|
+
bool has_pending_iocp_ = false;
|
63
|
+
DWORD bytes_transferred_;
|
64
|
+
int wsa_error_;
|
65
|
+
};
|
66
|
+
|
67
|
+
WinSocket(SOCKET socket, Executor* executor) noexcept;
|
68
|
+
~WinSocket();
|
69
|
+
// Calling NotifyOnRead means either of two things:
|
70
|
+
// - The IOCP already completed in the background, and we need to call
|
71
|
+
// the callback now.
|
72
|
+
// - The IOCP hasn't completed yet, and we're queuing it for later.
|
73
|
+
void NotifyOnRead(EventEngine::Closure* on_read) override;
|
74
|
+
void NotifyOnWrite(EventEngine::Closure* on_write) override;
|
75
|
+
void SetReadable() override;
|
76
|
+
void SetWritable() override;
|
77
|
+
// Schedule a shutdown of the socket operations. Will call the pending
|
78
|
+
// operations to abort them. We need to do that this way because of the
|
79
|
+
// various callsites of that function, which happens to be in various
|
80
|
+
// mutex hold states, and that'd be unsafe to call them directly.
|
81
|
+
void MaybeShutdown(absl::Status why) override;
|
82
|
+
bool IsShutdown() override;
|
83
|
+
|
84
|
+
// Return the appropriate OpState for a given OVERLAPPED
|
85
|
+
// Returns nullptr if the overlapped does not match either read or write ops.
|
86
|
+
OpState* GetOpInfoForOverlapped(OVERLAPPED* overlapped);
|
87
|
+
// Getters for the operation state data.
|
88
|
+
OpState* read_info() { return &read_info_; }
|
89
|
+
OpState* write_info() { return &write_info_; }
|
90
|
+
// Accessor method for underlying socket
|
91
|
+
SOCKET socket();
|
92
|
+
|
93
|
+
private:
|
94
|
+
void NotifyOnReady(OpState& info, EventEngine::Closure* closure);
|
95
|
+
|
96
|
+
SOCKET socket_;
|
97
|
+
std::atomic<bool> is_shutdown_{false};
|
98
|
+
Executor* executor_;
|
99
|
+
// These OpStates are effectively synchronized using their respective
|
100
|
+
// OVERLAPPED structures and the Overlapped I/O APIs. For example, OpState
|
101
|
+
// users should not attempt to read their bytes_transeferred until
|
102
|
+
// GetOverlappedResult has returned, to ensure there are no two threads
|
103
|
+
// reading and writing the same values concurrently.
|
104
|
+
//
|
105
|
+
// Callers must also ensure that at most one read and write operation are
|
106
|
+
// occurring at a time. Attempting to do multiple concurrent reads/writes will
|
107
|
+
// have undefined behavior.
|
108
|
+
OpState read_info_;
|
109
|
+
OpState write_info_;
|
110
|
+
};
|
111
|
+
|
112
|
+
// Attempt to configure default socket settings
|
113
|
+
absl::Status PrepareSocket(SOCKET sock);
|
114
|
+
|
115
|
+
} // namespace experimental
|
116
|
+
} // namespace grpc_event_engine
|
117
|
+
|
118
|
+
#endif
|
119
|
+
|
120
|
+
#endif // GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WIN_SOCKET_H
|
@@ -0,0 +1,159 @@
|
|
1
|
+
// Copyright 2022 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#ifdef GPR_WINDOWS
|
17
|
+
|
18
|
+
#include <memory>
|
19
|
+
|
20
|
+
#include "absl/status/status.h"
|
21
|
+
#include "absl/status/statusor.h"
|
22
|
+
#include "absl/strings/string_view.h"
|
23
|
+
|
24
|
+
#include <grpc/event_engine/endpoint_config.h>
|
25
|
+
#include <grpc/event_engine/event_engine.h>
|
26
|
+
#include <grpc/event_engine/memory_allocator.h>
|
27
|
+
#include <grpc/event_engine/slice_buffer.h>
|
28
|
+
|
29
|
+
#include "src/core/lib/event_engine/executor/threaded_executor.h"
|
30
|
+
#include "src/core/lib/event_engine/handle_containers.h"
|
31
|
+
#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
|
32
|
+
#include "src/core/lib/event_engine/trace.h"
|
33
|
+
#include "src/core/lib/event_engine/utils.h"
|
34
|
+
#include "src/core/lib/event_engine/windows/iocp.h"
|
35
|
+
#include "src/core/lib/event_engine/windows/windows_engine.h"
|
36
|
+
#include "src/core/lib/gprpp/sync.h"
|
37
|
+
#include "src/core/lib/gprpp/time.h"
|
38
|
+
|
39
|
+
namespace grpc_event_engine {
|
40
|
+
namespace experimental {
|
41
|
+
|
42
|
+
// TODO(hork): The iomgr timer and execution engine can be reused. It should
|
43
|
+
// be separated out from the posix_engine and instantiated as components. It is
|
44
|
+
// effectively copied below.
|
45
|
+
|
46
|
+
struct WindowsEventEngine::Closure final : public EventEngine::Closure {
|
47
|
+
absl::AnyInvocable<void()> cb;
|
48
|
+
posix_engine::Timer timer;
|
49
|
+
WindowsEventEngine* engine;
|
50
|
+
EventEngine::TaskHandle handle;
|
51
|
+
|
52
|
+
void Run() override {
|
53
|
+
GRPC_EVENT_ENGINE_TRACE("WindowsEventEngine:%p executing callback:%s",
|
54
|
+
engine, HandleToString(handle).c_str());
|
55
|
+
{
|
56
|
+
grpc_core::MutexLock lock(&engine->mu_);
|
57
|
+
engine->known_handles_.erase(handle);
|
58
|
+
}
|
59
|
+
cb();
|
60
|
+
delete this;
|
61
|
+
}
|
62
|
+
};
|
63
|
+
|
64
|
+
WindowsEventEngine::WindowsEventEngine() : iocp_(&executor_) {
|
65
|
+
WSADATA wsaData;
|
66
|
+
int status = WSAStartup(MAKEWORD(2, 0), &wsaData);
|
67
|
+
GPR_ASSERT(status == 0);
|
68
|
+
}
|
69
|
+
|
70
|
+
WindowsEventEngine::~WindowsEventEngine() {
|
71
|
+
grpc_core::MutexLock lock(&mu_);
|
72
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
|
73
|
+
for (auto handle : known_handles_) {
|
74
|
+
gpr_log(GPR_ERROR,
|
75
|
+
"WindowsEventEngine:%p uncleared TaskHandle at shutdown:%s", this,
|
76
|
+
HandleToString(handle).c_str());
|
77
|
+
}
|
78
|
+
}
|
79
|
+
GPR_ASSERT(GPR_LIKELY(known_handles_.empty()));
|
80
|
+
GPR_ASSERT(WSACleanup() == 0);
|
81
|
+
}
|
82
|
+
|
83
|
+
bool WindowsEventEngine::Cancel(EventEngine::TaskHandle handle) {
|
84
|
+
grpc_core::MutexLock lock(&mu_);
|
85
|
+
if (!known_handles_.contains(handle)) return false;
|
86
|
+
auto* cd = reinterpret_cast<Closure*>(handle.keys[0]);
|
87
|
+
bool r = timer_manager_.TimerCancel(&cd->timer);
|
88
|
+
known_handles_.erase(handle);
|
89
|
+
if (r) delete cd;
|
90
|
+
return r;
|
91
|
+
}
|
92
|
+
|
93
|
+
EventEngine::TaskHandle WindowsEventEngine::RunAfter(
|
94
|
+
Duration when, absl::AnyInvocable<void()> closure) {
|
95
|
+
return RunAfterInternal(when, std::move(closure));
|
96
|
+
}
|
97
|
+
|
98
|
+
EventEngine::TaskHandle WindowsEventEngine::RunAfter(
|
99
|
+
Duration when, EventEngine::Closure* closure) {
|
100
|
+
return RunAfterInternal(when, [closure]() { closure->Run(); });
|
101
|
+
}
|
102
|
+
|
103
|
+
void WindowsEventEngine::Run(absl::AnyInvocable<void()> closure) {
|
104
|
+
executor_.Run(std::move(closure));
|
105
|
+
}
|
106
|
+
|
107
|
+
void WindowsEventEngine::Run(EventEngine::Closure* closure) {
|
108
|
+
executor_.Run(closure);
|
109
|
+
}
|
110
|
+
|
111
|
+
EventEngine::TaskHandle WindowsEventEngine::RunAfterInternal(
|
112
|
+
Duration when, absl::AnyInvocable<void()> cb) {
|
113
|
+
auto when_ts = ToTimestamp(timer_manager_.Now(), when);
|
114
|
+
auto* cd = new Closure;
|
115
|
+
cd->cb = std::move(cb);
|
116
|
+
cd->engine = this;
|
117
|
+
EventEngine::TaskHandle handle{reinterpret_cast<intptr_t>(cd),
|
118
|
+
aba_token_.fetch_add(1)};
|
119
|
+
grpc_core::MutexLock lock(&mu_);
|
120
|
+
known_handles_.insert(handle);
|
121
|
+
cd->handle = handle;
|
122
|
+
GRPC_EVENT_ENGINE_TRACE("WindowsEventEngine:%p scheduling callback:%s", this,
|
123
|
+
HandleToString(handle).c_str());
|
124
|
+
timer_manager_.TimerInit(&cd->timer, when_ts, cd);
|
125
|
+
return handle;
|
126
|
+
}
|
127
|
+
|
128
|
+
std::unique_ptr<EventEngine::DNSResolver> WindowsEventEngine::GetDNSResolver(
|
129
|
+
EventEngine::DNSResolver::ResolverOptions const& /*options*/) {
|
130
|
+
GPR_ASSERT(false && "unimplemented");
|
131
|
+
}
|
132
|
+
|
133
|
+
bool WindowsEventEngine::IsWorkerThread() {
|
134
|
+
GPR_ASSERT(false && "unimplemented");
|
135
|
+
}
|
136
|
+
|
137
|
+
bool WindowsEventEngine::CancelConnect(EventEngine::ConnectionHandle handle) {
|
138
|
+
GPR_ASSERT(false && "unimplemented");
|
139
|
+
}
|
140
|
+
|
141
|
+
EventEngine::ConnectionHandle WindowsEventEngine::Connect(
|
142
|
+
OnConnectCallback on_connect, const ResolvedAddress& addr,
|
143
|
+
const EndpointConfig& args, MemoryAllocator memory_allocator,
|
144
|
+
Duration deadline) {
|
145
|
+
GPR_ASSERT(false && "unimplemented");
|
146
|
+
}
|
147
|
+
|
148
|
+
absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
|
149
|
+
WindowsEventEngine::CreateListener(
|
150
|
+
Listener::AcceptCallback on_accept,
|
151
|
+
absl::AnyInvocable<void(absl::Status)> on_shutdown,
|
152
|
+
const EndpointConfig& config,
|
153
|
+
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) {
|
154
|
+
GPR_ASSERT(false && "unimplemented");
|
155
|
+
}
|
156
|
+
|
157
|
+
} // namespace experimental
|
158
|
+
} // namespace grpc_event_engine
|
159
|
+
#endif // GPR_WINDOWS
|
@@ -0,0 +1,120 @@
|
|
1
|
+
// Copyright 2022 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
|
15
|
+
#define GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
|
16
|
+
#include <grpc/support/port_platform.h>
|
17
|
+
|
18
|
+
#ifdef GPR_WINDOWS
|
19
|
+
|
20
|
+
#include <memory>
|
21
|
+
|
22
|
+
#include "absl/status/status.h"
|
23
|
+
#include "absl/status/statusor.h"
|
24
|
+
#include "absl/strings/string_view.h"
|
25
|
+
|
26
|
+
#include <grpc/event_engine/endpoint_config.h>
|
27
|
+
#include <grpc/event_engine/event_engine.h>
|
28
|
+
#include <grpc/event_engine/memory_allocator.h>
|
29
|
+
#include <grpc/event_engine/slice_buffer.h>
|
30
|
+
|
31
|
+
#include "src/core/lib/event_engine/executor/threaded_executor.h"
|
32
|
+
#include "src/core/lib/event_engine/handle_containers.h"
|
33
|
+
#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
|
34
|
+
#include "src/core/lib/event_engine/windows/iocp.h"
|
35
|
+
#include "src/core/lib/gprpp/sync.h"
|
36
|
+
#include "src/core/lib/gprpp/time.h"
|
37
|
+
|
38
|
+
namespace grpc_event_engine {
|
39
|
+
namespace experimental {
|
40
|
+
|
41
|
+
class WindowsEventEngine : public EventEngine {
|
42
|
+
public:
|
43
|
+
class WindowsEndpoint : public EventEngine::Endpoint {
|
44
|
+
public:
|
45
|
+
~WindowsEndpoint() override;
|
46
|
+
void Read(absl::AnyInvocable<void(absl::Status)> on_read,
|
47
|
+
SliceBuffer* buffer, const ReadArgs* args) override;
|
48
|
+
void Write(absl::AnyInvocable<void(absl::Status)> on_writable,
|
49
|
+
SliceBuffer* data, const WriteArgs* args) override;
|
50
|
+
const ResolvedAddress& GetPeerAddress() const override;
|
51
|
+
const ResolvedAddress& GetLocalAddress() const override;
|
52
|
+
};
|
53
|
+
class WindowsListener : public EventEngine::Listener {
|
54
|
+
public:
|
55
|
+
~WindowsListener() override;
|
56
|
+
absl::StatusOr<int> Bind(const ResolvedAddress& addr) override;
|
57
|
+
absl::Status Start() override;
|
58
|
+
};
|
59
|
+
class WindowsDNSResolver : public EventEngine::DNSResolver {
|
60
|
+
public:
|
61
|
+
~WindowsDNSResolver() override;
|
62
|
+
LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve,
|
63
|
+
absl::string_view name,
|
64
|
+
absl::string_view default_port,
|
65
|
+
Duration timeout) override;
|
66
|
+
LookupTaskHandle LookupSRV(LookupSRVCallback on_resolve,
|
67
|
+
absl::string_view name,
|
68
|
+
Duration timeout) override;
|
69
|
+
LookupTaskHandle LookupTXT(LookupTXTCallback on_resolve,
|
70
|
+
absl::string_view name,
|
71
|
+
Duration timeout) override;
|
72
|
+
bool CancelLookup(LookupTaskHandle handle) override;
|
73
|
+
};
|
74
|
+
|
75
|
+
WindowsEventEngine();
|
76
|
+
~WindowsEventEngine() override;
|
77
|
+
|
78
|
+
absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
|
79
|
+
Listener::AcceptCallback on_accept,
|
80
|
+
absl::AnyInvocable<void(absl::Status)> on_shutdown,
|
81
|
+
const EndpointConfig& config,
|
82
|
+
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory)
|
83
|
+
override;
|
84
|
+
|
85
|
+
ConnectionHandle Connect(OnConnectCallback on_connect,
|
86
|
+
const ResolvedAddress& addr,
|
87
|
+
const EndpointConfig& args,
|
88
|
+
MemoryAllocator memory_allocator,
|
89
|
+
Duration timeout) override;
|
90
|
+
|
91
|
+
bool CancelConnect(ConnectionHandle handle) override;
|
92
|
+
bool IsWorkerThread() override;
|
93
|
+
std::unique_ptr<DNSResolver> GetDNSResolver(
|
94
|
+
const DNSResolver::ResolverOptions& options) override;
|
95
|
+
void Run(Closure* closure) override;
|
96
|
+
void Run(absl::AnyInvocable<void()> closure) override;
|
97
|
+
TaskHandle RunAfter(Duration when, Closure* closure) override;
|
98
|
+
TaskHandle RunAfter(Duration when,
|
99
|
+
absl::AnyInvocable<void()> closure) override;
|
100
|
+
bool Cancel(TaskHandle handle) override;
|
101
|
+
|
102
|
+
private:
|
103
|
+
struct Closure;
|
104
|
+
EventEngine::TaskHandle RunAfterInternal(Duration when,
|
105
|
+
absl::AnyInvocable<void()> cb);
|
106
|
+
grpc_core::Mutex mu_;
|
107
|
+
TaskHandleSet known_handles_ ABSL_GUARDED_BY(mu_);
|
108
|
+
std::atomic<intptr_t> aba_token_{0};
|
109
|
+
|
110
|
+
posix_engine::TimerManager timer_manager_;
|
111
|
+
ThreadedExecutor executor_{2};
|
112
|
+
IOCP iocp_;
|
113
|
+
};
|
114
|
+
|
115
|
+
} // namespace experimental
|
116
|
+
} // namespace grpc_event_engine
|
117
|
+
|
118
|
+
#endif
|
119
|
+
|
120
|
+
#endif // GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
|
data/src/core/lib/gpr/time.cc
CHANGED
@@ -77,16 +77,18 @@ static gpr_timespec to_seconds_from_sub_second_time(int64_t time_in_units,
|
|
77
77
|
} else if (time_in_units == INT64_MIN) {
|
78
78
|
out = gpr_inf_past(type);
|
79
79
|
} else {
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
out.tv_sec = (-((units_per_sec - 1) - (time_in_units + units_per_sec)) /
|
84
|
-
units_per_sec) -
|
85
|
-
1;
|
86
|
-
}
|
80
|
+
GPR_DEBUG_ASSERT(GPR_NS_PER_SEC % units_per_sec == 0);
|
81
|
+
|
82
|
+
out.tv_sec = time_in_units / units_per_sec;
|
87
83
|
out.tv_nsec =
|
88
|
-
static_cast<int32_t>((time_in_units - out.tv_sec * units_per_sec) *
|
89
|
-
GPR_NS_PER_SEC / units_per_sec);
|
84
|
+
static_cast<int32_t>((time_in_units - (out.tv_sec * units_per_sec)) *
|
85
|
+
(GPR_NS_PER_SEC / units_per_sec));
|
86
|
+
/// `out.tv_nsec` should always be positive.
|
87
|
+
if (out.tv_nsec < 0) {
|
88
|
+
out.tv_nsec += GPR_NS_PER_SEC;
|
89
|
+
out.tv_sec--;
|
90
|
+
}
|
91
|
+
|
90
92
|
out.clock_type = type;
|
91
93
|
}
|
92
94
|
return out;
|