grpc 1.51.0 → 1.52.0.pre2
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 +91 -23
- data/include/grpc/byte_buffer.h +76 -1
- data/include/grpc/byte_buffer_reader.h +19 -1
- data/include/grpc/compression.h +2 -2
- data/include/grpc/event_engine/event_engine.h +17 -3
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +67 -0
- data/include/grpc/event_engine/memory_allocator.h +1 -1
- data/include/grpc/event_engine/slice.h +24 -4
- data/include/grpc/event_engine/slice_buffer.h +14 -2
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
- data/include/grpc/impl/codegen/atm_windows.h +3 -106
- data/include/grpc/impl/codegen/byte_buffer.h +4 -78
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
- data/include/grpc/impl/codegen/compression_types.h +3 -82
- data/include/grpc/impl/codegen/connectivity_state.h +3 -20
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +2 -34
- data/include/grpc/impl/codegen/grpc_types.h +3 -787
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -755
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +3 -106
- data/include/grpc/impl/codegen/status.h +4 -131
- data/include/grpc/impl/codegen/sync.h +3 -42
- data/include/grpc/impl/codegen/sync_abseil.h +3 -12
- data/include/grpc/impl/codegen/sync_custom.h +3 -14
- data/include/grpc/impl/codegen/sync_generic.h +3 -25
- data/include/grpc/impl/codegen/sync_posix.h +3 -28
- data/include/grpc/impl/codegen/sync_windows.h +3 -16
- data/include/grpc/impl/compression_types.h +109 -0
- data/include/grpc/impl/connectivity_state.h +47 -0
- data/include/grpc/impl/grpc_types.h +824 -0
- data/include/grpc/impl/propagation_bits.h +54 -0
- data/include/grpc/impl/slice_type.h +112 -0
- data/include/grpc/load_reporting.h +1 -1
- data/include/grpc/module.modulemap +5 -1
- data/include/grpc/slice.h +1 -1
- data/include/grpc/status.h +131 -1
- data/include/grpc/support/atm.h +70 -1
- data/include/grpc/support/atm_gcc_atomic.h +59 -1
- data/include/grpc/support/atm_gcc_sync.h +58 -1
- data/include/grpc/support/atm_windows.h +105 -1
- data/include/grpc/support/log.h +87 -1
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/port_platform.h +767 -1
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +35 -2
- data/include/grpc/support/sync_abseil.h +11 -1
- data/include/grpc/support/sync_custom.h +13 -1
- data/include/grpc/support/sync_generic.h +24 -1
- data/include/grpc/support/sync_posix.h +27 -1
- data/include/grpc/support/sync_windows.h +15 -1
- data/include/grpc/support/time.h +25 -2
- data/src/core/ext/filters/census/grpc_context.cc +17 -18
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +9 -9
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +21 -21
- data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +45 -24
- data/src/core/ext/filters/client_channel/client_channel.cc +40 -31
- data/src/core/ext/filters/client_channel/client_channel.h +7 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -17
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +17 -17
- data/src/core/ext/filters/client_channel/config_selector.h +16 -20
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +8 -8
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +39 -39
- data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +58 -130
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +102 -116
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +173 -196
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +10 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -97
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +14 -13
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +98 -84
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -8
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +21 -35
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +45 -39
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +11 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +16 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +31 -21
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +4 -4
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +21 -21
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +60 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -66
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +50 -51
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -33
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +59 -73
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +19 -21
- data/src/core/ext/filters/client_channel/retry_throttle.h +18 -18
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +139 -155
- data/src/core/ext/filters/client_channel/subchannel.h +15 -38
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +21 -3
- data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +20 -21
- data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
- data/src/core/ext/filters/http/client_authority_filter.cc +18 -18
- data/src/core/ext/filters/http/client_authority_filter.h +18 -18
- data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +18 -18
- data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -6
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -4
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
- data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +54 -44
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +24 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +66 -35
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
- data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +75 -38
- data/src/core/ext/transport/chttp2/transport/flow_control.h +56 -31
- data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/frame_data.h +22 -22
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +21 -21
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +129 -176
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +39 -58
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +69 -111
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
- data/src/core/ext/transport/chttp2/transport/internal.h +170 -163
- data/src/core/ext/transport/chttp2/transport/parsing.cc +96 -28
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
- data/src/core/ext/transport/chttp2/transport/varint.cc +17 -17
- data/src/core/ext/transport/chttp2/transport/varint.h +24 -24
- data/src/core/ext/transport/chttp2/transport/writing.cc +45 -41
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +25 -25
- data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
- data/src/core/ext/xds/xds_api.cc +5 -27
- data/src/core/ext/xds/xds_api.h +2 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_args.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
- data/src/core/ext/xds/xds_client.cc +14 -6
- data/src/core/ext/xds/xds_client.h +6 -3
- data/src/core/ext/xds/xds_client_grpc.cc +26 -0
- data/src/core/ext/xds/xds_client_grpc.h +1 -1
- data/src/core/ext/xds/xds_client_stats.cc +17 -17
- data/src/core/ext/xds/xds_client_stats.h +18 -18
- data/src/core/ext/xds/xds_cluster.cc +94 -46
- data/src/core/ext/xds/xds_cluster.h +44 -23
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +30 -50
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +14 -9
- data/src/core/ext/xds/xds_common_types.cc +4 -3
- data/src/core/ext/xds/xds_endpoint.cc +8 -2
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +82 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -6
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +11 -6
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +7 -6
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +0 -4
- data/src/core/ext/xds/xds_listener.cc +14 -28
- data/src/core/ext/xds/xds_listener.h +2 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -6
- data/src/core/ext/xds/xds_route_config.cc +501 -529
- data/src/core/ext/xds/xds_route_config.h +29 -18
- data/src/core/ext/xds/xds_server_config_fetcher.cc +12 -24
- data/src/core/ext/xds/xds_transport_grpc.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.h +1 -1
- data/src/core/lib/address_utils/parse_address.cc +19 -19
- data/src/core/lib/address_utils/parse_address.h +32 -32
- data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
- data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
- data/src/core/lib/avl/avl.h +4 -4
- data/src/core/lib/backoff/backoff.cc +17 -17
- data/src/core/lib/backoff/backoff.h +18 -18
- data/src/core/lib/channel/call_tracer.h +10 -1
- data/src/core/lib/channel/channel_args.cc +19 -20
- data/src/core/lib/channel/channel_args.h +43 -42
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
- data/src/core/lib/channel/channel_stack.cc +39 -38
- data/src/core/lib/channel/channel_stack.h +127 -127
- data/src/core/lib/channel/channel_stack_builder.cc +17 -17
- data/src/core/lib/channel/channel_stack_builder_impl.cc +18 -18
- data/src/core/lib/channel/channel_trace.cc +17 -17
- data/src/core/lib/channel/channel_trace.h +19 -19
- data/src/core/lib/channel/channelz.cc +17 -18
- data/src/core/lib/channel/channelz.h +26 -26
- data/src/core/lib/channel/channelz_registry.cc +17 -17
- data/src/core/lib/channel/channelz_registry.h +18 -18
- data/src/core/lib/channel/connected_channel.cc +43 -34
- data/src/core/lib/channel/connected_channel.h +18 -18
- data/src/core/lib/channel/context.h +18 -18
- data/src/core/lib/channel/promise_based_filter.cc +191 -68
- data/src/core/lib/channel/promise_based_filter.h +10 -1
- data/src/core/lib/channel/status_util.cc +35 -17
- data/src/core/lib/channel/status_util.h +26 -19
- data/src/core/lib/compression/compression.cc +19 -19
- data/src/core/lib/compression/compression_internal.cc +41 -48
- data/src/core/lib/compression/compression_internal.h +22 -22
- data/src/core/lib/compression/message_compress.cc +21 -21
- data/src/core/lib/compression/message_compress.h +25 -25
- data/src/core/lib/config/core_configuration.h +1 -1
- data/src/core/lib/debug/stats.cc +17 -17
- data/src/core/lib/debug/stats.h +17 -17
- data/src/core/lib/debug/trace.cc +18 -18
- data/src/core/lib/debug/trace.h +19 -19
- data/src/core/lib/event_engine/executor/executor.h +1 -1
- data/src/core/lib/event_engine/forkable.h +1 -1
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +27 -31
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -2
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +36 -37
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +46 -46
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +10 -12
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +79 -41
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -40
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +14 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +55 -283
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +4 -49
- data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
- data/src/core/lib/event_engine/posix_engine/timer.h +87 -87
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +19 -20
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +20 -20
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +39 -8
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +46 -40
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +8 -7
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +6 -7
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +28 -28
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
- data/src/core/lib/event_engine/socket_notifier.h +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
- data/src/core/lib/event_engine/thread_pool.cc +19 -18
- data/src/core/lib/event_engine/thread_pool.h +17 -17
- data/src/core/lib/event_engine/time_util.h +1 -1
- data/src/core/lib/event_engine/windows/iocp.cc +13 -12
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +2 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +8 -8
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -1
- data/src/core/lib/experiments/experiments.cc +5 -16
- data/src/core/lib/experiments/experiments.h +7 -12
- data/src/core/lib/gpr/alloc.cc +19 -17
- data/src/core/lib/gpr/alloc.h +18 -18
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/cpu_iphone.cc +24 -24
- data/src/core/lib/gpr/cpu_linux.cc +22 -21
- data/src/core/lib/gpr/cpu_posix.cc +23 -22
- data/src/core/lib/gpr/cpu_windows.cc +20 -18
- data/src/core/lib/gpr/log.cc +27 -19
- data/src/core/lib/gpr/log_android.cc +22 -20
- data/src/core/lib/gpr/log_linux.cc +21 -20
- data/src/core/lib/gpr/log_posix.cc +20 -19
- data/src/core/lib/gpr/log_windows.cc +25 -24
- data/src/core/lib/gpr/spinlock.h +18 -18
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +57 -57
- data/src/core/lib/gpr/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +22 -22
- data/src/core/lib/gpr/string_windows.cc +24 -24
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +22 -20
- data/src/core/lib/gpr/sync_posix.cc +23 -21
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +23 -21
- data/src/core/lib/gpr/time_posix.cc +35 -30
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +18 -19
- data/src/core/lib/gpr/time_windows.cc +25 -22
- data/src/core/lib/gpr/tmpfile.h +22 -22
- data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
- data/src/core/lib/gpr/tmpfile_posix.cc +19 -18
- data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
- data/src/core/lib/gpr/useful.h +40 -27
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +18 -18
- data/src/core/lib/gprpp/bitset.h +24 -0
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/gprpp/crash.cc} +15 -14
- data/src/core/lib/gprpp/crash.h +34 -0
- data/src/core/lib/gprpp/debug_location.h +18 -18
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
- data/src/core/lib/gprpp/env.h +20 -20
- data/src/core/lib/gprpp/env_linux.cc +21 -21
- data/src/core/lib/gprpp/env_posix.cc +18 -18
- data/src/core/lib/gprpp/env_windows.cc +18 -18
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +18 -18
- data/src/core/lib/gprpp/fork.cc +21 -22
- data/src/core/lib/gprpp/fork.h +22 -22
- data/src/core/lib/gprpp/global_config.h +18 -18
- data/src/core/lib/gprpp/global_config_custom.h +18 -18
- data/src/core/lib/gprpp/global_config_env.cc +17 -17
- data/src/core/lib/gprpp/global_config_env.h +23 -23
- data/src/core/lib/gprpp/global_config_generic.h +18 -18
- data/src/core/lib/gprpp/host_port.cc +26 -26
- data/src/core/lib/gprpp/host_port.h +29 -28
- data/src/core/lib/gprpp/manual_constructor.h +18 -17
- data/src/core/lib/gprpp/memory.h +18 -18
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +18 -18
- data/src/core/lib/gprpp/no_destruct.h +1 -0
- data/src/core/lib/gprpp/orphanable.h +18 -18
- data/src/core/lib/gprpp/ref_counted.h +18 -18
- data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
- data/src/core/lib/gprpp/stat_windows.cc +1 -0
- data/src/core/lib/gprpp/status_helper.cc +4 -3
- data/src/core/lib/gprpp/sync.h +20 -20
- data/src/core/lib/gprpp/table.h +1 -0
- data/src/core/lib/gprpp/thd.h +19 -19
- data/src/core/lib/gprpp/thd_posix.cc +30 -31
- data/src/core/lib/gprpp/thd_windows.cc +25 -24
- data/src/core/lib/gprpp/time.cc +13 -7
- data/src/core/lib/gprpp/time.h +0 -1
- data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
- data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +18 -18
- data/src/core/lib/handshaker/proxy_mapper.h +18 -18
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
- data/src/core/lib/http/format_request.cc +18 -18
- data/src/core/lib/http/format_request.h +18 -18
- data/src/core/lib/http/httpcli.cc +17 -17
- data/src/core/lib/http/httpcli.h +20 -21
- data/src/core/lib/http/httpcli_security_connector.cc +18 -19
- data/src/core/lib/http/parser.cc +22 -22
- data/src/core/lib/http/parser.h +32 -32
- data/src/core/lib/iomgr/block_annotate.h +21 -21
- data/src/core/lib/iomgr/buffer_list.cc +52 -21
- data/src/core/lib/iomgr/buffer_list.h +63 -57
- data/src/core/lib/iomgr/call_combiner.cc +18 -17
- data/src/core/lib/iomgr/call_combiner.h +18 -18
- data/src/core/lib/iomgr/cfstream_handle.cc +20 -20
- data/src/core/lib/iomgr/cfstream_handle.h +22 -22
- data/src/core/lib/iomgr/closure.h +42 -41
- data/src/core/lib/iomgr/combiner.cc +18 -17
- data/src/core/lib/iomgr/combiner.h +18 -18
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
- data/src/core/lib/iomgr/endpoint.cc +17 -17
- data/src/core/lib/iomgr/endpoint.h +46 -46
- data/src/core/lib/iomgr/endpoint_cfstream.cc +18 -18
- data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
- data/src/core/lib/iomgr/endpoint_pair.h +18 -18
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +18 -17
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
- data/src/core/lib/iomgr/error.cc +22 -19
- data/src/core/lib/iomgr/error.h +20 -21
- data/src/core/lib/iomgr/error_cfstream.cc +18 -18
- data/src/core/lib/iomgr/error_cfstream.h +19 -19
- data/src/core/lib/iomgr/ev_apple.cc +17 -17
- data/src/core/lib/iomgr/ev_apple.h +17 -17
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +182 -170
- data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
- data/src/core/lib/iomgr/ev_poll_posix.cc +185 -174
- data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
- data/src/core/lib/iomgr/ev_posix.cc +36 -28
- data/src/core/lib/iomgr/ev_posix.h +85 -81
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/exec_ctx.cc +31 -30
- data/src/core/lib/iomgr/exec_ctx.h +139 -138
- data/src/core/lib/iomgr/executor.cc +20 -19
- data/src/core/lib/iomgr/executor.h +24 -24
- data/src/core/lib/iomgr/fork_posix.cc +24 -22
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +18 -18
- data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
- data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
- data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.h +80 -80
- data/src/core/lib/iomgr/iocp_windows.cc +21 -21
- data/src/core/lib/iomgr/iocp_windows.h +18 -18
- data/src/core/lib/iomgr/iomgr.cc +19 -18
- data/src/core/lib/iomgr/iomgr.h +32 -32
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +25 -25
- data/src/core/lib/iomgr/iomgr_posix.cc +18 -18
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +18 -18
- data/src/core/lib/iomgr/iomgr_windows.cc +22 -21
- data/src/core/lib/iomgr/load_file.cc +19 -18
- data/src/core/lib/iomgr/load_file.h +20 -20
- data/src/core/lib/iomgr/lockfree_event.cc +104 -104
- data/src/core/lib/iomgr/lockfree_event.h +19 -19
- data/src/core/lib/iomgr/nameser.h +84 -84
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +27 -27
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +51 -51
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +22 -22
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
- data/src/core/lib/iomgr/pollset_windows.cc +26 -25
- data/src/core/lib/iomgr/pollset_windows.h +22 -22
- data/src/core/lib/iomgr/port.h +29 -29
- data/src/core/lib/iomgr/python_util.h +18 -18
- data/src/core/lib/iomgr/resolve_address.cc +18 -17
- data/src/core/lib/iomgr/resolve_address.h +18 -18
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +21 -20
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -3
- data/src/core/lib/iomgr/resolved_address.h +1 -1
- data/src/core/lib/iomgr/sockaddr.h +21 -21
- data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
- data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +37 -37
- data/src/core/lib/iomgr/socket_utils.h +24 -24
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +38 -37
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +21 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +76 -76
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +35 -34
- data/src/core/lib/iomgr/socket_windows.h +56 -56
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/iomgr/systemd_utils.h +33 -0
- data/src/core/lib/iomgr/tcp_client.cc +17 -17
- data/src/core/lib/iomgr/tcp_client.h +26 -26
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +19 -18
- data/src/core/lib/iomgr/tcp_client_posix.cc +39 -38
- data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
- data/src/core/lib/iomgr/tcp_client_windows.cc +28 -27
- data/src/core/lib/iomgr/tcp_posix.cc +136 -134
- data/src/core/lib/iomgr/tcp_posix.h +27 -27
- data/src/core/lib/iomgr/tcp_server.cc +30 -22
- data/src/core/lib/iomgr/tcp_server.h +68 -62
- data/src/core/lib/iomgr/tcp_server_posix.cc +91 -61
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +72 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +28 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +18 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +71 -75
- data/src/core/lib/iomgr/tcp_windows.cc +83 -60
- data/src/core/lib/iomgr/tcp_windows.h +29 -29
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +65 -65
- data/src/core/lib/iomgr/timer_generic.cc +106 -107
- data/src/core/lib/iomgr/timer_generic.h +19 -19
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +19 -19
- data/src/core/lib/iomgr/timer_manager.cc +30 -29
- data/src/core/lib/iomgr/timer_manager.h +25 -25
- data/src/core/lib/iomgr/unix_sockets_posix.cc +18 -17
- data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +19 -18
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +19 -18
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
- data/src/core/lib/json/json_object_loader.cc +10 -0
- data/src/core/lib/json/json_object_loader.h +15 -1
- data/src/core/lib/json/json_reader.cc +28 -28
- data/src/core/lib/json/json_writer.cc +56 -56
- data/src/core/lib/load_balancing/lb_policy.cc +17 -17
- data/src/core/lib/load_balancing/lb_policy.h +3 -4
- data/src/core/lib/load_balancing/subchannel_interface.h +1 -1
- data/src/core/lib/matchers/matchers.cc +3 -1
- data/src/core/lib/matchers/matchers.h +1 -1
- data/src/core/lib/promise/activity.h +20 -12
- data/src/core/lib/promise/arena_promise.h +2 -1
- data/src/core/lib/promise/context.h +1 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -0
- data/src/core/lib/promise/detail/switch.h +18 -18
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +18 -12
- data/src/core/lib/promise/for_each.h +68 -42
- data/src/core/lib/promise/latch.h +13 -19
- data/src/core/lib/promise/map.h +1 -0
- data/src/core/lib/promise/map_pipe.h +1 -0
- data/src/core/lib/promise/poll.h +6 -0
- data/src/core/lib/promise/seq.h +1 -0
- data/src/core/lib/promise/try_concurrently.h +1 -0
- data/src/core/lib/promise/try_seq.h +1 -0
- data/src/core/lib/resolver/resolver.cc +17 -17
- data/src/core/lib/resolver/server_address.cc +17 -17
- data/src/core/lib/resolver/server_address.h +18 -18
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/arena.cc +17 -17
- data/src/core/lib/resource_quota/arena.h +18 -18
- data/src/core/lib/resource_quota/memory_quota.cc +139 -43
- data/src/core/lib/resource_quota/memory_quota.h +85 -23
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/context/security_context.cc +22 -23
- data/src/core/lib/security/context/security_context.h +30 -30
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
- data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
- data/src/core/lib/security/credentials/call_creds_util.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +21 -21
- data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
- data/src/core/lib/security/credentials/credentials.cc +19 -18
- data/src/core/lib/security/credentials/credentials.h +34 -33
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +19 -19
- data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +48 -49
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +17 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
- data/src/core/lib/security/credentials/jwt/json_token.cc +23 -23
- data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +17 -17
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -70
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
- data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
- data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +28 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +18 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +19 -19
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
- data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +26 -27
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +24 -26
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +23 -23
- data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
- data/src/core/lib/security/security_connector/security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/security_connector.h +32 -33
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +25 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
- data/src/core/lib/security/security_connector/ssl_utils.cc +32 -32
- data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
- data/src/core/lib/security/transport/auth_filters.h +18 -18
- data/src/core/lib/security/transport/client_auth_filter.cc +20 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +28 -28
- data/src/core/lib/security/transport/secure_endpoint.h +22 -22
- data/src/core/lib/security/transport/security_handshaker.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.h +19 -19
- data/src/core/lib/security/transport/server_auth_filter.cc +22 -23
- data/src/core/lib/security/transport/tsi_error.cc +17 -17
- data/src/core/lib/security/transport/tsi_error.h +18 -18
- data/src/core/lib/security/util/json_util.cc +17 -17
- data/src/core/lib/security/util/json_util.h +18 -18
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_call_data.h +7 -1
- data/src/core/lib/slice/b64.cc +24 -24
- data/src/core/lib/slice/b64.h +29 -29
- data/src/core/lib/slice/percent_encoding.cc +17 -17
- data/src/core/lib/slice/percent_encoding.h +24 -24
- data/src/core/lib/slice/slice.cc +37 -37
- data/src/core/lib/slice/slice.h +38 -5
- data/src/core/lib/slice/slice_buffer.cc +50 -45
- data/src/core/lib/slice/slice_buffer.h +27 -2
- data/src/core/lib/slice/slice_internal.h +18 -18
- data/src/core/lib/slice/slice_string_helpers.cc +17 -17
- data/src/core/lib/slice/slice_string_helpers.h +19 -19
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +22 -22
- data/src/core/lib/surface/byte_buffer.cc +19 -19
- data/src/core/lib/surface/byte_buffer_reader.cc +19 -19
- data/src/core/lib/surface/call.cc +163 -104
- data/src/core/lib/surface/call.h +42 -39
- data/src/core/lib/surface/call_details.cc +17 -18
- data/src/core/lib/surface/call_log_batch.cc +18 -18
- data/src/core/lib/surface/call_test_only.h +30 -30
- data/src/core/lib/surface/call_trace.cc +5 -5
- data/src/core/lib/surface/channel.cc +18 -18
- data/src/core/lib/surface/channel.h +31 -31
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +18 -18
- data/src/core/lib/surface/channel_ping.cc +18 -18
- data/src/core/lib/surface/channel_stack_type.cc +17 -17
- data/src/core/lib/surface/channel_stack_type.h +18 -18
- data/src/core/lib/surface/completion_queue.cc +136 -140
- data/src/core/lib/surface/completion_queue.h +32 -32
- data/src/core/lib/surface/completion_queue_factory.cc +28 -28
- data/src/core/lib/surface/completion_queue_factory.h +20 -20
- data/src/core/lib/surface/event_string.cc +17 -17
- data/src/core/lib/surface/event_string.h +20 -20
- data/src/core/lib/surface/init.cc +21 -19
- data/src/core/lib/surface/init.h +18 -18
- data/src/core/lib/surface/init_internally.cc +1 -0
- data/src/core/lib/surface/init_internally.h +1 -0
- data/src/core/lib/surface/lame_client.cc +18 -18
- data/src/core/lib/surface/lame_client.h +19 -19
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +15 -15
- data/src/core/lib/surface/server.h +2 -3
- data/src/core/lib/surface/validate_metadata.cc +17 -17
- data/src/core/lib/surface/validate_metadata.h +18 -18
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +17 -17
- data/src/core/lib/transport/bdp_estimator.h +18 -19
- data/src/core/lib/transport/connectivity_state.cc +17 -17
- data/src/core/lib/transport/connectivity_state.h +19 -19
- data/src/core/lib/transport/error_utils.cc +17 -17
- data/src/core/lib/transport/error_utils.h +18 -18
- data/src/core/lib/transport/handshaker.cc +37 -34
- data/src/core/lib/transport/handshaker.h +42 -37
- data/src/core/lib/transport/handshaker_factory.h +18 -18
- data/src/core/lib/transport/handshaker_registry.cc +17 -17
- data/src/core/lib/transport/handshaker_registry.h +18 -18
- data/src/core/lib/transport/http2_errors.h +20 -20
- data/src/core/lib/transport/http_connect_handshaker.cc +17 -17
- data/src/core/lib/transport/http_connect_handshaker.h +18 -18
- data/src/core/lib/transport/metadata_batch.cc +4 -1
- data/src/core/lib/transport/metadata_batch.h +30 -20
- data/src/core/lib/transport/parsed_metadata.h +1 -0
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +24 -24
- data/src/core/lib/transport/status_conversion.cc +22 -22
- data/src/core/lib/transport/status_conversion.h +20 -20
- data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +22 -22
- data/src/core/lib/transport/timeout_encoding.h +18 -18
- data/src/core/lib/transport/transport.cc +25 -24
- data/src/core/lib/transport/transport.h +134 -132
- data/src/core/lib/transport/transport_impl.h +41 -41
- data/src/core/lib/transport/transport_op_string.cc +19 -19
- data/src/core/plugin_registry/grpc_plugin_registry.cc +21 -19
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +5 -0
- data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
- data/src/core/tsi/alts/crypt/gsec.cc +26 -26
- data/src/core/tsi/alts/crypt/gsec.h +334 -334
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
- data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +68 -67
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +29 -28
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +19 -19
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +38 -37
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +31 -30
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +31 -30
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +53 -52
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
- data/src/core/tsi/fake_transport_security.cc +77 -76
- data/src/core/tsi/fake_transport_security.h +30 -30
- data/src/core/tsi/local_transport_security.cc +34 -33
- data/src/core/tsi/local_transport_security.h +31 -31
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +18 -18
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +19 -18
- data/src/core/tsi/ssl_transport_security.cc +139 -323
- data/src/core/tsi/ssl_transport_security.h +201 -200
- data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
- data/src/core/tsi/ssl_transport_security_utils.h +147 -0
- data/src/core/tsi/ssl_types.h +25 -25
- data/src/core/tsi/transport_security.cc +26 -26
- data/src/core/tsi/transport_security.h +45 -45
- data/src/core/tsi/transport_security_grpc.cc +20 -20
- data/src/core/tsi/transport_security_grpc.h +39 -39
- data/src/core/tsi/transport_security_interface.h +330 -330
- data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
- data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +0 -1
- data/src/ruby/ext/grpc/ext-export.gcc +1 -2
- data/src/ruby/ext/grpc/extconf.rb +47 -2
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -36
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -56
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/third_party/re2/re2/bitstate.cc +3 -3
- data/third_party/re2/re2/dfa.cc +13 -13
- data/third_party/re2/re2/nfa.cc +4 -4
- data/third_party/re2/re2/onepass.cc +2 -2
- data/third_party/re2/re2/prefilter_tree.cc +27 -59
- data/third_party/re2/re2/prefilter_tree.h +3 -2
- data/third_party/re2/re2/prog.cc +11 -2
- data/third_party/re2/re2/prog.h +17 -5
- data/third_party/re2/re2/re2.cc +6 -11
- data/third_party/re2/re2/re2.h +1 -1
- data/third_party/re2/re2/regexp.cc +1 -2
- data/third_party/re2/re2/stringpiece.h +10 -7
- data/third_party/re2/re2/unicode_casefold.cc +25 -11
- data/third_party/re2/re2/unicode_groups.cc +319 -151
- data/third_party/re2/re2/walker-inl.h +3 -2
- data/third_party/re2/util/mutex.h +4 -4
- metadata +95 -26
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
@@ -379,6 +379,11 @@ class EventEngine : public std::enable_shared_from_this<EventEngine> {
|
|
379
379
|
///
|
380
380
|
/// \a Closures scheduled with \a Run cannot be cancelled. The \a closure will
|
381
381
|
/// not be deleted after it has been run, ownership remains with the caller.
|
382
|
+
///
|
383
|
+
/// Implementations must not execute the closure in the calling thread before
|
384
|
+
/// \a Run returns. For example, if the caller must release a lock before the
|
385
|
+
/// closure can proceed, running the closure immediately would cause a
|
386
|
+
/// deadlock.
|
382
387
|
virtual void Run(Closure* closure) = 0;
|
383
388
|
/// Asynchronously executes a task as soon as possible.
|
384
389
|
///
|
@@ -389,24 +394,33 @@ class EventEngine : public std::enable_shared_from_this<EventEngine> {
|
|
389
394
|
/// This version of \a Run may be less performant than the \a Closure version
|
390
395
|
/// in some scenarios. This overload is useful in situations where performance
|
391
396
|
/// is not a critical concern.
|
397
|
+
///
|
398
|
+
/// Implementations must not execute the closure in the calling thread before
|
399
|
+
/// \a Run returns.
|
392
400
|
virtual void Run(absl::AnyInvocable<void()> closure) = 0;
|
393
401
|
/// Synonymous with scheduling an alarm to run after duration \a when.
|
394
402
|
///
|
395
403
|
/// The \a closure will execute when time \a when arrives unless it has been
|
396
404
|
/// cancelled via the \a Cancel method. If cancelled, the closure will not be
|
397
405
|
/// run, nor will it be deleted. Ownership remains with the caller.
|
406
|
+
///
|
407
|
+
/// Implementations must not execute the closure in the calling thread before
|
408
|
+
/// \a RunAfter returns.
|
398
409
|
virtual TaskHandle RunAfter(Duration when, Closure* closure) = 0;
|
399
410
|
/// Synonymous with scheduling an alarm to run after duration \a when.
|
400
411
|
///
|
401
412
|
/// The \a closure will execute when time \a when arrives unless it has been
|
402
413
|
/// cancelled via the \a Cancel method. If cancelled, the closure will not be
|
403
|
-
/// run.
|
414
|
+
/// run. Unlike the overloaded \a Closure alternative, the absl::AnyInvocable
|
404
415
|
/// version's \a closure will be deleted by the EventEngine after the closure
|
405
416
|
/// has been run, or upon cancellation.
|
406
417
|
///
|
407
418
|
/// This version of \a RunAfter may be less performant than the \a Closure
|
408
419
|
/// version in some scenarios. This overload is useful in situations where
|
409
420
|
/// performance is not a critical concern.
|
421
|
+
///
|
422
|
+
/// Implementations must not execute the closure in the calling thread before
|
423
|
+
/// \a RunAfter returns.
|
410
424
|
virtual TaskHandle RunAfter(Duration when,
|
411
425
|
absl::AnyInvocable<void()> closure) = 0;
|
412
426
|
/// Request cancellation of a task.
|
@@ -414,12 +428,12 @@ class EventEngine : public std::enable_shared_from_this<EventEngine> {
|
|
414
428
|
/// If the associated closure has already been scheduled to run, it will not
|
415
429
|
/// be cancelled, and this function will return false.
|
416
430
|
///
|
417
|
-
/// If the associated
|
431
|
+
/// If the associated closure has not been scheduled to run, it will be
|
418
432
|
/// cancelled, and the associated absl::AnyInvocable or \a Closure* will not
|
419
433
|
/// be executed. In this case, Cancel will return true.
|
420
434
|
///
|
421
435
|
/// Implementation note: closures should be destroyed in a timely manner after
|
422
|
-
/// execution or
|
436
|
+
/// execution or cancellation (milliseconds), since any state bound to the
|
423
437
|
/// closure may need to be destroyed for things to progress (e.g., if a
|
424
438
|
/// closure holds a ref to some ref-counted object).
|
425
439
|
virtual bool Cancel(TaskHandle handle) = 0;
|
@@ -14,7 +14,7 @@
|
|
14
14
|
#ifndef GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
|
15
15
|
#define GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
|
16
16
|
|
17
|
-
#include <grpc/
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
19
|
#include <algorithm>
|
20
20
|
#include <memory>
|
@@ -0,0 +1,67 @@
|
|
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
|
+
|
15
|
+
#ifndef GRPC_EVENT_ENGINE_INTERNAL_SLICE_CAST_H
|
16
|
+
#define GRPC_EVENT_ENGINE_INTERNAL_SLICE_CAST_H
|
17
|
+
|
18
|
+
namespace grpc_event_engine {
|
19
|
+
namespace experimental {
|
20
|
+
namespace internal {
|
21
|
+
|
22
|
+
// Opt-in trait class for slice conversions.
|
23
|
+
// Declare a specialization of this class for any types that are compatible
|
24
|
+
// with `SliceCast`. Both ways need to be declared (i.e. if
|
25
|
+
// SliceCastable<A,B> exists, you should declare
|
26
|
+
// SliceCastable<B,A> too).
|
27
|
+
// The type has no members, it's just the existance of the specialization that
|
28
|
+
// unlocks SliceCast usage for a type pair.
|
29
|
+
template <typename Result, typename T>
|
30
|
+
struct SliceCastable;
|
31
|
+
|
32
|
+
// This is strictly too wide, but consider all types to be SliceCast-able to
|
33
|
+
// themselves.
|
34
|
+
// Unfortunately this allows `const int& x = SliceCast<int>(x);` which is kind
|
35
|
+
// of bogus.
|
36
|
+
template <typename A>
|
37
|
+
struct SliceCastable<A, A> {};
|
38
|
+
|
39
|
+
// Cast to `const Result&` from `const T&` without any runtime checks.
|
40
|
+
// This is only valid if `sizeof(Result) == sizeof(T)`, and if `Result`, `T` are
|
41
|
+
// opted in as compatible via `SliceCastable`.
|
42
|
+
template <typename Result, typename T>
|
43
|
+
const Result& SliceCast(const T& value, SliceCastable<Result, T> = {}) {
|
44
|
+
// Insist upon sizes being equal to catch mismatches.
|
45
|
+
// We assume if sizes are opted in and sizes are equal then yes, these two
|
46
|
+
// types are expected to be layout compatible and actually appear to be.
|
47
|
+
static_assert(sizeof(Result) == sizeof(T), "size mismatch");
|
48
|
+
return reinterpret_cast<const Result&>(value);
|
49
|
+
}
|
50
|
+
|
51
|
+
// Cast to `Result&` from `T&` without any runtime checks.
|
52
|
+
// This is only valid if `sizeof(Result) == sizeof(T)`, and if `Result`, `T` are
|
53
|
+
// opted in as compatible via `SliceCastable`.
|
54
|
+
template <typename Result, typename T>
|
55
|
+
Result& SliceCast(T& value, SliceCastable<Result, T> = {}) {
|
56
|
+
// Insist upon sizes being equal to catch mismatches.
|
57
|
+
// We assume if sizes are opted in and sizes are equal then yes, these two
|
58
|
+
// types are expected to be layout compatible and actually appear to be.
|
59
|
+
static_assert(sizeof(Result) == sizeof(T), "size mismatch");
|
60
|
+
return reinterpret_cast<Result&>(value);
|
61
|
+
}
|
62
|
+
|
63
|
+
} // namespace internal
|
64
|
+
} // namespace experimental
|
65
|
+
} // namespace grpc_event_engine
|
66
|
+
|
67
|
+
#endif // GRPC_EVENT_ENGINE_INTERNAL_SLICE_CAST_H
|
@@ -25,6 +25,7 @@
|
|
25
25
|
|
26
26
|
#include "absl/strings/string_view.h"
|
27
27
|
|
28
|
+
#include <grpc/event_engine/internal/slice_cast.h>
|
28
29
|
#include <grpc/slice.h>
|
29
30
|
#include <grpc/support/log.h>
|
30
31
|
|
@@ -177,8 +178,9 @@ struct CopyConstructors {
|
|
177
178
|
|
178
179
|
} // namespace slice_detail
|
179
180
|
|
180
|
-
class MutableSlice
|
181
|
-
|
181
|
+
class GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND MutableSlice
|
182
|
+
: public slice_detail::BaseSlice,
|
183
|
+
public slice_detail::CopyConstructors<MutableSlice> {
|
182
184
|
public:
|
183
185
|
MutableSlice() = default;
|
184
186
|
explicit MutableSlice(const grpc_slice& slice);
|
@@ -212,8 +214,9 @@ class MutableSlice : public slice_detail::BaseSlice,
|
|
212
214
|
uint8_t& operator[](size_t i) { return mutable_data()[i]; }
|
213
215
|
};
|
214
216
|
|
215
|
-
class Slice
|
216
|
-
|
217
|
+
class GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND Slice
|
218
|
+
: public slice_detail::BaseSlice,
|
219
|
+
public slice_detail::CopyConstructors<Slice> {
|
217
220
|
public:
|
218
221
|
Slice() = default;
|
219
222
|
~Slice();
|
@@ -280,6 +283,23 @@ class Slice : public slice_detail::BaseSlice,
|
|
280
283
|
const uint8_t* begin, const uint8_t* end);
|
281
284
|
};
|
282
285
|
|
286
|
+
namespace internal {
|
287
|
+
template <>
|
288
|
+
struct SliceCastable<Slice, grpc_slice> {};
|
289
|
+
template <>
|
290
|
+
struct SliceCastable<grpc_slice, Slice> {};
|
291
|
+
|
292
|
+
template <>
|
293
|
+
struct SliceCastable<MutableSlice, grpc_slice> {};
|
294
|
+
template <>
|
295
|
+
struct SliceCastable<grpc_slice, MutableSlice> {};
|
296
|
+
|
297
|
+
template <>
|
298
|
+
struct SliceCastable<MutableSlice, Slice> {};
|
299
|
+
template <>
|
300
|
+
struct SliceCastable<Slice, MutableSlice> {};
|
301
|
+
} // namespace internal
|
302
|
+
|
283
303
|
} // namespace experimental
|
284
304
|
} // namespace grpc_event_engine
|
285
305
|
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "absl/strings/string_view.h"
|
26
26
|
#include "absl/utility/utility.h"
|
27
27
|
|
28
|
+
#include <grpc/event_engine/internal/slice_cast.h>
|
28
29
|
#include <grpc/event_engine/slice.h>
|
29
30
|
#include <grpc/impl/codegen/slice.h>
|
30
31
|
#include <grpc/slice.h>
|
@@ -51,7 +52,7 @@ namespace experimental {
|
|
51
52
|
/// an experimental API.
|
52
53
|
class SliceBuffer {
|
53
54
|
public:
|
54
|
-
|
55
|
+
SliceBuffer() { grpc_slice_buffer_init(&slice_buffer_); }
|
55
56
|
SliceBuffer(const SliceBuffer& other) = delete;
|
56
57
|
SliceBuffer(SliceBuffer&& other) noexcept
|
57
58
|
: slice_buffer_(other.slice_buffer_) {
|
@@ -118,8 +119,19 @@ class SliceBuffer {
|
|
118
119
|
/// associated slice.
|
119
120
|
Slice RefSlice(size_t index);
|
120
121
|
|
122
|
+
/// Array access into the SliceBuffer. It returns a non mutable reference to
|
123
|
+
/// the slice at the specified index
|
124
|
+
const Slice& operator[](size_t index) const {
|
125
|
+
return internal::SliceCast<Slice>(slice_buffer_.slices[index]);
|
126
|
+
}
|
127
|
+
|
128
|
+
/// Return mutable reference to the slice at the specified index
|
129
|
+
Slice& MutableSliceAt(size_t index) const {
|
130
|
+
return internal::SliceCast<Slice>(slice_buffer_.slices[index]);
|
131
|
+
}
|
132
|
+
|
121
133
|
/// The total number of bytes held by the SliceBuffer
|
122
|
-
size_t Length() { return slice_buffer_.length; }
|
134
|
+
size_t Length() const { return slice_buffer_.length; }
|
123
135
|
|
124
136
|
/// Return a pointer to the back raw grpc_slice_buffer
|
125
137
|
grpc_slice_buffer* c_slice_buffer() { return &slice_buffer_; }
|
data/include/grpc/fork.h
CHANGED
@@ -21,6 +21,30 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
|
24
|
+
/**
|
25
|
+
* gRPC applications should call this before calling fork(). There should be no
|
26
|
+
* active gRPC function calls between calling grpc_prefork() and
|
27
|
+
* grpc_postfork_parent()/grpc_postfork_child().
|
28
|
+
*
|
29
|
+
*
|
30
|
+
* Typical use:
|
31
|
+
* grpc_prefork();
|
32
|
+
* int pid = fork();
|
33
|
+
* if (pid) {
|
34
|
+
* grpc_postfork_parent();
|
35
|
+
* // Parent process..
|
36
|
+
* } else {
|
37
|
+
* grpc_postfork_child();
|
38
|
+
* // Child process...
|
39
|
+
* }
|
40
|
+
*/
|
41
|
+
|
42
|
+
void grpc_prefork(void);
|
43
|
+
|
44
|
+
void grpc_postfork_parent(void);
|
45
|
+
|
46
|
+
void grpc_postfork_child(void);
|
47
|
+
|
48
|
+
void grpc_fork_handlers_auto_register(void);
|
25
49
|
|
26
50
|
#endif /* GRPC_FORK_H */
|
data/include/grpc/grpc.h
CHANGED
@@ -24,9 +24,9 @@
|
|
24
24
|
#include <stddef.h>
|
25
25
|
|
26
26
|
#include <grpc/byte_buffer.h>
|
27
|
-
#include <grpc/impl/
|
28
|
-
#include <grpc/impl/
|
29
|
-
#include <grpc/impl/
|
27
|
+
#include <grpc/impl/connectivity_state.h> // IWYU pragma: export
|
28
|
+
#include <grpc/impl/grpc_types.h> // IWYU pragma: export
|
29
|
+
#include <grpc/impl/propagation_bits.h>
|
30
30
|
#include <grpc/slice.h>
|
31
31
|
#include <grpc/status.h>
|
32
32
|
#include <grpc/support/time.h>
|
data/include/grpc/grpc_posix.h
CHANGED
@@ -21,77 +21,9 @@
|
|
21
21
|
|
22
22
|
// IWYU pragma: private, include <grpc/support/atm.h>
|
23
23
|
|
24
|
-
|
25
|
-
It is internal to gpr support code and should not be used outside it.
|
24
|
+
#include <grpc/support/port_platform.h>
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
threads.
|
30
|
-
|
31
|
-
If an operation with release semantics follows another memory access by the
|
32
|
-
same thread, the operation will follow that other access as seen by other
|
33
|
-
threads.
|
34
|
-
|
35
|
-
Routines with "acq" or "full" in the name have acquire semantics. Routines
|
36
|
-
with "rel" or "full" in the name have release semantics. Routines with
|
37
|
-
"no_barrier" in the name have neither acquire not release semantics.
|
38
|
-
|
39
|
-
The routines may be implemented as macros.
|
40
|
-
|
41
|
-
// Atomic operations act on an intergral_type gpr_atm that is guaranteed to
|
42
|
-
// be the same size as a pointer.
|
43
|
-
typedef intptr_t gpr_atm;
|
44
|
-
|
45
|
-
// A memory barrier, providing both acquire and release semantics, but not
|
46
|
-
// otherwise acting on memory.
|
47
|
-
void gpr_atm_full_barrier(void);
|
48
|
-
|
49
|
-
// Atomically return *p, with acquire semantics.
|
50
|
-
gpr_atm gpr_atm_acq_load(gpr_atm *p);
|
51
|
-
gpr_atm gpr_atm_no_barrier_load(gpr_atm *p);
|
52
|
-
|
53
|
-
// Atomically set *p = value, with release semantics.
|
54
|
-
void gpr_atm_rel_store(gpr_atm *p, gpr_atm value);
|
55
|
-
|
56
|
-
// Atomically add delta to *p, and return the old value of *p, with
|
57
|
-
// the barriers specified.
|
58
|
-
gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, gpr_atm delta);
|
59
|
-
gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta);
|
60
|
-
|
61
|
-
// Atomically, if *p==o, set *p=n and return non-zero otherwise return 0,
|
62
|
-
// with the barriers specified if the operation succeeds.
|
63
|
-
int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
64
|
-
int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
65
|
-
int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
66
|
-
int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
67
|
-
|
68
|
-
// Atomically, set *p=n and return the old value of *p
|
69
|
-
gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n);
|
70
|
-
*/
|
71
|
-
|
72
|
-
#include <grpc/impl/codegen/port_platform.h>
|
73
|
-
|
74
|
-
#if defined(GPR_GCC_ATOMIC)
|
75
|
-
#include <grpc/impl/codegen/atm_gcc_atomic.h> // IWYU pragma: export
|
76
|
-
#elif defined(GPR_GCC_SYNC)
|
77
|
-
#include <grpc/impl/codegen/atm_gcc_sync.h> // IWYU pragma: export
|
78
|
-
#elif defined(GPR_WINDOWS_ATOMIC)
|
79
|
-
#include <grpc/impl/codegen/atm_windows.h> // IWYU pragma: export
|
80
|
-
#else
|
81
|
-
#error could not determine platform for atm
|
82
|
-
#endif
|
83
|
-
|
84
|
-
#ifdef __cplusplus
|
85
|
-
extern "C" {
|
86
|
-
#endif
|
87
|
-
|
88
|
-
/** Adds \a delta to \a *value, clamping the result to the range specified
|
89
|
-
by \a min and \a max. Returns the new value. */
|
90
|
-
gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm* value, gpr_atm delta,
|
91
|
-
gpr_atm min, gpr_atm max);
|
92
|
-
|
93
|
-
#ifdef __cplusplus
|
94
|
-
}
|
95
|
-
#endif
|
26
|
+
/// TODO(chengyuc): Remove this file after solving compatibility.
|
27
|
+
#include <grpc/support/atm.h>
|
96
28
|
|
97
29
|
#endif /* GRPC_IMPL_CODEGEN_ATM_H */
|
@@ -21,64 +21,9 @@
|
|
21
21
|
|
22
22
|
// IWYU pragma: private, include <grpc/support/atm.h>
|
23
23
|
|
24
|
-
|
25
|
-
__atomic_* interface. */
|
26
|
-
#include <grpc/impl/codegen/port_platform.h>
|
24
|
+
#include <grpc/support/port_platform.h>
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
#endif
|
31
|
-
|
32
|
-
typedef intptr_t gpr_atm;
|
33
|
-
#define GPR_ATM_MAX INTPTR_MAX
|
34
|
-
#define GPR_ATM_MIN INTPTR_MIN
|
35
|
-
|
36
|
-
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
|
37
|
-
|
38
|
-
#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE))
|
39
|
-
#define gpr_atm_no_barrier_load(p) (__atomic_load_n((p), __ATOMIC_RELAXED))
|
40
|
-
#define gpr_atm_rel_store(p, value) \
|
41
|
-
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELEASE))
|
42
|
-
#define gpr_atm_no_barrier_store(p, value) \
|
43
|
-
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED))
|
44
|
-
|
45
|
-
#define gpr_atm_no_barrier_fetch_add(p, delta) \
|
46
|
-
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED)
|
47
|
-
#define gpr_atm_full_fetch_add(p, delta) \
|
48
|
-
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL)
|
49
|
-
|
50
|
-
static __inline int gpr_atm_no_barrier_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
51
|
-
// Need to be c89 compatible, so we can't use false for the fourth argument.
|
52
|
-
// NOLINTNEXTLINE(modernize-use-bool-literals)
|
53
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELAXED,
|
54
|
-
__ATOMIC_RELAXED);
|
55
|
-
}
|
56
|
-
|
57
|
-
static __inline int gpr_atm_acq_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
58
|
-
// Need to be c89 compatible, so we can't use false for the fourth argument.
|
59
|
-
// NOLINTNEXTLINE(modernize-use-bool-literals)
|
60
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_ACQUIRE,
|
61
|
-
__ATOMIC_RELAXED);
|
62
|
-
}
|
63
|
-
|
64
|
-
static __inline int gpr_atm_rel_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
65
|
-
// Need to be c89 compatible, so we can't use false for the fourth argument.
|
66
|
-
// NOLINTNEXTLINE(modernize-use-bool-literals)
|
67
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELEASE,
|
68
|
-
__ATOMIC_RELAXED);
|
69
|
-
}
|
70
|
-
|
71
|
-
static __inline int gpr_atm_full_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
72
|
-
// Need to be c89 compatible, so we can't use false for the fourth argument.
|
73
|
-
// NOLINTNEXTLINE(modernize-use-bool-literals)
|
74
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_ACQ_REL,
|
75
|
-
__ATOMIC_RELAXED);
|
76
|
-
}
|
77
|
-
|
78
|
-
#define gpr_atm_full_xchg(p, n) __atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL)
|
79
|
-
|
80
|
-
#ifdef __cplusplus
|
81
|
-
}
|
82
|
-
#endif
|
26
|
+
/// TODO(chengyuc): Remove this file after solving compatibility.
|
27
|
+
#include <grpc/support/atm_gcc_atomic.h>
|
83
28
|
|
84
29
|
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */
|
@@ -21,65 +21,9 @@
|
|
21
21
|
|
22
22
|
// IWYU pragma: private, include <grpc/support/atm.h>
|
23
23
|
|
24
|
-
|
25
|
-
interface */
|
26
|
-
#include <grpc/impl/codegen/port_platform.h>
|
24
|
+
#include <grpc/support/port_platform.h>
|
27
25
|
|
28
|
-
|
29
|
-
#
|
30
|
-
#define GPR_ATM_MIN INTPTR_MIN
|
31
|
-
|
32
|
-
#define GPR_ATM_COMPILE_BARRIER_() __asm__ __volatile__("" : : : "memory")
|
33
|
-
|
34
|
-
#if defined(__i386) || defined(__x86_64__)
|
35
|
-
/* All loads are acquire loads and all stores are release stores. */
|
36
|
-
#define GPR_ATM_LS_BARRIER_() GPR_ATM_COMPILE_BARRIER_()
|
37
|
-
#else
|
38
|
-
#define GPR_ATM_LS_BARRIER_() gpr_atm_full_barrier()
|
39
|
-
#endif
|
40
|
-
|
41
|
-
#define gpr_atm_full_barrier() (__sync_synchronize())
|
42
|
-
|
43
|
-
static __inline gpr_atm gpr_atm_acq_load(const gpr_atm* p) {
|
44
|
-
gpr_atm value = *p;
|
45
|
-
GPR_ATM_LS_BARRIER_();
|
46
|
-
return value;
|
47
|
-
}
|
48
|
-
|
49
|
-
static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm* p) {
|
50
|
-
gpr_atm value = *p;
|
51
|
-
GPR_ATM_COMPILE_BARRIER_();
|
52
|
-
return value;
|
53
|
-
}
|
54
|
-
|
55
|
-
static __inline void gpr_atm_rel_store(gpr_atm* p, gpr_atm value) {
|
56
|
-
GPR_ATM_LS_BARRIER_();
|
57
|
-
*p = value;
|
58
|
-
}
|
59
|
-
|
60
|
-
static __inline void gpr_atm_no_barrier_store(gpr_atm* p, gpr_atm value) {
|
61
|
-
GPR_ATM_COMPILE_BARRIER_();
|
62
|
-
*p = value;
|
63
|
-
}
|
64
|
-
|
65
|
-
#undef GPR_ATM_LS_BARRIER_
|
66
|
-
#undef GPR_ATM_COMPILE_BARRIER_
|
67
|
-
|
68
|
-
#define gpr_atm_no_barrier_fetch_add(p, delta) \
|
69
|
-
gpr_atm_full_fetch_add((p), (delta))
|
70
|
-
#define gpr_atm_full_fetch_add(p, delta) (__sync_fetch_and_add((p), (delta)))
|
71
|
-
|
72
|
-
#define gpr_atm_no_barrier_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
73
|
-
#define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n)))
|
74
|
-
#define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
75
|
-
#define gpr_atm_full_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
76
|
-
|
77
|
-
static __inline gpr_atm gpr_atm_full_xchg(gpr_atm* p, gpr_atm n) {
|
78
|
-
gpr_atm cur;
|
79
|
-
do {
|
80
|
-
cur = gpr_atm_acq_load(p);
|
81
|
-
} while (!gpr_atm_rel_cas(p, cur, n));
|
82
|
-
return cur;
|
83
|
-
}
|
26
|
+
/// TODO(chengyuc): Remove this file after solving compatibility.
|
27
|
+
#include <grpc/support/atm_gcc_sync.h>
|
84
28
|
|
85
29
|
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H */
|
@@ -21,112 +21,9 @@
|
|
21
21
|
|
22
22
|
// IWYU pragma: private, include <grpc/support/atm.h>
|
23
23
|
|
24
|
-
|
25
|
-
#include <grpc/impl/codegen/port_platform.h>
|
24
|
+
#include <grpc/support/port_platform.h>
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
typedef intptr_t gpr_atm;
|
30
|
-
#define GPR_ATM_MAX INTPTR_MAX
|
31
|
-
#define GPR_ATM_MIN INTPTR_MIN
|
32
|
-
|
33
|
-
#define gpr_atm_full_barrier MemoryBarrier
|
34
|
-
|
35
|
-
static __inline gpr_atm gpr_atm_acq_load(const gpr_atm* p) {
|
36
|
-
gpr_atm result = *p;
|
37
|
-
gpr_atm_full_barrier();
|
38
|
-
return result;
|
39
|
-
}
|
40
|
-
|
41
|
-
static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm* p) {
|
42
|
-
/* TODO(dklempner): Can we implement something better here? */
|
43
|
-
return gpr_atm_acq_load(p);
|
44
|
-
}
|
45
|
-
|
46
|
-
static __inline void gpr_atm_rel_store(gpr_atm* p, gpr_atm value) {
|
47
|
-
gpr_atm_full_barrier();
|
48
|
-
*p = value;
|
49
|
-
}
|
50
|
-
|
51
|
-
static __inline void gpr_atm_no_barrier_store(gpr_atm* p, gpr_atm value) {
|
52
|
-
/* TODO(ctiller): Can we implement something better here? */
|
53
|
-
gpr_atm_rel_store(p, value);
|
54
|
-
}
|
55
|
-
|
56
|
-
static __inline int gpr_atm_no_barrier_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
57
|
-
/** InterlockedCompareExchangePointerNoFence() not available on vista or
|
58
|
-
windows7 */
|
59
|
-
#ifdef GPR_ARCH_64
|
60
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire64(
|
61
|
-
(volatile LONGLONG*)p, (LONGLONG)n, (LONGLONG)o);
|
62
|
-
#else
|
63
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG*)p,
|
64
|
-
(LONG)n, (LONG)o);
|
65
|
-
#endif
|
66
|
-
}
|
67
|
-
|
68
|
-
static __inline int gpr_atm_acq_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
69
|
-
#ifdef GPR_ARCH_64
|
70
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire64(
|
71
|
-
(volatile LONGLONG*)p, (LONGLONG)n, (LONGLONG)o);
|
72
|
-
#else
|
73
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG*)p,
|
74
|
-
(LONG)n, (LONG)o);
|
75
|
-
#endif
|
76
|
-
}
|
77
|
-
|
78
|
-
static __inline int gpr_atm_rel_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
79
|
-
#ifdef GPR_ARCH_64
|
80
|
-
return o == (gpr_atm)InterlockedCompareExchangeRelease64(
|
81
|
-
(volatile LONGLONG*)p, (LONGLONG)n, (LONGLONG)o);
|
82
|
-
#else
|
83
|
-
return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG*)p,
|
84
|
-
(LONG)n, (LONG)o);
|
85
|
-
#endif
|
86
|
-
}
|
87
|
-
|
88
|
-
static __inline int gpr_atm_full_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
89
|
-
#ifdef GPR_ARCH_64
|
90
|
-
return o == (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG*)p,
|
91
|
-
(LONGLONG)n, (LONGLONG)o);
|
92
|
-
#else
|
93
|
-
return o == (gpr_atm)InterlockedCompareExchange((volatile LONG*)p, (LONG)n,
|
94
|
-
(LONG)o);
|
95
|
-
#endif
|
96
|
-
}
|
97
|
-
|
98
|
-
static __inline gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm* p,
|
99
|
-
gpr_atm delta) {
|
100
|
-
/** Use the CAS operation to get pointer-sized fetch and add */
|
101
|
-
gpr_atm old;
|
102
|
-
do {
|
103
|
-
old = *p;
|
104
|
-
} while (!gpr_atm_no_barrier_cas(p, old, old + delta));
|
105
|
-
return old;
|
106
|
-
}
|
107
|
-
|
108
|
-
static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm* p, gpr_atm delta) {
|
109
|
-
/** Use a CAS operation to get pointer-sized fetch and add */
|
110
|
-
gpr_atm old;
|
111
|
-
#ifdef GPR_ARCH_64
|
112
|
-
do {
|
113
|
-
old = *p;
|
114
|
-
} while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG*)p,
|
115
|
-
(LONGLONG)old + delta,
|
116
|
-
(LONGLONG)old));
|
117
|
-
#else
|
118
|
-
do {
|
119
|
-
old = *p;
|
120
|
-
} while (old != (gpr_atm)InterlockedCompareExchange(
|
121
|
-
(volatile LONG*)p, (LONG)old + delta, (LONG)old));
|
122
|
-
#endif
|
123
|
-
return old;
|
124
|
-
}
|
125
|
-
|
126
|
-
static __inline gpr_atm gpr_atm_full_xchg(gpr_atm* p, gpr_atm n) {
|
127
|
-
return (gpr_atm)InterlockedExchangePointer((PVOID*)p, (PVOID)n);
|
128
|
-
}
|
129
|
-
|
130
|
-
#endif /* GPR_WINDOWS */
|
26
|
+
/// TODO(chengyuc): Remove this file after solving compatibility.
|
27
|
+
#include <grpc/support/atm_windows.h>
|
131
28
|
|
132
29
|
#endif /* GRPC_IMPL_CODEGEN_ATM_WINDOWS_H */
|