grpc 1.71.0 → 1.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +78 -75
- data/include/grpc/event_engine/memory_request.h +3 -3
- data/include/grpc/impl/channel_arg_names.h +70 -50
- data/include/grpc/support/workaround_list.h +1 -4
- data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
- data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
- data/src/core/{lib/transport → call}/call_destination.h +4 -4
- data/src/core/{lib/transport → call}/call_filters.cc +2 -2
- data/src/core/{lib/transport → call}/call_filters.h +25 -6
- data/src/core/{lib/channel → call}/call_finalization.h +3 -3
- data/src/core/{lib/transport → call}/call_spine.cc +1 -1
- data/src/core/{lib/transport → call}/call_spine.h +68 -26
- data/src/core/{lib/transport → call}/call_state.cc +1 -1
- data/src/core/{lib/transport → call}/call_state.h +3 -3
- data/src/core/{lib/surface → call}/client_call.cc +9 -7
- data/src/core/{lib/surface → call}/client_call.h +4 -4
- data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
- data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
- data/src/core/{lib/transport → call}/interception_chain.h +7 -7
- data/src/core/{lib/transport → call}/message.cc +1 -1
- data/src/core/{lib/transport → call}/message.h +7 -3
- data/src/core/{lib/transport → call}/metadata.cc +2 -2
- data/src/core/{lib/transport → call}/metadata.h +4 -4
- data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
- data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
- data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
- data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
- data/src/core/{lib/transport → call}/metadata_info.h +4 -4
- data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
- data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
- data/src/core/call/request_buffer.h +3 -3
- data/src/core/call/security_context.cc +125 -0
- data/src/core/call/security_context.h +114 -0
- data/src/core/{lib/surface → call}/server_call.cc +3 -3
- data/src/core/{lib/surface → call}/server_call.h +5 -5
- data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
- data/src/core/{lib/channel → call}/status_util.cc +1 -1
- data/src/core/{lib/channel → call}/status_util.h +3 -3
- data/src/core/client_channel/client_channel.cc +24 -16
- data/src/core/client_channel/client_channel.h +4 -3
- data/src/core/client_channel/client_channel_filter.cc +10 -20
- data/src/core/client_channel/client_channel_filter.h +1 -1
- data/src/core/client_channel/client_channel_internal.h +1 -1
- data/src/core/client_channel/config_selector.h +2 -2
- data/src/core/client_channel/direct_channel.cc +2 -2
- data/src/core/client_channel/dynamic_filters.cc +0 -1
- data/src/core/client_channel/dynamic_filters.h +0 -1
- data/src/core/client_channel/lb_metadata.h +1 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
- data/src/core/client_channel/load_balanced_call_destination.h +1 -1
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +43 -41
- data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -6
- data/src/core/client_channel/retry_interceptor.h +1 -1
- data/src/core/client_channel/retry_service_config.cc +1 -1
- data/src/core/client_channel/retry_service_config.h +1 -1
- data/src/core/client_channel/retry_throttle.cc +30 -34
- data/src/core/client_channel/retry_throttle.h +10 -2
- data/src/core/client_channel/subchannel.cc +7 -8
- data/src/core/client_channel/subchannel.h +1 -2
- data/src/core/client_channel/subchannel_stream_client.cc +14 -11
- data/src/core/client_channel/subchannel_stream_client.h +2 -2
- data/src/core/config/core_configuration.h +2 -2
- data/src/core/credentials/call/call_credentials.h +157 -0
- data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
- data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
- data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
- data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
- data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
- data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +3 -2
- data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
- data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +3 -2
- data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
- data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
- data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
- data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +3 -2
- data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
- data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +4 -3
- data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +21 -17
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
- data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
- data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
- data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
- data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +31 -19
- data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
- data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
- data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
- data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
- data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +4 -4
- data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
- data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
- data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +2 -2
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +3 -3
- data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
- data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +6 -6
- data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
- data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
- data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
- data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
- data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -5
- data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -5
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +8 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +58 -57
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame.cc +89 -68
- data/src/core/ext/transport/chttp2/transport/frame.h +37 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_status.h +52 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -14
- data/src/core/ext/transport/chttp2/transport/parsing.cc +36 -23
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1 -1
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
- data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
- data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
- data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +26 -26
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +216 -218
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +326 -328
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +22 -24
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +29 -29
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +186 -192
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +54 -54
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +59 -61
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +15 -15
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +100 -100
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +12 -12
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +118 -118
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +19 -19
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +27 -27
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -14
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +41 -41
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +139 -139
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +61 -61
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -33
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +12 -14
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -54
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +620 -626
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +13 -13
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +15 -15
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +306 -312
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +61 -61
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +294 -294
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +3 -3
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +84 -84
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +87 -87
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +24 -24
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +130 -132
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +60 -60
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +6 -6
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +7 -7
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +11 -11
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +85 -89
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +80 -83
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
- data/src/core/ext/upb-gen/google/api/http.upb.h +51 -51
- data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +327 -301
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +97 -85
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +1 -0
- data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +9 -11
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -10
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +110 -113
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +25 -25
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +6 -6
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -22
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -72
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
- data/src/core/ext/upb-gen/validate/validate.upb.h +368 -368
- data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
- data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -10
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
- data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +12 -12
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -30
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
- data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +22 -24
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
- data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +98 -87
- data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -7
- data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -6
- data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
- data/src/core/handshaker/handshaker.cc +0 -8
- data/src/core/handshaker/security/security_handshaker.cc +1 -1
- data/src/core/handshaker/security/security_handshaker.h +1 -1
- data/src/core/lib/channel/channel_args.h +49 -30
- data/src/core/lib/channel/channel_stack.h +1 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.h +3 -3
- data/src/core/lib/debug/trace_flags.cc +2 -4
- data/src/core/lib/debug/trace_flags.h +1 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
- data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
- data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
- data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +0 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +1 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +26 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +4 -0
- data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +0 -11
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +10 -2
- data/src/core/lib/event_engine/shim.cc +9 -16
- data/src/core/lib/event_engine/shim.h +11 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -7
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
- data/src/core/lib/event_engine/windows/win_socket.h +3 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -10
- data/src/core/lib/event_engine/windows/windows_engine.cc +42 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -2
- data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
- data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
- data/src/core/lib/experiments/experiments.cc +174 -21
- data/src/core/lib/experiments/experiments.h +70 -13
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
- data/src/core/lib/iomgr/error.cc +27 -43
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +13 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +13 -0
- data/src/core/lib/iomgr/polling_entity.cc +2 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
- data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +11 -15
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +58 -31
- data/src/core/lib/iomgr/tcp_posix.h +10 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +27 -16
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
- data/src/core/lib/promise/all_ok.h +31 -0
- data/src/core/lib/promise/loop.h +8 -5
- data/src/core/lib/promise/map.h +65 -2
- data/src/core/lib/promise/party.h +5 -1
- data/src/core/lib/promise/poll.h +22 -20
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/promise/status_flag.h +23 -11
- data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/slice/slice.h +6 -0
- data/src/core/lib/surface/call.cc +20 -18
- data/src/core/lib/surface/call_utils.cc +3 -3
- data/src/core/lib/surface/call_utils.h +3 -3
- data/src/core/lib/surface/channel.h +2 -2
- data/src/core/lib/surface/channel_init.h +2 -2
- data/src/core/lib/surface/completion_queue.cc +77 -17
- data/src/core/lib/surface/filter_stack_call.cc +40 -27
- data/src/core/lib/surface/filter_stack_call.h +1 -1
- data/src/core/lib/surface/init.cc +2 -3
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +27 -23
- data/src/core/lib/surface/legacy_channel.h +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +65 -11
- data/src/core/lib/transport/error_utils.h +2 -2
- data/src/core/lib/transport/status_conversion.cc +16 -14
- data/src/core/lib/transport/status_conversion.h +5 -4
- data/src/core/lib/transport/transport.h +5 -5
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/load_balancing/delegating_helper.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
- data/src/core/load_balancing/grpclb/grpclb.cc +1 -2
- data/src/core/load_balancing/pick_first/pick_first.cc +0 -955
- data/src/core/load_balancing/rls/rls.cc +31 -37
- data/src/core/load_balancing/weighted_target/weighted_target.cc +1 -1
- data/src/core/load_balancing/xds/cds.cc +3 -10
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
- data/src/core/resolver/xds/xds_dependency_manager.cc +8 -3
- data/src/core/resolver/xds/xds_resolver.cc +2 -2
- data/src/core/server/server.cc +7 -4
- data/src/core/server/server.h +1 -1
- data/src/core/server/server_call_tracer_filter.cc +1 -1
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +5 -5
- data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
- data/src/core/telemetry/call_tracer.cc +2 -4
- data/src/core/telemetry/call_tracer.h +3 -3
- data/src/core/telemetry/metrics.cc +30 -12
- data/src/core/telemetry/metrics.h +15 -3
- data/src/core/telemetry/stats_data.cc +75 -2
- data/src/core/telemetry/stats_data.h +46 -4
- data/src/core/telemetry/tcp_tracer.h +90 -84
- data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -96
- data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +6 -76
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/util/check_class_size.h +48 -0
- data/src/core/util/gcp_metadata_query.cc +1 -1
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -3
- data/src/core/util/load_file.cc +26 -14
- data/src/core/util/status_helper.cc +86 -63
- data/src/core/util/status_helper.h +9 -26
- data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.h +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +10 -7
- data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
- data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +7 -6
- data/src/core/xds/grpc/xds_client_grpc.h +4 -2
- data/src/core/xds/grpc/xds_cluster.h +3 -3
- data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
- data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
- data/src/core/xds/grpc/xds_http_filter.h +1 -1
- data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
- data/src/core/xds/grpc/xds_route_config.h +1 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +1 -1
- data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
- data/src/core/xds/grpc/xds_routing.h +1 -1
- data/src/core/xds/grpc/xds_server_grpc.cc +60 -48
- data/src/core/xds/grpc/xds_server_grpc.h +23 -13
- data/src/core/xds/grpc/xds_server_grpc_interface.h +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
- data/src/core/xds/xds_client/lrs_client.cc +6 -5
- data/src/core/xds/xds_client/lrs_client.h +7 -7
- data/src/core/xds/xds_client/xds_bootstrap.h +16 -1
- data/src/core/xds/xds_client/xds_client.cc +25 -23
- data/src/core/xds/xds_client/xds_client.h +3 -1
- data/src/core/xds/xds_client/xds_resource_type.h +1 -2
- data/src/core/xds/xds_client/xds_transport.h +1 -1
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +20 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +3 -7
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1 -1
- data/third_party/upb/upb/base/internal/log2.h +3 -1
- data/third_party/upb/upb/base/string_view.h +10 -0
- data/third_party/upb/upb/hash/common.c +5 -1
- data/third_party/upb/upb/json/decode.c +2 -2
- data/third_party/upb/upb/json/decode.h +0 -1
- data/third_party/upb/upb/mem/alloc.h +5 -0
- data/third_party/upb/upb/mem/arena.c +296 -142
- data/third_party/upb/upb/mem/arena.h +47 -11
- data/third_party/upb/upb/mem/arena.hpp +4 -20
- data/third_party/upb/upb/mem/internal/arena.h +4 -6
- data/third_party/upb/upb/message/accessors.h +41 -0
- data/third_party/upb/upb/message/compat.c +11 -14
- data/third_party/upb/upb/message/compat.h +4 -3
- data/third_party/upb/upb/message/copy.c +35 -30
- data/third_party/upb/upb/message/internal/accessors.h +139 -10
- data/third_party/upb/upb/message/internal/extension.c +28 -25
- data/third_party/upb/upb/message/internal/extension.h +21 -5
- data/third_party/upb/upb/message/internal/iterator.c +58 -0
- data/third_party/upb/upb/message/internal/iterator.h +29 -0
- data/third_party/upb/upb/message/internal/map.h +2 -3
- data/third_party/upb/upb/message/internal/map_sorter.h +3 -2
- data/third_party/upb/upb/message/internal/message.c +48 -29
- data/third_party/upb/upb/message/internal/message.h +154 -24
- data/third_party/upb/upb/message/map_sorter.c +20 -8
- data/third_party/upb/upb/message/message.c +90 -38
- data/third_party/upb/upb/message/message.h +58 -2
- data/third_party/upb/upb/message/value.h +9 -0
- data/third_party/upb/upb/mini_descriptor/build_enum.c +1 -1
- data/third_party/upb/upb/mini_descriptor/decode.c +97 -136
- data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
- data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
- data/third_party/upb/upb/mini_table/extension_registry.c +24 -12
- data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
- data/third_party/upb/upb/mini_table/message.c +21 -13
- data/third_party/upb/upb/port/atomic.h +134 -7
- data/third_party/upb/upb/port/def.inc +140 -38
- data/third_party/upb/upb/port/undef.inc +11 -1
- data/third_party/upb/upb/reflection/def.hpp +5 -1
- data/third_party/upb/upb/reflection/def_pool.c +10 -3
- data/third_party/upb/upb/reflection/descriptor_bootstrap.h +1 -1
- data/third_party/upb/upb/reflection/file_def.c +12 -5
- data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
- data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
- data/third_party/upb/upb/reflection/message.c +19 -16
- data/third_party/upb/upb/reflection/message.h +3 -1
- data/third_party/upb/upb/text/encode.c +1 -13
- data/third_party/upb/upb/text/internal/encode.c +25 -6
- data/third_party/upb/upb/text/internal/encode.h +4 -0
- data/third_party/upb/upb/wire/decode.c +60 -45
- data/third_party/upb/upb/wire/decode.h +4 -2
- data/third_party/upb/upb/wire/encode.c +77 -42
- data/third_party/upb/upb/wire/encode.h +2 -0
- data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
- data/third_party/upb/upb/wire/internal/decoder.h +4 -11
- data/third_party/utf8_range/utf8_range.c +15 -275
- data/third_party/utf8_range/utf8_range_neon.inc +117 -0
- data/third_party/utf8_range/utf8_range_sse.inc +272 -0
- data/third_party/zlib/deflate.c +40 -15
- data/third_party/zlib/deflate.h +33 -2
- data/third_party/zlib/gzguts.h +2 -6
- data/third_party/zlib/inflate.c +1 -1
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/inftrees.h +2 -2
- data/third_party/zlib/trees.c +18 -4
- data/third_party/zlib/zconf.h +1 -9
- data/third_party/zlib/zlib.h +12 -12
- data/third_party/zlib/zutil.h +4 -25
- metadata +155 -145
- data/include/grpc/grpc_cronet.h +0 -37
- data/src/core/lib/transport/http2_errors.h +0 -43
- data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
- data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -96,10 +96,11 @@ UPB_API_INLINE upb_MiniTableExtension* upb_MiniTableExtension_BuildEnum(
|
|
96
96
|
}
|
97
97
|
|
98
98
|
// Like upb_MiniTable_Build(), but the user provides a buffer of layout data so
|
99
|
-
// it can be reused from call to call, avoiding repeated
|
99
|
+
// it can be reused from call to call, avoiding repeated
|
100
|
+
// upb_grealloc()/upb_gfree().
|
100
101
|
//
|
101
|
-
// The caller owns `*buf` both before and after the call, and must
|
102
|
-
// when it is no longer in use. The function will
|
102
|
+
// The caller owns `*buf` both before and after the call, and must upb_gfree()
|
103
|
+
// it when it is no longer in use. The function will upb_grealloc() `*buf` as
|
103
104
|
// necessary, updating `*size` accordingly.
|
104
105
|
upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
|
105
106
|
upb_MiniTablePlatform platform,
|
@@ -97,7 +97,7 @@ class MtDataEncoder {
|
|
97
97
|
if (!end) return false;
|
98
98
|
// C++ does not guarantee that string has doubling growth behavior, but
|
99
99
|
// we need it to avoid O(n^2).
|
100
|
-
str_.reserve(
|
100
|
+
str_.reserve(upb_RoundUpToPowerOfTwo(str_.size() + (end - buf_)));
|
101
101
|
str_.append(buf_, end - buf_);
|
102
102
|
return true;
|
103
103
|
}
|
@@ -11,6 +11,7 @@
|
|
11
11
|
#include <stdint.h>
|
12
12
|
#include <string.h>
|
13
13
|
|
14
|
+
#include "upb/hash/common.h"
|
14
15
|
#include "upb/hash/str_table.h"
|
15
16
|
#include "upb/mem/arena.h"
|
16
17
|
#include "upb/mini_table/extension.h"
|
@@ -39,24 +40,32 @@ upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena) {
|
|
39
40
|
return r;
|
40
41
|
}
|
41
42
|
|
42
|
-
UPB_API
|
43
|
-
|
43
|
+
UPB_API upb_ExtensionRegistryStatus upb_ExtensionRegistry_Add(
|
44
|
+
upb_ExtensionRegistry* r, const upb_MiniTableExtension* e) {
|
44
45
|
char buf[EXTREG_KEY_SIZE];
|
45
46
|
extreg_key(buf, e->UPB_PRIVATE(extendee), upb_MiniTableExtension_Number(e));
|
46
|
-
|
47
|
-
|
48
|
-
|
47
|
+
|
48
|
+
if (upb_strtable_lookup2(&r->exts, buf, EXTREG_KEY_SIZE, NULL)) {
|
49
|
+
return kUpb_ExtensionRegistryStatus_DuplicateEntry;
|
50
|
+
}
|
51
|
+
|
52
|
+
if (!upb_strtable_insert(&r->exts, buf, EXTREG_KEY_SIZE,
|
53
|
+
upb_value_constptr(e), r->arena)) {
|
54
|
+
return kUpb_ExtensionRegistryStatus_OutOfMemory;
|
55
|
+
}
|
56
|
+
return kUpb_ExtensionRegistryStatus_Ok;
|
49
57
|
}
|
50
58
|
|
51
|
-
|
52
|
-
|
53
|
-
size_t count) {
|
59
|
+
upb_ExtensionRegistryStatus upb_ExtensionRegistry_AddArray(
|
60
|
+
upb_ExtensionRegistry* r, const upb_MiniTableExtension** e, size_t count) {
|
54
61
|
const upb_MiniTableExtension** start = e;
|
55
62
|
const upb_MiniTableExtension** end = UPB_PTRADD(e, count);
|
63
|
+
upb_ExtensionRegistryStatus status = kUpb_ExtensionRegistryStatus_Ok;
|
56
64
|
for (; e < end; e++) {
|
57
|
-
|
65
|
+
status = upb_ExtensionRegistry_Add(r, *e);
|
66
|
+
if (status != kUpb_ExtensionRegistryStatus_Ok) goto failure;
|
58
67
|
}
|
59
|
-
return
|
68
|
+
return kUpb_ExtensionRegistryStatus_Ok;
|
60
69
|
|
61
70
|
failure:
|
62
71
|
// Back out the entries previously added.
|
@@ -67,7 +76,8 @@ failure:
|
|
67
76
|
upb_MiniTableExtension_Number(ext));
|
68
77
|
upb_strtable_remove2(&r->exts, buf, EXTREG_KEY_SIZE, NULL);
|
69
78
|
}
|
70
|
-
|
79
|
+
UPB_ASSERT(status != kUpb_ExtensionRegistryStatus_Ok);
|
80
|
+
return status;
|
71
81
|
}
|
72
82
|
|
73
83
|
#ifdef UPB_LINKARR_DECLARE
|
@@ -80,7 +90,9 @@ bool upb_ExtensionRegistry_AddAllLinkedExtensions(upb_ExtensionRegistry* r) {
|
|
80
90
|
for (const upb_MiniTableExtension* p = start; p < stop; p++) {
|
81
91
|
// Windows can introduce zero padding, so we have to skip zeroes.
|
82
92
|
if (upb_MiniTableExtension_Number(p) != 0) {
|
83
|
-
if (
|
93
|
+
if (upb_ExtensionRegistry_Add(r, p) != kUpb_ExtensionRegistryStatus_Ok) {
|
94
|
+
return false;
|
95
|
+
}
|
84
96
|
}
|
85
97
|
}
|
86
98
|
return true;
|
@@ -8,6 +8,9 @@
|
|
8
8
|
#ifndef UPB_MINI_TABLE_EXTENSION_REGISTRY_H_
|
9
9
|
#define UPB_MINI_TABLE_EXTENSION_REGISTRY_H_
|
10
10
|
|
11
|
+
#include <stddef.h>
|
12
|
+
#include <stdint.h>
|
13
|
+
|
11
14
|
#include "upb/mem/arena.h"
|
12
15
|
#include "upb/mini_table/extension.h"
|
13
16
|
#include "upb/mini_table/message.h"
|
@@ -55,21 +58,25 @@ extern "C" {
|
|
55
58
|
|
56
59
|
typedef struct upb_ExtensionRegistry upb_ExtensionRegistry;
|
57
60
|
|
61
|
+
typedef enum {
|
62
|
+
kUpb_ExtensionRegistryStatus_Ok = 0,
|
63
|
+
kUpb_ExtensionRegistryStatus_DuplicateEntry = 1,
|
64
|
+
kUpb_ExtensionRegistryStatus_OutOfMemory = 2,
|
65
|
+
} upb_ExtensionRegistryStatus;
|
66
|
+
|
58
67
|
// Creates a upb_ExtensionRegistry in the given arena.
|
59
68
|
// The arena must outlive any use of the extreg.
|
60
69
|
UPB_API upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena);
|
61
70
|
|
62
|
-
UPB_API
|
63
|
-
|
71
|
+
UPB_API upb_ExtensionRegistryStatus upb_ExtensionRegistry_Add(
|
72
|
+
upb_ExtensionRegistry* r, const upb_MiniTableExtension* e);
|
64
73
|
|
65
74
|
// Adds the given extension info for the array |e| of size |count| into the
|
66
75
|
// registry. If there are any errors, the entire array is backed out.
|
67
76
|
// The extensions must outlive the registry.
|
68
77
|
// Possible errors include OOM or an extension number that already exists.
|
69
|
-
|
70
|
-
|
71
|
-
const upb_MiniTableExtension** e,
|
72
|
-
size_t count);
|
78
|
+
upb_ExtensionRegistryStatus upb_ExtensionRegistry_AddArray(
|
79
|
+
upb_ExtensionRegistry* r, const upb_MiniTableExtension** e, size_t count);
|
73
80
|
|
74
81
|
#ifdef UPB_LINKARR_DECLARE
|
75
82
|
|
@@ -7,7 +7,6 @@
|
|
7
7
|
|
8
8
|
#include "upb/mini_table/message.h"
|
9
9
|
|
10
|
-
#include <inttypes.h>
|
11
10
|
#include <stddef.h>
|
12
11
|
#include <stdint.h>
|
13
12
|
|
@@ -27,21 +26,30 @@ const upb_MiniTableField* upb_MiniTable_FindFieldByNumber(
|
|
27
26
|
}
|
28
27
|
|
29
28
|
// Slow case: binary search
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
uint32_t
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
uint32_t lo = m->UPB_PRIVATE(dense_below);
|
30
|
+
int32_t hi = m->UPB_PRIVATE(field_count) - 1;
|
31
|
+
const upb_MiniTableField* base = m->UPB_PRIVATE(fields);
|
32
|
+
while (hi >= (int32_t)lo) {
|
33
|
+
uint32_t mid = (hi + lo) / 2;
|
34
|
+
uint32_t num = base[mid].UPB_ONLYBITS(number);
|
35
|
+
// These comparison operations allow, on ARM machines, to fuse all these
|
36
|
+
// branches into one comparison followed by two CSELs to set the lo/hi
|
37
|
+
// values, followed by a BNE to continue or terminate the loop. Since binary
|
38
|
+
// search branches are generally unpredictable (50/50 in each direction),
|
39
|
+
// this is a good deal. We use signed for the high, as this decrement may
|
40
|
+
// underflow if mid is 0.
|
41
|
+
int32_t hi_mid = mid - 1;
|
42
|
+
uint32_t lo_mid = mid + 1;
|
43
|
+
if (num == number) {
|
44
|
+
return &base[mid];
|
38
45
|
}
|
39
|
-
if (num
|
40
|
-
|
41
|
-
|
46
|
+
if (UPB_UNPREDICTABLE(num < number)) {
|
47
|
+
lo = lo_mid;
|
48
|
+
} else {
|
49
|
+
hi = hi_mid;
|
42
50
|
}
|
43
|
-
return &m->UPB_PRIVATE(fields)[mid];
|
44
51
|
}
|
52
|
+
|
45
53
|
return NULL;
|
46
54
|
}
|
47
55
|
|
@@ -21,10 +21,6 @@
|
|
21
21
|
#define upb_Atomic_Load(addr, order) atomic_load_explicit(addr, order)
|
22
22
|
#define upb_Atomic_Store(addr, val, order) \
|
23
23
|
atomic_store_explicit(addr, val, order)
|
24
|
-
#define upb_Atomic_Add(addr, val, order) \
|
25
|
-
atomic_fetch_add_explicit(addr, val, order)
|
26
|
-
#define upb_Atomic_Sub(addr, val, order) \
|
27
|
-
atomic_fetch_sub_explicit(addr, val, order)
|
28
24
|
#define upb_Atomic_Exchange(addr, val, order) \
|
29
25
|
atomic_exchange_explicit(addr, val, order)
|
30
26
|
#define upb_Atomic_CompareExchangeStrong(addr, expected, desired, \
|
@@ -36,15 +32,146 @@
|
|
36
32
|
atomic_compare_exchange_weak_explicit(addr, expected, desired, \
|
37
33
|
success_order, failure_order)
|
38
34
|
|
39
|
-
#
|
35
|
+
#elif defined(UPB_USE_MSC_ATOMICS)
|
36
|
+
#include <intrin.h>
|
37
|
+
#include <stdbool.h>
|
38
|
+
#include <stdint.h>
|
39
|
+
|
40
|
+
#define upb_Atomic_Init(addr, val) (*(addr) = val)
|
41
|
+
|
42
|
+
#if defined(_WIN64)
|
43
|
+
// MSVC, without C11 atomics, does not have any way in pure C to force
|
44
|
+
// load-acquire store-release behavior, so we hack it with exchanges.
|
45
|
+
#pragma intrinsic(_InterlockedExchange64)
|
46
|
+
#define upb_Atomic_Store(addr, val, order) \
|
47
|
+
(void)_InterlockedExchange64((uint64_t volatile *)addr, (uint64_t)val)
|
48
|
+
|
49
|
+
#pragma intrinsic(_InterlockedCompareExchange64)
|
50
|
+
static uintptr_t upb_Atomic_LoadMsc(uint64_t volatile *addr) {
|
51
|
+
// Compare exchange with an unlikely value reduces the risk of a spurious
|
52
|
+
// (but harmless) store
|
53
|
+
return _InterlockedCompareExchange64(addr, 0xDEADC0DEBAADF00D,
|
54
|
+
0xDEADC0DEBAADF00D);
|
55
|
+
}
|
56
|
+
// If _Generic is available, use it to avoid emitting a "'uintptr_t' differs in
|
57
|
+
// levels of indirection from 'void *'" or -Wint-conversion compiler warning.
|
58
|
+
#if __STDC_VERSION__ >= 201112L
|
59
|
+
#define upb_Atomic_Load(addr, order) \
|
60
|
+
_Generic(addr, \
|
61
|
+
UPB_ATOMIC(uintptr_t) *: upb_Atomic_LoadMsc( \
|
62
|
+
(uint64_t volatile *)(addr)), \
|
63
|
+
default: (void *)upb_Atomic_LoadMsc((uint64_t volatile *)(addr)))
|
64
|
+
|
65
|
+
#define upb_Atomic_Exchange(addr, val, order) \
|
66
|
+
_Generic(addr, \
|
67
|
+
UPB_ATOMIC(uintptr_t) *: _InterlockedExchange64( \
|
68
|
+
(uint64_t volatile *)(addr), (uint64_t)val), \
|
69
|
+
default: (void *)_InterlockedExchange64((uint64_t volatile *)addr, \
|
70
|
+
(uint64_t)val))
|
71
|
+
#else
|
72
|
+
// Compare exchange with an unlikely value reduces the risk of a spurious
|
73
|
+
// (but harmless) store
|
74
|
+
#define upb_Atomic_Load(addr, order) \
|
75
|
+
(void *)upb_Atomic_LoadMsc((uint64_t volatile *)(addr))
|
76
|
+
|
77
|
+
#define upb_Atomic_Exchange(addr, val, order) \
|
78
|
+
(void *)_InterlockedExchange64((uint64_t volatile *)addr, (uint64_t)val)
|
79
|
+
#endif
|
80
|
+
|
81
|
+
#pragma intrinsic(_InterlockedCompareExchange64)
|
82
|
+
static bool upb_Atomic_CompareExchangeMscP(uint64_t volatile *addr,
|
83
|
+
uint64_t *expected,
|
84
|
+
uint64_t desired) {
|
85
|
+
uint64_t expect_val = *expected;
|
86
|
+
uint64_t actual_val =
|
87
|
+
_InterlockedCompareExchange64(addr, desired, expect_val);
|
88
|
+
if (expect_val != actual_val) {
|
89
|
+
*expected = actual_val;
|
90
|
+
return false;
|
91
|
+
}
|
92
|
+
return true;
|
93
|
+
}
|
94
|
+
|
95
|
+
#define upb_Atomic_CompareExchangeStrong(addr, expected, desired, \
|
96
|
+
success_order, failure_order) \
|
97
|
+
upb_Atomic_CompareExchangeMscP((uint64_t volatile *)addr, \
|
98
|
+
(uint64_t *)expected, (uint64_t)desired)
|
99
|
+
|
100
|
+
#define upb_Atomic_CompareExchangeWeak(addr, expected, desired, success_order, \
|
101
|
+
failure_order) \
|
102
|
+
upb_Atomic_CompareExchangeMscP((uint64_t volatile *)addr, \
|
103
|
+
(uint64_t *)expected, (uint64_t)desired)
|
104
|
+
|
105
|
+
#else // 32 bit pointers
|
106
|
+
#pragma intrinsic(_InterlockedExchange)
|
107
|
+
#define upb_Atomic_Store(addr, val, order) \
|
108
|
+
(void)_InterlockedExchange((uint32_t volatile *)addr, (uint32_t)val)
|
109
|
+
|
110
|
+
#pragma intrinsic(_InterlockedCompareExchange)
|
111
|
+
static uintptr_t upb_Atomic_LoadMsc(uint32_t volatile *addr) {
|
112
|
+
// Compare exchange with an unlikely value reduces the risk of a spurious
|
113
|
+
// (but harmless) store
|
114
|
+
return _InterlockedCompareExchange(addr, 0xDEADC0DE, 0xDEADC0DE);
|
115
|
+
}
|
116
|
+
// If _Generic is available, use it to avoid emitting 'uintptr_t' differs in
|
117
|
+
// levels of indirection from 'void *'
|
118
|
+
#if __STDC_VERSION__ >= 201112L
|
119
|
+
#define upb_Atomic_Load(addr, order) \
|
120
|
+
_Generic(addr, \
|
121
|
+
UPB_ATOMIC(uintptr_t) *: upb_Atomic_LoadMsc( \
|
122
|
+
(uint32_t volatile *)(addr)), \
|
123
|
+
default: (void *)upb_Atomic_LoadMsc((uint32_t volatile *)(addr)))
|
124
|
+
|
125
|
+
#define upb_Atomic_Exchange(addr, val, order) \
|
126
|
+
_Generic(addr, \
|
127
|
+
UPB_ATOMIC(uintptr_t) *: _InterlockedExchange( \
|
128
|
+
(uint32_t volatile *)(addr), (uint32_t)val), \
|
129
|
+
default: (void *)_InterlockedExchange64((uint32_t volatile *)addr, \
|
130
|
+
(uint32_t)val))
|
131
|
+
#else
|
132
|
+
#define upb_Atomic_Load(addr, order) \
|
133
|
+
(void *)upb_Atomic_LoadMsc((uint32_t volatile *)(addr))
|
134
|
+
|
135
|
+
#define upb_Atomic_Exchange(addr, val, order) \
|
136
|
+
(void *)_InterlockedExchange((uint32_t volatile *)addr, (uint32_t)val)
|
137
|
+
#endif
|
138
|
+
|
139
|
+
#pragma intrinsic(_InterlockedCompareExchange)
|
140
|
+
static bool upb_Atomic_CompareExchangeMscP(uint32_t volatile *addr,
|
141
|
+
uint32_t *expected,
|
142
|
+
uint32_t desired) {
|
143
|
+
uint32_t expect_val = *expected;
|
144
|
+
uint32_t actual_val = _InterlockedCompareExchange(addr, desired, expect_val);
|
145
|
+
if (expect_val != actual_val) {
|
146
|
+
*expected = actual_val;
|
147
|
+
return false;
|
148
|
+
}
|
149
|
+
return true;
|
150
|
+
}
|
151
|
+
|
152
|
+
#define upb_Atomic_CompareExchangeStrong(addr, expected, desired, \
|
153
|
+
success_order, failure_order) \
|
154
|
+
upb_Atomic_CompareExchangeMscP((uint32_t volatile *)addr, \
|
155
|
+
(uint32_t *)expected, (uint32_t)desired)
|
156
|
+
|
157
|
+
#define upb_Atomic_CompareExchangeWeak(addr, expected, desired, success_order, \
|
158
|
+
failure_order) \
|
159
|
+
upb_Atomic_CompareExchangeMscP((uint32_t volatile *)addr, \
|
160
|
+
(uint32_t *)expected, (uint32_t)desired)
|
161
|
+
#endif
|
162
|
+
|
163
|
+
#else // No atomics
|
164
|
+
|
165
|
+
#if !defined(UPB_SUPPRESS_MISSING_ATOMICS)
|
166
|
+
// NOLINTNEXTLINE
|
167
|
+
#error Your compiler does not support atomic instructions, which UPB uses. If you do not use UPB on multiple threads, you can suppress this error by defining UPB_SUPPRESS_MISSING_ATOMICS.
|
168
|
+
#endif
|
40
169
|
|
41
170
|
#include <string.h>
|
42
171
|
|
43
172
|
#define upb_Atomic_Init(addr, val) (*addr = val)
|
44
173
|
#define upb_Atomic_Load(addr, order) (*addr)
|
45
174
|
#define upb_Atomic_Store(addr, val, order) (*(addr) = val)
|
46
|
-
#define upb_Atomic_Add(addr, val, order) (*(addr) += val)
|
47
|
-
#define upb_Atomic_Sub(addr, val, order) (*(addr) -= val)
|
48
175
|
|
49
176
|
UPB_INLINE void* _upb_NonAtomic_Exchange(void* addr, void* value) {
|
50
177
|
void* old;
|
@@ -28,9 +28,9 @@
|
|
28
28
|
*/
|
29
29
|
|
30
30
|
#if !((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
31
|
-
(defined(__cplusplus) && __cplusplus >=
|
31
|
+
(defined(__cplusplus) && __cplusplus >= 201703L) || \
|
32
32
|
(defined(_MSC_VER) && _MSC_VER >= 1900))
|
33
|
-
#error upb requires C99 or C++
|
33
|
+
#error upb requires C99 or C++17 or MSVC >= 2015.
|
34
34
|
#endif
|
35
35
|
|
36
36
|
// Portable check for GCC minimum version:
|
@@ -62,7 +62,14 @@ Error, UINTPTR_MAX is undefined
|
|
62
62
|
/* If we always read/write as a consistent type to each address, this shouldn't
|
63
63
|
* violate aliasing.
|
64
64
|
*/
|
65
|
-
#define UPB_PTR_AT(msg, ofs, type) ((type*)((char*)(msg) + (ofs)))
|
65
|
+
#define UPB_PTR_AT(msg, ofs, type) ((type *)((char *)(msg) + (ofs)))
|
66
|
+
|
67
|
+
// A flexible array member may have lower alignment requirements than the struct
|
68
|
+
// overall - in that case, it can overlap with the trailing padding of the rest
|
69
|
+
// of the struct, and a naive sizeof(base) + sizeof(flex) * count calculation
|
70
|
+
// will not take into account that overlap, and allocate more than is required.
|
71
|
+
#define UPB_SIZEOF_FLEX(type, member, count) \
|
72
|
+
UPB_MAX(sizeof(type), offsetof(type, member[count]))
|
66
73
|
|
67
74
|
#define UPB_MAPTYPE_STRING 0
|
68
75
|
|
@@ -76,12 +83,19 @@ Error, UINTPTR_MAX is undefined
|
|
76
83
|
// UPB_INLINE: inline if possible, emit standalone code if required.
|
77
84
|
#ifdef __cplusplus
|
78
85
|
#define UPB_INLINE inline
|
79
|
-
#elif defined
|
86
|
+
#elif defined(__GNUC__) || defined(__clang__)
|
80
87
|
#define UPB_INLINE static __inline__
|
81
88
|
#else
|
82
89
|
#define UPB_INLINE static
|
83
90
|
#endif
|
84
91
|
|
92
|
+
// UPB_INLINE_IF_NOT_GCC: because gcc can be very noisy at times.
|
93
|
+
#if defined(__GNUC__) && !defined(__clang__)
|
94
|
+
#define UPB_INLINE_IF_NOT_GCC static
|
95
|
+
#else
|
96
|
+
#define UPB_INLINE_IF_NOT_GCC UPB_INLINE
|
97
|
+
#endif
|
98
|
+
|
85
99
|
#ifdef UPB_BUILD_API
|
86
100
|
#define UPB_API UPB_EXPORT
|
87
101
|
#define UPB_API_INLINE UPB_EXPORT
|
@@ -103,7 +117,13 @@ Error, UINTPTR_MAX is undefined
|
|
103
117
|
#ifdef __clang__
|
104
118
|
#define UPB_ALIGN_OF(type) _Alignof(type)
|
105
119
|
#else
|
106
|
-
#define UPB_ALIGN_OF(type)
|
120
|
+
#define UPB_ALIGN_OF(type) \
|
121
|
+
offsetof( \
|
122
|
+
struct { \
|
123
|
+
char c; \
|
124
|
+
type member; \
|
125
|
+
}, \
|
126
|
+
member)
|
107
127
|
#endif
|
108
128
|
|
109
129
|
#ifdef _MSC_VER
|
@@ -114,7 +134,7 @@ Error, UINTPTR_MAX is undefined
|
|
114
134
|
#endif
|
115
135
|
|
116
136
|
// Hints to the compiler about likely/unlikely branches.
|
117
|
-
#if defined
|
137
|
+
#if defined(__GNUC__) || defined(__clang__)
|
118
138
|
#define UPB_LIKELY(x) __builtin_expect((bool)(x), 1)
|
119
139
|
#define UPB_UNLIKELY(x) __builtin_expect((bool)(x), 0)
|
120
140
|
#else
|
@@ -122,18 +142,30 @@ Error, UINTPTR_MAX is undefined
|
|
122
142
|
#define UPB_UNLIKELY(x) (x)
|
123
143
|
#endif
|
124
144
|
|
145
|
+
#ifdef __has_builtin
|
146
|
+
#if __has_builtin(__builtin_expect_with_probability)
|
147
|
+
#define UPB_UNPREDICTABLE(x) \
|
148
|
+
__builtin_expect_with_probability((bool)(x), 1, 0.5)
|
149
|
+
#else
|
150
|
+
#define UPB_UNPREDICTABLE(x) (x)
|
151
|
+
#endif
|
152
|
+
#else
|
153
|
+
#define UPB_UNPREDICTABLE(x) (x)
|
154
|
+
#endif
|
155
|
+
|
125
156
|
// Macros for function attributes on compilers that support them.
|
126
|
-
#
|
157
|
+
#if defined(__GNUC__) || defined(__clang__)
|
127
158
|
#define UPB_FORCEINLINE __inline__ __attribute__((always_inline)) static
|
128
159
|
#define UPB_NOINLINE __attribute__((noinline))
|
129
160
|
#define UPB_NORETURN __attribute__((__noreturn__))
|
130
|
-
#define UPB_PRINTF(str, first_vararg)
|
161
|
+
#define UPB_PRINTF(str, first_vararg) \
|
162
|
+
__attribute__((format(printf, str, first_vararg)))
|
131
163
|
#elif defined(_MSC_VER)
|
132
164
|
#define UPB_NOINLINE
|
133
165
|
#define UPB_FORCEINLINE static
|
134
166
|
#define UPB_NORETURN __declspec(noreturn)
|
135
167
|
#define UPB_PRINTF(str, first_vararg)
|
136
|
-
#else
|
168
|
+
#else /* !defined(__GNUC__) */
|
137
169
|
#define UPB_FORCEINLINE static
|
138
170
|
#define UPB_NOINLINE
|
139
171
|
#define UPB_NORETURN
|
@@ -148,11 +180,15 @@ Error, UINTPTR_MAX is undefined
|
|
148
180
|
// UPB_ASSUME(): in release mode, we tell the compiler to assume this is true.
|
149
181
|
#ifdef NDEBUG
|
150
182
|
#ifdef __GNUC__
|
151
|
-
#define UPB_ASSUME(expr)
|
183
|
+
#define UPB_ASSUME(expr) \
|
184
|
+
if (!(expr)) __builtin_unreachable()
|
152
185
|
#elif defined _MSC_VER
|
153
|
-
#define UPB_ASSUME(expr)
|
186
|
+
#define UPB_ASSUME(expr) \
|
187
|
+
if (!(expr)) __assume(0)
|
154
188
|
#else
|
155
|
-
#define UPB_ASSUME(expr)
|
189
|
+
#define UPB_ASSUME(expr) \
|
190
|
+
do { \
|
191
|
+
} while (false && (expr))
|
156
192
|
#endif
|
157
193
|
#else
|
158
194
|
#define UPB_ASSUME(expr) assert(expr)
|
@@ -161,13 +197,19 @@ Error, UINTPTR_MAX is undefined
|
|
161
197
|
/* UPB_ASSERT(): in release mode, we use the expression without letting it be
|
162
198
|
* evaluated. This prevents "unused variable" warnings. */
|
163
199
|
#ifdef NDEBUG
|
164
|
-
#define UPB_ASSERT(expr)
|
200
|
+
#define UPB_ASSERT(expr) \
|
201
|
+
do { \
|
202
|
+
} while (false && (expr))
|
165
203
|
#else
|
166
204
|
#define UPB_ASSERT(expr) assert(expr)
|
167
205
|
#endif
|
168
206
|
|
169
207
|
#if defined(__GNUC__) || defined(__clang__)
|
170
|
-
#define UPB_UNREACHABLE()
|
208
|
+
#define UPB_UNREACHABLE() \
|
209
|
+
do { \
|
210
|
+
assert(0); \
|
211
|
+
__builtin_unreachable(); \
|
212
|
+
} while (0)
|
171
213
|
#elif defined(_MSC_VER)
|
172
214
|
#define UPB_UNREACHABLE() \
|
173
215
|
do { \
|
@@ -175,13 +217,26 @@ Error, UINTPTR_MAX is undefined
|
|
175
217
|
__assume(0); \
|
176
218
|
} while (0)
|
177
219
|
#else
|
178
|
-
#define UPB_UNREACHABLE()
|
220
|
+
#define UPB_UNREACHABLE() \
|
221
|
+
do { \
|
222
|
+
assert(0); \
|
223
|
+
} while (0)
|
179
224
|
#endif
|
180
225
|
|
181
|
-
|
182
|
-
#
|
183
|
-
#
|
184
|
-
#define
|
226
|
+
#ifdef __ANDROID__
|
227
|
+
#define UPB_DEFAULT_MAX_BLOCK_SIZE 8192
|
228
|
+
#else
|
229
|
+
#define UPB_DEFAULT_MAX_BLOCK_SIZE 32768
|
230
|
+
#endif
|
231
|
+
|
232
|
+
/* UPB_SETJMP() / UPB_LONGJMP() */
|
233
|
+
// Android uses a custom libc that does not implement all of posix, but it has
|
234
|
+
// had sigsetjmp/siglongjmp forever on arm and since API 12 on x86. Apple has
|
235
|
+
// sigsetjmp, but does not define the posix feature test macro.
|
236
|
+
#if defined(__APPLE__) || defined(_POSIX_C_SOURCE) || defined(__ANDROID__)
|
237
|
+
// avoid setting/restoring signal mask, which involves costly syscalls
|
238
|
+
#define UPB_SETJMP(buf) sigsetjmp(buf, 0)
|
239
|
+
#define UPB_LONGJMP(buf, val) siglongjmp(buf, val)
|
185
240
|
#elif defined(WASM_WAMR)
|
186
241
|
#define UPB_SETJMP(buf) 0
|
187
242
|
#define UPB_LONGJMP(buf, val) abort()
|
@@ -190,9 +245,23 @@ Error, UINTPTR_MAX is undefined
|
|
190
245
|
#define UPB_LONGJMP(buf, val) longjmp(buf, val)
|
191
246
|
#endif
|
192
247
|
|
193
|
-
#
|
248
|
+
#if ((__STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_ATOMICS__))
|
194
249
|
#define UPB_USE_C11_ATOMICS
|
250
|
+
#elif defined(__has_extension)
|
251
|
+
#if __has_extension(c_atomic)
|
252
|
+
#define UPB_USE_C11_ATOMICS
|
253
|
+
#endif
|
254
|
+
#elif defined(__GNUC__)
|
255
|
+
// GCC supported atomics as an extension before it supported __has_extension
|
256
|
+
#define UPB_USE_C11_ATOMICS
|
257
|
+
#elif defined(_MSC_VER)
|
258
|
+
#define UPB_USE_MSC_ATOMICS
|
259
|
+
#endif
|
260
|
+
|
261
|
+
#if defined(UPB_USE_C11_ATOMICS)
|
195
262
|
#define UPB_ATOMIC(T) _Atomic(T)
|
263
|
+
#elif defined(UPB_USE_MSC_ATOMICS)
|
264
|
+
#define UPB_ATOMIC(T) volatile T
|
196
265
|
#else
|
197
266
|
#define UPB_ATOMIC(T) T
|
198
267
|
#endif
|
@@ -280,7 +349,7 @@ Error, UINTPTR_MAX is undefined
|
|
280
349
|
*/
|
281
350
|
|
282
351
|
/* Due to preprocessor limitations, the conditional logic for setting
|
283
|
-
*
|
352
|
+
* UPB_CLANG_ASAN below cannot be consolidated into a portable one-liner.
|
284
353
|
* See https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005fattribute.html.
|
285
354
|
*/
|
286
355
|
#if defined(__has_feature)
|
@@ -289,8 +358,14 @@ Error, UINTPTR_MAX is undefined
|
|
289
358
|
#else
|
290
359
|
#define UPB_CLANG_ASAN 0
|
291
360
|
#endif
|
361
|
+
#if __has_feature(thread_sanitizer)
|
362
|
+
#define UPB_CLANG_TSAN 1
|
363
|
+
#else
|
364
|
+
#define UPB_CLANG_TSAN 0
|
365
|
+
#endif
|
292
366
|
#else
|
293
367
|
#define UPB_CLANG_ASAN 0
|
368
|
+
#define UPB_CLANG_TSAN 0
|
294
369
|
#endif
|
295
370
|
|
296
371
|
#if defined(__SANITIZE_ADDRESS__) || UPB_CLANG_ASAN
|
@@ -299,10 +374,10 @@ Error, UINTPTR_MAX is undefined
|
|
299
374
|
#ifdef __cplusplus
|
300
375
|
extern "C" {
|
301
376
|
#endif
|
302
|
-
void __asan_poison_memory_region(void const volatile *addr, size_t size);
|
303
|
-
void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
377
|
+
void __asan_poison_memory_region(void const volatile *addr, size_t size);
|
378
|
+
void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
304
379
|
#ifdef __cplusplus
|
305
|
-
}
|
380
|
+
} /* extern "C" */
|
306
381
|
#endif
|
307
382
|
#define UPB_POISON_MEMORY_REGION(addr, size) \
|
308
383
|
__asan_poison_memory_region((addr), (size))
|
@@ -311,10 +386,38 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
|
311
386
|
#else
|
312
387
|
#define UPB_ASAN 0
|
313
388
|
#define UPB_ASAN_GUARD_SIZE 0
|
314
|
-
#define UPB_POISON_MEMORY_REGION(addr, size)
|
315
|
-
|
316
|
-
#
|
317
|
-
|
389
|
+
#define UPB_POISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
|
390
|
+
#define UPB_UNPOISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
|
391
|
+
#endif
|
392
|
+
|
393
|
+
#if defined(__SANITIZE_THREAD__) || UPB_CLANG_TSAN
|
394
|
+
#define UPB_TSAN_PUBLISHED_MEMBER uintptr_t upb_tsan_safely_published;
|
395
|
+
#define UPB_TSAN_INIT_PUBLISHED(ptr) (ptr)->upb_tsan_safely_published = 0x5AFE
|
396
|
+
#define UPB_TSAN_CHECK_PUBLISHED(ptr) \
|
397
|
+
UPB_ASSERT((ptr)->upb_tsan_safely_published == 0x5AFE)
|
398
|
+
#define UPB_TSAN_PUBLISH 1
|
399
|
+
#define UPB_TSAN_CHECK_READ(member) \
|
400
|
+
__asm__ volatile("" ::"r"(*(char *)&(member)))
|
401
|
+
#define UPB_TSAN_CHECK_WRITE(member) \
|
402
|
+
do { \
|
403
|
+
char *write_upb_tsan_detect_race_ptr = (char *)&(member); \
|
404
|
+
char write_upb_tsan_detect_race = *write_upb_tsan_detect_race_ptr; \
|
405
|
+
__asm__ volatile("" : "+r"(write_upb_tsan_detect_race)); \
|
406
|
+
*write_upb_tsan_detect_race_ptr = write_upb_tsan_detect_race; \
|
407
|
+
} while (false)
|
408
|
+
#else
|
409
|
+
#define UPB_TSAN_PUBLISHED_MEMBER
|
410
|
+
#define UPB_TSAN_INIT_PUBLISHED(ptr)
|
411
|
+
#define UPB_TSAN_CHECK_PUBLISHED(ptr) \
|
412
|
+
do { \
|
413
|
+
} while (false && (ptr))
|
414
|
+
#define UPB_TSAN_PUBLISH 0
|
415
|
+
#define UPB_TSAN_CHECK_READ(member) \
|
416
|
+
do { \
|
417
|
+
} while (false && (member))
|
418
|
+
#define UPB_TSAN_CHECK_WRITE(member) \
|
419
|
+
do { \
|
420
|
+
} while (false && (member))
|
318
421
|
#endif
|
319
422
|
|
320
423
|
/* Disable proto2 arena behavior (TEMPORARY) **********************************/
|
@@ -380,8 +483,9 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
|
380
483
|
|
381
484
|
#if defined(__ELF__) || defined(__wasm__)
|
382
485
|
|
383
|
-
#define UPB_LINKARR_APPEND(name)
|
384
|
-
__attribute__((retain, used, section("linkarr_" #name)
|
486
|
+
#define UPB_LINKARR_APPEND(name) \
|
487
|
+
__attribute__((retain, used, section("linkarr_" #name), \
|
488
|
+
no_sanitize("address")))
|
385
489
|
#define UPB_LINKARR_DECLARE(name, type) \
|
386
490
|
extern type const __start_linkarr_##name; \
|
387
491
|
extern type const __stop_linkarr_##name; \
|
@@ -392,8 +496,9 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
|
392
496
|
#elif defined(__MACH__)
|
393
497
|
|
394
498
|
/* As described in: https://stackoverflow.com/a/22366882 */
|
395
|
-
#define UPB_LINKARR_APPEND(name)
|
396
|
-
__attribute__((retain, used, section("__DATA,__la_" #name)
|
499
|
+
#define UPB_LINKARR_APPEND(name) \
|
500
|
+
__attribute__((retain, used, section("__DATA,__la_" #name), \
|
501
|
+
no_sanitize("address")))
|
397
502
|
#define UPB_LINKARR_DECLARE(name, type) \
|
398
503
|
extern type const __start_linkarr_##name __asm( \
|
399
504
|
"section$start$__DATA$__la_" #name); \
|
@@ -413,8 +518,9 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
|
413
518
|
|
414
519
|
// Usage of __attribute__ here probably means this is Clang-specific, and would
|
415
520
|
// not work on MSVC.
|
416
|
-
#define UPB_LINKARR_APPEND(name)
|
417
|
-
__declspec(allocate("la_" #name "$j"))
|
521
|
+
#define UPB_LINKARR_APPEND(name) \
|
522
|
+
__declspec(allocate("la_" #name "$j")) \
|
523
|
+
__attribute__((retain, used, no_sanitize("address")))
|
418
524
|
#define UPB_LINKARR_DECLARE(name, type) \
|
419
525
|
__declspec(allocate("la_" #name "$a")) type __start_linkarr_##name; \
|
420
526
|
__declspec(allocate("la_" #name "$z")) type __stop_linkarr_##name; \
|
@@ -435,8 +541,4 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
|
|
435
541
|
// user code can be updated before upgrading versions of protobuf.
|
436
542
|
#ifdef UPB_FUTURE_BREAKING_CHANGES
|
437
543
|
|
438
|
-
// Properly enforce closed enums in python.
|
439
|
-
// Owner: mkruskal@
|
440
|
-
#define UPB_FUTURE_PYTHON_CLOSED_ENUM_ENFORCEMENT 1
|
441
|
-
|
442
544
|
#endif
|